/[suikacvs]/markup/html/whatpm/t/tokenizer/test4.test
Suika

Contents of /markup/html/whatpm/t/tokenizer/test4.test

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (show annotations) (download)
Sat Oct 4 17:16:02 2008 UTC (16 years, 1 month ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +11 -3 lines
++ whatpm/t/ChangeLog	4 Oct 2008 17:15:55 -0000
2008-10-05  Wakaba  <wakaba@suika.fam.cx>

	* HTML-tree.t: New test files added.

	* Makefile: New test files added.

++ whatpm/Whatpm/ChangeLog	4 Oct 2008 17:15:20 -0000
2008-10-05  Wakaba  <wakaba@suika.fam.cx>

	* HTML.pm.src: An AAA bug fixed.

1 {"tests": [
2
3 {"description":"< in attribute name",
4 "input":"<z/0 <",
5 "output":["ParseError", "ParseError", ["StartTag", "z", {"0": "", "<": ""}]]},
6
7 {"description":"< in attribute value",
8 "input":"<z x=<",
9 "output":["ParseError", ["StartTag", "z", {"x": "<"}]]},
10
11 {"description":"= in unquoted attribute value",
12 "input":"<z z=z=z>",
13 "output":["ParseError", ["StartTag", "z", {"z": "z=z"}]]},
14
15 {"description":"= attribute",
16 "input":"<z =>",
17 "output":["ParseError", ["StartTag", "z", {"=": ""}]]},
18
19 {"description":"== attribute",
20 "input":"<z ==>",
21 "output":["ParseError", ["StartTag", "z", {"=": ""}]]},
22
23 {"description":"=== attribute",
24 "input":"<z ===>",
25 "output":["ParseError", "ParseError", ["StartTag", "z", {"=": "="}]]},
26
27 {"description":"==== attribute",
28 "input":"<z ====>",
29 "output":["ParseError", "ParseError", "ParseError", ["StartTag", "z", {"=": "=="}]]},
30
31 {"description":"Allowed \" after ampersand in attribute value",
32 "input":"<z z=\"&\">",
33 "output":[["StartTag", "z", {"z": "&"}]]},
34
35 {"description":"Non-allowed ' after ampersand in attribute value",
36 "input":"<z z=\"&'\">",
37 "output":["ParseError", ["StartTag", "z", {"z": "&'"}]]},
38
39 {"description":"Allowed ' after ampersand in attribute value",
40 "input":"<z z='&'>",
41 "output":[["StartTag", "z", {"z": "&"}]]},
42
43 {"description":"Non-allowed \" after ampersand in attribute value",
44 "input":"<z z='&\"'>",
45 "output":["ParseError", ["StartTag", "z", {"z": "&\""}]]},
46
47 {"description":"Text after bogus character reference",
48 "input":"<z z='&xlink_xmlns;'>bar<z>",
49 "output":["ParseError",["StartTag","z",{"z":"&xlink_xmlns;"}],["Character","bar"],["StartTag","z",{}]]},
50
51 {"description":"Text after hex character reference",
52 "input":"<z z='&#x0020; foo'>bar<z>",
53 "output":[["StartTag","z",{"z":" foo"}],["Character","bar"],["StartTag","z",{}]]},
54
55 {"description":"Attribute name starting with \"",
56 "input":"<foo \"='bar'>",
57 "output":["ParseError", ["StartTag", "foo", {"\"": "bar"}]]},
58
59 {"description":"Attribute name starting with '",
60 "input":"<foo '='bar'>",
61 "output":["ParseError", ["StartTag", "foo", {"'": "bar"}]]},
62
63 {"description":"Attribute name containing \"",
64 "input":"<foo a\"b='bar'>",
65 "output":["ParseError", ["StartTag", "foo", {"a\"b": "bar"}]]},
66
67 {"description":"Attribute name containing '",
68 "input":"<foo a'b='bar'>",
69 "output":["ParseError", ["StartTag", "foo", {"a'b": "bar"}]]},
70
71 {"description":"Unquoted attribute value containing '",
72 "input":"<foo a=b'c>",
73 "output":["ParseError", ["StartTag", "foo", {"a": "b'c"}]]},
74
75 {"description":"Unquoted attribute value containing \"",
76 "input":"<foo a=b\"c>",
77 "output":["ParseError", ["StartTag", "foo", {"a": "b\"c"}]]},
78
79 {"description":"Double-quoted attribute value not followed by whitespace",
80 "input":"<foo a=\"b\"c>",
81 "output":["ParseError", ["StartTag", "foo", {"a": "b", "c": ""}]]},
82
83 {"description":"Single-quoted attribute value not followed by whitespace",
84 "input":"<foo a='b'c>",
85 "output":["ParseError", ["StartTag", "foo", {"a": "b", "c": ""}]]},
86
87 {"description":"Quoted attribute followed by permitted /",
88 "input":"<br a='b'/>",
89 "output":[["StartTag","br",{"a":"b"},true]]},
90
91 {"description":"Quoted attribute followed by non-permitted /",
92 "input":"<bar a='b'/>",
93 "output":[["StartTag","bar",{"a":"b"},true]]},
94
95 {"description":"CR EOF after doctype name",
96 "input":"<!doctype html \r",
97 "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
98
99 {"description":"CR EOF in tag name",
100 "input":"<z\r",
101 "output":["ParseError", ["StartTag", "z", {}]]},
102
103 {"description":"Zero hex numeric entity",
104 "input":"&#x0",
105 "output":["ParseError", "ParseError", ["Character", "\uFFFD"]]},
106
107 {"description":"Zero decimal numeric entity",
108 "input":"&#0",
109 "output":["ParseError", "ParseError", ["Character", "\uFFFD"]]},
110
111 {"description":"Zero-prefixed hex numeric entity",
112 "input":"&#x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041;",
113 "output":[["Character", "A"]]},
114
115 {"description":"Zero-prefixed decimal numeric entity",
116 "input":"&#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065;",
117 "output":[["Character", "A"]]},
118
119 {"description":"Empty hex numeric entities",
120 "input":"&#x &#X ",
121 "output":["ParseError", ["Character", "&#x "], "ParseError", ["Character", "&#X "]]},
122
123 {"description":"Empty decimal numeric entities",
124 "input":"&# &#; ",
125 "output":["ParseError", ["Character", "&# "], "ParseError", ["Character", "&#; "]]},
126
127 {"description":"Non-BMP numeric entity",
128 "input":"&#x10000;",
129 "output":[["Character", "\uD800\uDC00"]]},
130
131 {"description":"Maximum non-BMP numeric entity",
132 "input":"&#X10FFFF;",
133 "output":["ParseError", ["Character", "\uFFFD"]]},
134
135 {"description":"Above maximum numeric entity",
136 "input":"&#x110000;",
137 "output":["ParseError", ["Character", "\uFFFD"]]},
138
139 {"description":"32-bit hex numeric entity",
140 "input":"&#x80000041;",
141 "output":["ParseError", ["Character", "\uFFFD"]]},
142
143 {"description":"33-bit hex numeric entity",
144 "input":"&#x100000041;",
145 "output":["ParseError", ["Character", "\uFFFD"]]},
146
147 {"description":"33-bit decimal numeric entity",
148 "input":"&#4294967361;",
149 "output":["ParseError", ["Character", "\uFFFD"]]},
150
151 {"description":"65-bit hex numeric entity",
152 "input":"&#x10000000000000041;",
153 "output":["ParseError", ["Character", "\uFFFD"]]},
154
155 {"description":"65-bit decimal numeric entity",
156 "input":"&#18446744073709551681;",
157 "output":["ParseError", ["Character", "\uFFFD"]]},
158
159 {"description":"Surrogate code point edge cases",
160 "input":"&#xD7FF;&#xD800;&#xD801;&#xDFFE;&#xDFFF;&#xE000;",
161 "output":[["Character", "\uD7FF"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\uFFFD\uE000"]]},
162
163 {"description":"Uppercase start tag name",
164 "input":"<X>",
165 "output":[["StartTag", "x", {}]]},
166
167 {"description":"Uppercase end tag name",
168 "input":"</X>",
169 "output":[["EndTag", "x"]]},
170
171 {"description":"Uppercase attribute name",
172 "input":"<x X>",
173 "output":[["StartTag", "x", { "x":"" }]]},
174
175 {"description":"Tag/attribute name case edge values",
176 "input":"<x@AZ[`az{ @AZ[`az{>",
177 "output":[["StartTag", "x@az[`az{", { "@az[`az{":"" }]]},
178
179 {"description":"Duplicate different-case attributes",
180 "input":"<x x=1 x=2 X=3>",
181 "output":["ParseError", "ParseError", ["StartTag", "x", { "x":"1" }]]},
182
183 {"description":"Uppercase close tag attributes",
184 "input":"</x X>",
185 "output":["ParseError", ["EndTag", "x"]]},
186
187 {"description":"Duplicate close tag attributes",
188 "input":"</x x x>",
189 "output":["ParseError", "ParseError", ["EndTag", "x"]]},
190
191 {"description":"Permitted slash",
192 "input":"<br/>",
193 "output":[["StartTag","br",{},true]]},
194
195 {"description":"Non-permitted slash",
196 "input":"<xr/>",
197 "output":[["StartTag","xr",{},true]]},
198
199 {"description":"Permitted slash but in close tag",
200 "input":"</br/>",
201 "output":["ParseError", ["EndTag", "br"]]},
202
203 {"description":"Doctype public case-sensitivity (1)",
204 "input":"<!DoCtYpE HtMl PuBlIc \"AbC\" \"XyZ\">",
205 "output":[["DOCTYPE", "HtMl", "AbC", "XyZ", true]]},
206
207 {"description":"Doctype public case-sensitivity (2)",
208 "input":"<!dOcTyPe hTmL pUbLiC \"aBc\" \"xYz\">",
209 "output":[["DOCTYPE", "hTmL", "aBc", "xYz", true]]},
210
211 {"description":"Doctype system case-sensitivity (1)",
212 "input":"<!DoCtYpE HtMl SyStEm \"XyZ\">",
213 "output":[["DOCTYPE", "HtMl", null, "XyZ", true]]},
214
215 {"description":"Doctype system case-sensitivity (2)",
216 "input":"<!dOcTyPe hTmL sYsTeM \"xYz\">",
217 "output":[["DOCTYPE", "hTmL", null, "xYz", true]]},
218
219 {"description":"U+0000 in lookahead region after non-matching character",
220 "input":"<!doc>\u0000",
221 "output":["ParseError", ["Comment", "doc"], "ParseError", ["Character", "\uFFFD"]],
222 "ignoreErrorOrder":true},
223
224 {"description":"U+0000 in lookahead region",
225 "input":"<!doc\u0000",
226 "output":["ParseError", "ParseError", ["Comment", "doc\uFFFD"]],
227 "ignoreErrorOrder":true},
228
229 {"description":"U+0080 in lookahead region",
230 "input":"<!doc\u0080",
231 "output":["ParseError", "ParseError", ["Comment", "doc\u0080"]],
232 "ignoreErrorOrder":true},
233
234 {"description":"U+FDD1 in lookahead region",
235 "input":"<!doc\uFDD1",
236 "output":["ParseError", "ParseError", ["Comment", "doc\uFDD1"]],
237 "ignoreErrorOrder":true},
238
239 {"description":"U+1FFFF in lookahead region",
240 "input":"<!doc\uD83F\uDFFF",
241 "output":["ParseError", "ParseError", ["Comment", "doc\uD83F\uDFFF"]],
242 "ignoreErrorOrder":true},
243
244 {"description":"CR followed by U+0000",
245 "input":"\r\u0000",
246 "output":["ParseError", ["Character", "\n\uFFFD"]],
247 "ignoreErrorOrder":true},
248
249 {"description":"CR followed by non-LF",
250 "input":"\r?",
251 "output":[["Character", "\n?"]]},
252
253 {"description":"CR at EOF",
254 "input":"\r",
255 "output":[["Character", "\n"]]},
256
257 {"description":"LF at EOF",
258 "input":"\n",
259 "output":[["Character", "\n"]]},
260
261 {"description":"CR LF",
262 "input":"\r\n",
263 "output":[["Character", "\n"]]},
264
265 {"description":"CR CR",
266 "input":"\r\r",
267 "output":[["Character", "\n\n"]]},
268
269 {"description":"LF LF",
270 "input":"\n\n",
271 "output":[["Character", "\n\n"]]},
272
273 {"description":"LF CR",
274 "input":"\n\r",
275 "output":[["Character", "\n\n"]]},
276
277 {"description":"text CR CR CR text",
278 "input":"text\r\r\rtext",
279 "output":[["Character", "text\n\n\ntext"]]},
280
281 {"description":"Doctype publik",
282 "input":"<!DOCTYPE html PUBLIK \"AbC\" \"XyZ\">",
283 "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
284
285 {"description":"Doctype publi",
286 "input":"<!DOCTYPE html PUBLI",
287 "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
288
289 {"description":"Doctype sistem",
290 "input":"<!DOCTYPE html SISTEM \"AbC\">",
291 "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
292
293 {"description":"Doctype sys",
294 "input":"<!DOCTYPE html SYS",
295 "output":["ParseError", ["DOCTYPE", "html", null, null, false]]}
296
297 ]}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24