diff options
Diffstat (limited to 'devtools/shared/webconsole/test/test_throw.html')
-rw-r--r-- | devtools/shared/webconsole/test/test_throw.html | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/test_throw.html b/devtools/shared/webconsole/test/test_throw.html new file mode 100644 index 000000000..7d7ea7b31 --- /dev/null +++ b/devtools/shared/webconsole/test/test_throw.html @@ -0,0 +1,93 @@ +<!DOCTYPE HTML> +<html lang="en"> +<head> + <meta charset="utf8"> + <title>Web Console throw tests</title> + <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript;version=1.8" src="common.js"></script> + <!-- Any copyright is dedicated to the Public Domain. + - http://creativecommons.org/publicdomain/zero/1.0/ --> +</head> +<body> +<p>Web Console throw tests</p> + +<script class="testbody" type="text/javascript;version=1.8"> +SimpleTest.waitForExplicitFinish(); + +function startTest() +{ + removeEventListener("load", startTest); + attachConsoleToTab([], onAttach); +} + +function onAttach(aState, aResponse) +{ + let tests = []; + + let falsyValues = ["-0", "null", "undefined", "Infinity", "-Infinity", "NaN"]; + falsyValues.forEach(function(value) { + tests.push(function() { + aState.client.evaluateJS("throw " + value + ";", function(aResponse) { + let type = aResponse.exception.type; + is(type, value, "exception.type for throw " + value); + nextTest(); + }); + }); + }); + + let identityTestValues = [false, 0]; + identityTestValues.forEach(function(value) { + tests.push(function() { + aState.client.evaluateJS("throw " + value + ";", function(aResponse) { + let exception = aResponse.exception; + is(exception, value, "response.exception for throw " + value); + nextTest(); + }); + }); + }); + + let longString = Array(DebuggerServer.LONG_STRING_LENGTH + 1).join("a"), + shortedString = longString.substring(0, + DebuggerServer.LONG_STRING_INITIAL_LENGTH + ); + tests.push(function() { + aState.client.evaluateJS("throw '" + longString + "';", function(aResponse) { + is(aResponse.exception.initial, shortedString, + "exception.initial for throw longString" + ); + is(aResponse.exceptionMessage.initial, shortedString, + "exceptionMessage.initial for throw longString" + ); + nextTest(); + }); + }); + + let symbolTestValues = [ + ["Symbol.iterator", "Symbol(Symbol.iterator)"], + ["Symbol('foo')", "Symbol(foo)"], + ["Symbol()", "Symbol()"], + ]; + symbolTestValues.forEach(function([expr, message]) { + tests.push(function() { + aState.client.evaluateJS("throw " + expr + ";", function(aResponse) { + is(aResponse.exceptionMessage, message, + "response.exception for throw " + expr); + nextTest(); + }); + }); + }); + + runTests(tests, endTest.bind(null, aState)); +} + +function endTest(aState) +{ + closeDebugger(aState, function() { + SimpleTest.finish(); + }); +} + +addEventListener("load", startTest); +</script> +</body> +</html> |