1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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>
|