summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/test_throw.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/test_throw.html')
-rw-r--r--devtools/shared/webconsole/test/test_throw.html93
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>