|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /** |
|
5 * Check that JS inside HTML can be separated and parsed correctly. |
|
6 */ |
|
7 |
|
8 function test() { |
|
9 let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {}); |
|
10 |
|
11 let source = [ |
|
12 "<!doctype html>", |
|
13 "<head>", |
|
14 "<script>", |
|
15 "let a = 42;", |
|
16 "</script>", |
|
17 "<script type='text/javascript'>", |
|
18 "let b = 42;", |
|
19 "</script>", |
|
20 "<script type='text/javascript;version=1.8'>", |
|
21 "let c = 42;", |
|
22 "</script>", |
|
23 "</head>" |
|
24 ].join("\n"); |
|
25 let parser = new Parser(); |
|
26 let parsed = parser.get(source); |
|
27 |
|
28 ok(parsed, |
|
29 "HTML code should be parsed correctly."); |
|
30 is(parser.errors.length, 0, |
|
31 "There should be no errors logged when parsing."); |
|
32 |
|
33 is(parsed.scriptCount, 3, |
|
34 "There should be 3 scripts parsed in the parent HTML source."); |
|
35 |
|
36 is(parsed.getScriptInfo(0).toSource(), "({start:-1, length:-1, index:-1})", |
|
37 "There is no script at the beginning of the parent source."); |
|
38 is(parsed.getScriptInfo(source.length - 1).toSource(), "({start:-1, length:-1, index:-1})", |
|
39 "There is no script at the end of the parent source."); |
|
40 |
|
41 is(parsed.getScriptInfo(source.indexOf("let a")).toSource(), "({start:31, length:13, index:0})", |
|
42 "The first script was located correctly."); |
|
43 is(parsed.getScriptInfo(source.indexOf("let b")).toSource(), "({start:85, length:13, index:1})", |
|
44 "The second script was located correctly."); |
|
45 is(parsed.getScriptInfo(source.indexOf("let c")).toSource(), "({start:151, length:13, index:2})", |
|
46 "The third script was located correctly."); |
|
47 |
|
48 is(parsed.getScriptInfo(source.indexOf("let a") - 1).toSource(), "({start:31, length:13, index:0})", |
|
49 "The left edge of the first script was interpreted correctly."); |
|
50 is(parsed.getScriptInfo(source.indexOf("let b") - 1).toSource(), "({start:85, length:13, index:1})", |
|
51 "The left edge of the second script was interpreted correctly."); |
|
52 is(parsed.getScriptInfo(source.indexOf("let c") - 1).toSource(), "({start:151, length:13, index:2})", |
|
53 "The left edge of the third script was interpreted correctly."); |
|
54 |
|
55 is(parsed.getScriptInfo(source.indexOf("let a") - 2).toSource(), "({start:-1, length:-1, index:-1})", |
|
56 "The left outside of the first script was interpreted correctly."); |
|
57 is(parsed.getScriptInfo(source.indexOf("let b") - 2).toSource(), "({start:-1, length:-1, index:-1})", |
|
58 "The left outside of the second script was interpreted correctly."); |
|
59 is(parsed.getScriptInfo(source.indexOf("let c") - 2).toSource(), "({start:-1, length:-1, index:-1})", |
|
60 "The left outside of the third script was interpreted correctly."); |
|
61 |
|
62 is(parsed.getScriptInfo(source.indexOf("let a") + 12).toSource(), "({start:31, length:13, index:0})", |
|
63 "The right edge of the first script was interpreted correctly."); |
|
64 is(parsed.getScriptInfo(source.indexOf("let b") + 12).toSource(), "({start:85, length:13, index:1})", |
|
65 "The right edge of the second script was interpreted correctly."); |
|
66 is(parsed.getScriptInfo(source.indexOf("let c") + 12).toSource(), "({start:151, length:13, index:2})", |
|
67 "The right edge of the third script was interpreted correctly."); |
|
68 |
|
69 is(parsed.getScriptInfo(source.indexOf("let a") + 13).toSource(), "({start:-1, length:-1, index:-1})", |
|
70 "The right outside of the first script was interpreted correctly."); |
|
71 is(parsed.getScriptInfo(source.indexOf("let b") + 13).toSource(), "({start:-1, length:-1, index:-1})", |
|
72 "The right outside of the second script was interpreted correctly."); |
|
73 is(parsed.getScriptInfo(source.indexOf("let c") + 13).toSource(), "({start:-1, length:-1, index:-1})", |
|
74 "The right outside of the third script was interpreted correctly."); |
|
75 |
|
76 finish(); |
|
77 } |