39c8b14f |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
2 | <html> |
3 | <head> |
4 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
5 | <title>Node.js HTML Parser</title> |
6 | <style type="text/css"> |
7 | .good { |
8 | color: #363; |
9 | } |
10 | .bad { |
11 | color: #633; |
12 | font-style: italic; |
13 | } |
14 | </style> |
15 | <script language="JavaScript"> |
16 | if ((typeof JSON) != "object") { |
17 | var head = document.getElementsByTagName("head")[0]; |
18 | var script = document.createElement('script'); |
19 | script.type = "text/javascript"; |
20 | script.src = "json2.js"; |
21 | head.insertBefore(script, head.firstChild) |
22 | } |
23 | </script> |
24 | <script language="JavaScript" src="lib/htmlparser.js"></script> |
25 | <script language="JavaScript" src="tests/01-basic.js"></script> |
26 | <script language="JavaScript" src="tests/02-single_tag_1.js"></script> |
27 | <script language="JavaScript" src="tests/03-single_tag_2.js"></script> |
28 | <script language="JavaScript" src="tests/04-unescaped_in_script.js"></script> |
29 | <script language="JavaScript" src="tests/05-tags_in_comment.js"></script> |
30 | <script language="JavaScript" src="tests/06-comment_in_script.js"></script> |
31 | <script language="JavaScript" src="tests/07-unescaped_in_style.js"></script> |
32 | <script language="JavaScript" src="tests/08-extra_spaces_in_tag.js"></script> |
33 | <script language="JavaScript" src="tests/09-unquoted_attrib.js"></script> |
34 | <script language="JavaScript" src="tests/10-singular_attribute.js"></script> |
35 | <script language="JavaScript" src="tests/11-text_outside_tags.js"></script> |
36 | <script language="JavaScript" src="tests/12-text_only.js"></script> |
37 | <script language="JavaScript" src="tests/13-comment_in_text.js"></script> |
38 | <script language="JavaScript" src="tests/14-comment_in_text_in_script.js"></script> |
39 | <script language="JavaScript" src="tests/15-non-verbose.js"></script> |
40 | <script language="JavaScript" src="tests/16-ignore_whitespace.js"></script> |
41 | <script language="JavaScript" src="tests/17-xml_namespace.js"></script> |
42 | <script language="JavaScript" src="tests/18-enforce_empty_tags.js"></script> |
43 | <script language="JavaScript" src="tests/19-ignore_empty_tags.js"></script> |
44 | <script language="JavaScript" src="tests/20-rss.js"></script> |
45 | <script language="JavaScript" src="tests/21-atom.js"></script> |
46 | <script language="JavaScript" src="tests/22-position_data.js"></script> |
47 | <!-- //TODO: dynamic loading of test files --> |
48 | </head> |
49 | <body style="font-size: small; font-family:Arial, Helvetica, sans-serif;"> |
50 | |
51 | <script language="JavaScript"> |
52 | var chunkSize = 5; |
53 | var testCount = 0; |
54 | var failedCount = 0; |
55 | while (Tautologistics.NodeHtmlParser.Tests.length) { |
56 | testCount++; |
57 | var test = Tautologistics.NodeHtmlParser.Tests.shift(); |
58 | try { |
59 | var handlerCallback = function handlerCallback (error) { |
60 | if (error) |
61 | document.write("<hr>Handler error: " + error + "<hr>"); |
62 | } |
63 | var handler = (test.type == "rss") ? |
64 | new Tautologistics.NodeHtmlParser.RssHandler(handlerCallback, test.options.handler) |
65 | : |
66 | new Tautologistics.NodeHtmlParser.DefaultHandler(handlerCallback, test.options.handler) |
67 | ; |
68 | var parser = new Tautologistics.NodeHtmlParser.Parser(handler, test.options.parser); |
69 | document.write("<b>" + test.name + "</b>: "); |
70 | parser.parseComplete(test.html); |
71 | var resultComplete = handler.dom; |
72 | var chunkPos = 0; |
73 | parser.reset(); |
74 | while (chunkPos < test.html.length) { |
75 | parser.parseChunk(test.html.substring(chunkPos, chunkPos + chunkSize)); |
76 | chunkPos += chunkSize; |
77 | } |
78 | parser.done(); |
79 | var resultChunk = handler.dom; |
80 | var testResult = |
81 | JSON.stringify(resultComplete).toString() === JSON.stringify(test.expected).toString() |
82 | && |
83 | JSON.stringify(resultChunk).toString() === JSON.stringify(test.expected).toString() |
84 | ; |
85 | document.write(testResult ? "<font class='good'>passed</font>" : "<font class='bad'>FAILED</font>"); |
86 | if (!testResult) { |
87 | failedCount++; |
88 | document.write("<pre>"); |
89 | document.write("<b>Complete</b>\n"); |
90 | document.write(JSON.stringify(resultComplete, null, 2)); |
91 | document.write("<b>Chunked</b>\n"); |
92 | document.write(JSON.stringify(resultChunk, null, 2)); |
93 | document.write("<h2>Expected</h2>\n"); |
94 | document.write(JSON.stringify(test.expected, null, 2)); |
95 | document.write("</pre>"); |
96 | } |
97 | } catch (ex) { |
98 | document.write("<h1>Exception occured during test: " + ex + "</h1>") |
99 | } |
100 | document.write("<br>"); |
101 | } |
102 | document.write("<hr>"); |
103 | document.write("Total tests: " + testCount + "<br>"); |
104 | document.write("Failed tests: " + failedCount + "<br>"); |
105 | </script> |
106 | |
107 | </body> |
108 | </html> |