<!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>