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

Contents of /markup/html/whatpm/t/tokenizer-test-1.test

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.33 - (hide annotations) (download)
Sat Sep 5 09:26:55 2009 UTC (15 years, 10 months ago) by wakaba
Branch: MAIN
Changes since 1.32: +16 -0 lines
++ whatpm/t/ChangeLog	5 Sep 2009 09:26:39 -0000
2009-09-05  Wakaba  <wakaba@suika.fam.cx>

	* tokenizer-test-1.test: Added test cases for "comment end bang
	state" (HTML5 revision 3191).

++ whatpm/Whatpm/HTML/ChangeLog	5 Sep 2009 09:26:12 -0000
2009-09-05  Wakaba  <wakaba@suika.fam.cx>

	* Tokenizer.pm.src (_get_next_token): Implemented the "comment end
	bang state" (HTML5 revision 3191).

1 wakaba 1.1 {"tests": [
2    
3 wakaba 1.30 {"description":"<!DOCTYPE (HTML5 revision 3121)",
4 wakaba 1.3 "input":"<!DOCTYPE",
5 wakaba 1.30 "output":["ParseError",["DOCTYPE", null, null, null, false]]},
6 wakaba 1.3
7     {"description":"<!DOCTYPE ",
8     "input":"<!DOCTYPE ",
9 wakaba 1.9 "output":["ParseError",["DOCTYPE", null, null, null, false]]},
10 wakaba 1.3
11     {"description":"<!DOCTYPE >",
12     "input":"<!DOCTYPE >",
13 wakaba 1.9 "output":["ParseError",["DOCTYPE", null, null, null, false]]},
14 wakaba 1.3
15     {"description":"<!DOCTYPE h",
16     "input":"<!DOCTYPE h",
17 wakaba 1.9 "output":["ParseError",["DOCTYPE", "h", null, null, false]]},
18 wakaba 1.3
19     {"description":"<!DOCTYPE H",
20     "input":"<!DOCTYPE H",
21 wakaba 1.31 "output":["ParseError",["DOCTYPE", "h", null, null, false]]},
22 wakaba 1.3
23     {"description":"<!DOCTYPE h>",
24     "input":"<!DOCTYPE h>",
25 wakaba 1.9 "output":[["DOCTYPE", "h", null, null, true]]},
26 wakaba 1.3
27     {"description":"<!DOCTYPE H>",
28     "input":"<!DOCTYPE H>",
29 wakaba 1.31 "output":[["DOCTYPE", "h", null, null, true]]},
30 wakaba 1.3
31     {"description":"<!DOCTYPE ht",
32     "input":"<!DOCTYPE ht",
33 wakaba 1.9 "output":["ParseError",["DOCTYPE", "ht", null, null, false]]},
34 wakaba 1.3
35     {"description":"<!DOCTYPE Ht",
36     "input":"<!DOCTYPE Ht",
37 wakaba 1.31 "output":["ParseError",["DOCTYPE", "ht", null, null, false]]},
38 wakaba 1.3
39     {"description":"<!DOCTYPE hT",
40     "input":"<!DOCTYPE hT",
41 wakaba 1.31 "output":["ParseError",["DOCTYPE", "ht", null, null, false]]},
42 wakaba 1.3
43     {"description":"<!DOCTYPE ht>",
44     "input":"<!DOCTYPE ht>",
45 wakaba 1.9 "output":[["DOCTYPE", "ht", null, null, true]]},
46 wakaba 1.3
47     {"description":"<!DOCTYPE Ht>",
48     "input":"<!DOCTYPE Ht>",
49 wakaba 1.31 "output":[["DOCTYPE", "ht", null, null, true]]},
50 wakaba 1.3
51     {"description":"<!DOCTYPE hT>",
52     "input":"<!DOCTYPE hT>",
53 wakaba 1.31 "output":[["DOCTYPE", "ht", null, null, true]]},
54 wakaba 1.3
55     {"description":"<!DOCTYPE hT>",
56     "input":"<!DOCTYPE hT>",
57 wakaba 1.31 "output":[["DOCTYPE", "ht", null, null, true]]},
58 wakaba 1.3
59     {"description":"<!DOCTYPE htm",
60     "input":"<!DOCTYPE htm",
61 wakaba 1.9 "output":["ParseError",["DOCTYPE", "htm", null, null, false]]},
62 wakaba 1.3
63     {"description":"<!DOCTYPE Htm",
64     "input":"<!DOCTYPE Htm",
65 wakaba 1.31 "output":["ParseError",["DOCTYPE", "htm", null, null, false]]},
66 wakaba 1.3
67     {"description":"<!DOCTYPE hTM",
68     "input":"<!DOCTYPE hTM",
69 wakaba 1.31 "output":["ParseError",["DOCTYPE", "htm", null, null, false]]},
70 wakaba 1.3
71     {"description":"<!DOCTYPE htm>",
72     "input":"<!DOCTYPE htm>",
73 wakaba 1.9 "output":[["DOCTYPE", "htm", null, null, true]]},
74 wakaba 1.3
75     {"description":"<!DOCTYPE Htm>",
76     "input":"<!DOCTYPE Htm>",
77 wakaba 1.31 "output":[["DOCTYPE", "htm", null, null, true]]},
78 wakaba 1.3
79     {"description":"<!DOCTYPE hTM>",
80     "input":"<!DOCTYPE hTM>",
81 wakaba 1.31 "output":[["DOCTYPE", "htm", null, null, true]]},
82 wakaba 1.3
83     {"description":"<!DOCTYPE html5",
84     "input":"<!DOCTYPE html5",
85 wakaba 1.9 "output":["ParseError",["DOCTYPE", "html5", null, null, false]]},
86 wakaba 1.3
87     {"description":"<!DOCTYPE html5>",
88     "input":"<!DOCTYPE html5>",
89 wakaba 1.9 "output":[["DOCTYPE", "html5", null, null, true]]},
90    
91 wakaba 1.26 {"description": "VT in DOCTYPE state",
92     "input": "<!DOCTYPE\u000b html>",
93     "output": ["ParseError", "ParseError",
94     ["DOCTYPE", "\u000b", null, null, false]]},
95    
96     {"description": "VT in before DOCTYPE name state",
97     "input": "<!DOCTYPE \u000bhtml>",
98     "output": [["DOCTYPE", "\u000bhtml", null, null, true]]},
99    
100     {"description": "VT in DOCTYPE name state",
101     "input": "<!DOCTYPE html\u000babcd>",
102     "output": [["DOCTYPE", "html\u000babcd", null, null, true]]},
103    
104     {"description": "VT in after DOCTYPE name state",
105     "input": "<!DOCTYPE html \u000b>",
106     "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
107    
108     {"description": "VT in before DOCTYPE public identifier state",
109     "input": "<!DOCTYPE html PUBLIC \u000b\"xx\">",
110     "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
111    
112     {"description": "VT in after DOCTYPE public identifier state",
113     "input": "<!DOCTYPE html PUBLIC \"x\"\u000b>",
114     "output": ["ParseError", ["DOCTYPE", "html", "x", null, false]]},
115    
116     {"description": "VT in before DOCTYPE system identifier state",
117     "input": "<!DOCTYPE html SYSTEM \u000b\"aa\">",
118     "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
119    
120     {"description": "VT in after DOCTYPE system identifier state",
121     "input": "<!DOCTYPE html SYSTEM \"a\"\u000b>",
122     "output": ["ParseError", ["DOCTYPE", "html", null, "a", true]]},
123    
124 wakaba 1.9 {"description":"PUBLIC\u0022\u0022",
125     "input":"<!DOCTYPE html PUBLIC\u0022\u0022>",
126     "output":[["DOCTYPE", "html", "", null, true]]},
127    
128     {"description":"PUBLIC''",
129     "input":"<!DOCTYPE html PUBLIC''>",
130     "output":[["DOCTYPE", "html", "", null, true]]},
131    
132     {"description":"PUBLICbogus",
133     "input":"<!DOCTYPE html PUBLICbogus>",
134     "output":["ParseError",["DOCTYPE", "html", null, null, false]]},
135    
136     {"description":"PUBLIC bogus",
137     "input":"<!DOCTYPE html PUBLIC bogus>",
138     "output":["ParseError",["DOCTYPE", "html", null, null, false]]},
139    
140     {"description":"PUBLIC \u0022\u0022bogus",
141     "input":"<!DOCTYPE html PUBLIC \u0022\u0022bogus>",
142     "output":["ParseError",["DOCTYPE", "html", "", null, false]]},
143    
144     {"description":"PUBLIC \u0022\u0022 bogus",
145     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 bogus>",
146     "output":["ParseError",["DOCTYPE", "html", "", null, false]]},
147    
148     {"description":"PUBLIC \u0022\u0022 \u0022\u0022bogus",
149     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 \u0022\u0022bogus>",
150 wakaba 1.20 "output":["ParseError",["DOCTYPE", "html", "", "", true]]},
151 wakaba 1.9
152     {"description":"PUBLIC \u0022\u0022 \u0022\u0022 bogus",
153     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 \u0022\u0022 bogus>",
154 wakaba 1.20 "output":["ParseError",["DOCTYPE", "html", "", "", true]]},
155 wakaba 1.9
156     {"description":"PUBLIC \u0022\u0022\u0022\u0022>",
157     "input":"<!DOCTYPE html PUBLIC \u0022\u0022\u0022\u0022>",
158     "output":[["DOCTYPE", "html", "", "", true]]},
159    
160     {"description":"PUBLIC \u0022\u0022''>",
161     "input":"<!DOCTYPE html PUBLIC \u0022\u0022''>",
162     "output":[["DOCTYPE", "html", "", "", true]]},
163 wakaba 1.3
164 wakaba 1.13 {"description":"SYSTEM a",
165     "input":"<!DOCTYPE html SYSTEM a>",
166     "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
167 wakaba 1.20
168     {"description": "garbage after SYSTEM literal",
169     "input": "<!DOCTYPE html SYSTEM 'a' b>",
170     "output": ["ParseError", ["DOCTYPE", "html", null, "a", true]]},
171    
172     {"description": "garbage after PUBLIC and SYSTEM literal",
173     "input": "<!DOCTYPE html PUBLIC 'c' 'a' b>",
174     "output": ["ParseError", ["DOCTYPE", "html", "c", "a", true]]},
175    
176     {"description": "garbage immediately after SYSTEM literal",
177     "input": "<!DOCTYPE html SYSTEM 'a'b>",
178     "output": ["ParseError", ["DOCTYPE", "html", null, "a", true]]},
179    
180     {"description": "garbage immediately after PUBLIC and SYSTEM literal",
181     "input": "<!DOCTYPE html PUBLIC 'c' 'a'b>",
182     "output": ["ParseError", ["DOCTYPE", "html", "c", "a", true]]},
183 wakaba 1.13
184 wakaba 1.28 {"description": "DOCTYPe",
185     "input": "<!DOCTYPe html>",
186     "output": [["DOCTYPE", "html", null, null, true]]},
187    
188 wakaba 1.31 {"description": "DOCTYPE Html",
189     "input": "<!DOCTYPE Html>",
190     "output": [["DOCTYPE", "html", null, null, true]]},
191    
192     {"description": "DOCTYPE hTml",
193     "input": "<!DOCTYPE Html>",
194     "output": [["DOCTYPE", "html", null, null, true]]},
195    
196 wakaba 1.28 {"description": "PUBLIc",
197     "input": "<!DOCTYPE html PUBLIc 'a' 'b'>",
198     "output": [["DOCTYPE", "html", "a", "b", true]]},
199    
200     {"description": "SYSTEm",
201     "input": "<!DOCTYPE html SYSTEm 'a'>",
202     "output": [["DOCTYPE", "html", null, "a", true]]},
203    
204 wakaba 1.21 {"description": "<!D>",
205     "input": "<!D>",
206     "output": ["ParseError", ["Comment", "D"]]},
207    
208     {"description": "<!DO>",
209     "input": "<!DO>",
210     "output": ["ParseError", ["Comment", "DO"]]},
211    
212     {"description": "<!DOc>",
213     "input": "<!DOc>",
214     "output": ["ParseError", ["Comment", "DOc"]]},
215    
216     {"description": "<!dOcT>",
217     "input": "<!dOcT>",
218     "output": ["ParseError", ["Comment", "dOcT"]]},
219    
220     {"description": "<!DoctY",
221     "input": "<!DoctY",
222     "output": ["ParseError", ["Comment", "DoctY"]]},
223    
224     {"description": "<!doctyp!>",
225     "input": "<!doctyp!>",
226     "output": ["ParseError", ["Comment", "doctyp!"]]},
227    
228     {"description": "<!Doc?>",
229     "input": "<!Doc?>",
230     "output": ["ParseError", ["Comment", "Doc?"]]},
231    
232     {"description": "<!Doc<type>>",
233     "input": "<!Doc<type>>",
234     "output": ["ParseError", ["Comment", "Doc<type"], ["Character", ">"]]},
235    
236     {"description": "<!DOCTYPE HTML P>",
237     "input": "<!DOCTYPE HTML P>",
238 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
239 wakaba 1.21
240     {"description": "<!DOCTYPE HTML Pa>",
241     "input": "<!DOCTYPE HTML Pa>",
242 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
243 wakaba 1.21
244     {"description": "<!DOCTYPE HTML Pua>",
245     "input": "<!DOCTYPE HTML Pua>",
246 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
247 wakaba 1.21
248     {"description": "<!DOCTYPE HTML PUB>",
249     "input": "<!DOCTYPE HTML PUB>",
250 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
251 wakaba 1.21
252     {"description": "<!DOCTYPE HTML pubL>",
253     "input": "<!DOCTYPE HTML pubL>",
254 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
255 wakaba 1.21
256     {"description": "<!DOCTYPE HTML publication>",
257     "input": "<!DOCTYPE HTML publication>",
258 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
259 wakaba 1.21
260     {"description": "<!DOCTYPE HTML publi>",
261     "input": "<!DOCTYPE HTML publi>",
262 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
263 wakaba 1.21
264     {"description": "<!DOCTYPE HTML PULICID>",
265     "input": "<!DOCTYPE HTML PUBLICID>",
266 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
267 wakaba 1.21
268     {"description": "<!DOCTYPE HTML S ''>",
269     "input": "<!DOCTYPE HTML S ''>",
270 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
271 wakaba 1.21
272     {"description": "<!DOCTYPE HTML sy>",
273     "input": "<!DOCTYPE HTML sy>",
274 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
275 wakaba 1.21
276     {"description": "<!DOCTYPE HTML sys ''>",
277     "input": "<!DOCTYPE HTML sys ''>",
278 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
279 wakaba 1.21
280     {"description": "<!DOCTYPE HTML syst>",
281     "input": "<!DOCTYPE HTML syst>",
282 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
283 wakaba 1.21
284     {"description": "<!DOCTYPE HTML SySter>",
285     "input": "<!DOCTYPE HTML SySter>",
286 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
287 wakaba 1.21
288     {"description": "<!DOCTYPE HTML systemid>",
289     "input": "<!DOCTYPE HTML systemid>",
290 wakaba 1.31 "output": ["ParseError", ["DOCTYPE", "html", null, null, false]]},
291 wakaba 1.21
292 wakaba 1.14 {"description":"<!---x-->",
293     "input":"<!---x-->",
294     "output":[["Comment", "-x"]]},
295    
296     {"description":"<!----x-->",
297     "input":"<!----x-->",
298     "output":["ParseError", ["Comment", "--x"]]},
299    
300 wakaba 1.1 {"description":"non-PCDATA content model flag, start tag-like string",
301     "contentModelFlags":["PLAINTEXT","RCDATA","CDATA"],
302     "input":"<div>",
303 wakaba 1.2 "output":[["Character", "<div>"]]},
304    
305     {"description":"end tag followed by character data",
306     "contentModelFlags":["RCDATA","CDATA"],
307     "lastStartTag":"xxx",
308     "input":"AB</xxx>CD",
309 wakaba 1.4 "output":[["Character", "AB"],["EndTag", "xxx"],["Character", "CD"]]},
310 wakaba 1.1
311 wakaba 1.12 {"description":"NULL character reference",
312     "input":"&#0;",
313     "output":["ParseError", ["Character", "\uFFFD"]]},
314    
315     {"description":"NULL character reference",
316     "input":"&#x0;",
317     "output":["ParseError", ["Character", "\uFFFD"]]},
318    
319 wakaba 1.27 {"description": "U+0001 character reference",
320     "input": "&#x1;",
321     "output": ["ParseError", ["Character", "\uFFFD"]]},
322    
323     {"description": "U+0002 character reference",
324     "input": "&#x2;",
325     "output": ["ParseError", ["Character", "\uFFFD"]]},
326    
327     {"description": "U+0008 character reference",
328     "input": "&#x8;",
329     "output": ["ParseError", ["Character", "\uFFFD"]]},
330    
331     {"description": "U+0008 decimal character reference",
332     "input": "&#8;",
333     "output": ["ParseError", ["Character", "\uFFFD"]]},
334    
335     {"description": "U+0009 character reference",
336     "input": "&#x9;",
337     "output": [["Character", "\u0009"]]},
338    
339     {"description": "U+000A character reference",
340     "input": "&#xa;",
341     "output": [["Character", "\u000A"]]},
342    
343 wakaba 1.12 {"description":"character entity &#13;",
344     "input":"&#13;",
345     "output":["ParseError", ["Character", "\u000A"]]},
346    
347     {"description":"character entity &#xd;",
348     "input":"&#xd;",
349     "output":["ParseError", ["Character", "\u000A"]]},
350    
351     {"description":"character entities &#13;&#10;",
352     "input":"&#13;&#10;",
353     "output":["ParseError", ["Character", "\u000A\u000A"]]},
354    
355     {"description":"character entity &#13; followed by a LF",
356     "input":"&#13;\u000A",
357     "output":["ParseError", ["Character", "\u000A\u000A"]]},
358    
359 wakaba 1.27 {"description": "U+000B character reference",
360     "input": "&#xb;",
361     "output": ["ParseError", ["Character", "\uFFFD"]]},
362    
363     {"description": "U+000B decimal character reference",
364     "input": "&#11;",
365     "output": ["ParseError", ["Character", "\uFFFD"]]},
366    
367     {"description": "U+000C character reference",
368     "input": "&#xc;",
369     "output": [["Character", "\u000C"]]},
370    
371     {"description": "U+000E character reference",
372     "input": "&#xe;",
373     "output": ["ParseError", ["Character", "\uFFFD"]]},
374    
375     {"description": "U+000F character reference",
376     "input": "&#xF;",
377     "output": ["ParseError", ["Character", "\uFFFD"]]},
378    
379     {"description": "U+000F decimal character reference",
380     "input": "&#15;",
381     "output": ["ParseError", ["Character", "\uFFFD"]]},
382    
383     {"description": "U+0010 character reference",
384     "input": "&#x10;",
385     "output": ["ParseError", ["Character", "\uFFFD"]]},
386    
387     {"description": "U+001B character reference",
388     "input": "&#x1b;",
389     "output": ["ParseError", ["Character", "\uFFFD"]]},
390    
391     {"description": "U+001F character reference",
392     "input": "&#x1F;",
393     "output": ["ParseError", ["Character", "\uFFFD"]]},
394    
395     {"description": "U+0020 character reference",
396     "input": "&#x20;",
397     "output": [["Character", " "]]},
398    
399     {"description": "U+007F character reference",
400     "input": "&#x7f;",
401     "output": ["ParseError", ["Character", "\uFFFD"]]},
402    
403 wakaba 1.4 {"description":"c1 character references",
404     "input":"&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;",
405     "output":[
406     "ParseError", ["Character", "\u20AC"],
407     "ParseError", ["Character", "\uFFFD"],
408     "ParseError", ["Character", "\u201A"],
409     "ParseError", ["Character", "\u0192"],
410     "ParseError", ["Character", "\u201E"],
411     "ParseError", ["Character", "\u2026"],
412     "ParseError", ["Character", "\u2020"],
413     "ParseError", ["Character", "\u2021"]
414     ]},
415     {"description":"c1 character references",
416     "input":"&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;",
417     "output":[
418     "ParseError", ["Character", "\u02C6"],
419     "ParseError", ["Character", "\u2030"],
420     "ParseError", ["Character", "\u0160"],
421     "ParseError", ["Character", "\u2039"],
422     "ParseError", ["Character", "\u0152"],
423     "ParseError", ["Character", "\uFFFD"],
424     "ParseError", ["Character", "\u017D"],
425     "ParseError", ["Character", "\uFFFD"]
426     ]},
427     {"description":"c1 character references",
428     "input":"&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;",
429     "output":[
430     "ParseError", ["Character", "\uFFFD"],
431     "ParseError", ["Character", "\u2018"],
432     "ParseError", ["Character", "\u2019"],
433     "ParseError", ["Character", "\u201C"],
434     "ParseError", ["Character", "\u201D"],
435     "ParseError", ["Character", "\u2022"],
436     "ParseError", ["Character", "\u2013"],
437     "ParseError", ["Character", "\u2014"]
438     ]},
439     {"description":"c1 character references",
440     "input":"&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;",
441     "output":[
442     "ParseError", ["Character", "\u02DC"],
443     "ParseError", ["Character", "\u2122"],
444     "ParseError", ["Character", "\u0161"],
445     "ParseError", ["Character", "\u203A"],
446     "ParseError", ["Character", "\u0153"],
447     "ParseError", ["Character", "\uFFFD"],
448     "ParseError", ["Character", "\u017E"],
449     "ParseError", ["Character", "\u0178"]
450     ]},
451    
452     {"description":"c1 character references",
453     "input":"&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;",
454     "output":[
455     "ParseError", ["Character", "\u20AC"],
456     "ParseError", ["Character", "\uFFFD"],
457     "ParseError", ["Character", "\u201A"],
458     "ParseError", ["Character", "\u0192"],
459     "ParseError", ["Character", "\u201E"],
460     "ParseError", ["Character", "\u2026"],
461     "ParseError", ["Character", "\u2020"],
462     "ParseError", ["Character", "\u2021"]
463     ]},
464     {"description":"c1 character references",
465     "input":"&#x88;&#x89;&#x8a;&#x8b;&#x8c;&#x8d;&#x8e;&#x8f;",
466     "output":[
467     "ParseError", ["Character", "\u02C6"],
468     "ParseError", ["Character", "\u2030"],
469     "ParseError", ["Character", "\u0160"],
470     "ParseError", ["Character", "\u2039"],
471     "ParseError", ["Character", "\u0152"],
472     "ParseError", ["Character", "\uFFFD"],
473     "ParseError", ["Character", "\u017D"],
474     "ParseError", ["Character", "\uFFFD"]
475     ]},
476     {"description":"c1 character references",
477     "input":"&#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;",
478     "output":[
479     "ParseError", ["Character", "\uFFFD"],
480     "ParseError", ["Character", "\u2018"],
481     "ParseError", ["Character", "\u2019"],
482     "ParseError", ["Character", "\u201C"],
483     "ParseError", ["Character", "\u201D"],
484     "ParseError", ["Character", "\u2022"],
485     "ParseError", ["Character", "\u2013"],
486     "ParseError", ["Character", "\u2014"]
487     ]},
488     {"description":"c1 character references",
489     "input":"&#x98;&#x99;&#x9a;&#x9b;&#x9c;&#x9d;&#x9e;&#x9f;",
490     "output":[
491     "ParseError", ["Character", "\u02DC"],
492     "ParseError", ["Character", "\u2122"],
493     "ParseError", ["Character", "\u0161"],
494     "ParseError", ["Character", "\u203A"],
495     "ParseError", ["Character", "\u0153"],
496     "ParseError", ["Character", "\uFFFD"],
497     "ParseError", ["Character", "\u017E"],
498     "ParseError", ["Character", "\u0178"]
499 wakaba 1.5 ]},
500    
501 wakaba 1.16 {"description":"Numeric entity representing a Windows-1252 'codepoint'",
502     "input":"&#137;",
503     "output":["ParseError", ["Character", "\u2030"]]},
504    
505     {"description":"Hexadecimal entity representing a Windows-1252 'codepoint'",
506     "input":"&#x89;",
507     "output":["ParseError", ["Character", "\u2030"]]},
508    
509 wakaba 1.12 {"description":"surrogate character reference",
510     "input":"&#xD800;",
511     "output":["ParseError", ["Character", "\uFFFD"]]},
512    
513     {"description":"surrogate character references",
514     "input":"&#xD800;&#xDFFF;",
515     "output":["ParseError", ["Character", "\uFFFD"],
516     "ParseError", ["Character", "\uFFFD"]]},
517    
518     {"description":"surrogate character reference",
519     "input":"\uD800&#xDFFF;",
520 wakaba 1.22 "output":["ParseError", ["Character", "\uD800"],
521 wakaba 1.12 "ParseError", ["Character", "\uFFFD"]]},
522    
523     {"description":"surrogate character reference",
524     "input":"&#xD800;\uDFFF",
525 wakaba 1.22 "output":["ParseError", ["Character", "\uFFFD"],
526     "ParseError", ["Character", "\uDFFF"]]},
527 wakaba 1.12
528     {"description":"surrogate character reference",
529     "input":"&#55296;",
530     "output":["ParseError", ["Character", "\uFFFD"]]},
531    
532     {"description":"surrogate character reference",
533     "input":"&#57343;",
534     "output":["ParseError", ["Character", "\uFFFD"]]},
535 wakaba 1.27
536     {"description": "U+FDD0 character reference",
537     "input": "&#xfdd0;",
538     "output": ["ParseError", ["Character", "\uFFFD"]]},
539    
540     {"description": "U+FDD0 decimal character reference",
541     "input": "&#64976;",
542     "output": ["ParseError", ["Character", "\uFFFD"]]},
543    
544     {"description": "U+FDDF character reference",
545     "input": "&#xfddf;",
546     "output": ["ParseError", ["Character", "\uFFFD"]]},
547    
548     {"description": "U+FFFE character reference",
549     "input": "&#xfffe;",
550     "output": ["ParseError", ["Character", "\uFFFD"]]},
551    
552     {"description": "U+FFFE decimal character reference",
553     "input": "&#65534;",
554     "output": ["ParseError", ["Character", "\uFFFD"]]},
555    
556     {"description": "U+FFFF character reference",
557     "input": "&#xffff;",
558     "output": ["ParseError", ["Character", "\uFFFD"]]},
559    
560     {"description": "U+FFFF decimal character reference",
561     "input": "&#65535;",
562     "output": ["ParseError", ["Character", "\uFFFD"]]},
563    
564     {"description": "U+1FFFE character reference",
565     "input": "&#x1fffe;",
566     "output": ["ParseError", ["Character", "\uFFFD"]]},
567    
568     {"description": "U+1FFFF character reference",
569     "input": "&#x1ffff;",
570     "output": ["ParseError", ["Character", "\uFFFD"]]},
571    
572     {"description": "U+10FFFE character reference",
573     "input": "&#x10fffe;",
574     "output": ["ParseError", ["Character", "\uFFFD"]]},
575    
576     {"description": "U+10FFFE decimal character reference",
577     "input": "&#1114110;",
578     "output": ["ParseError", ["Character", "\uFFFD"]]},
579    
580     {"description": "U+10FFFF character reference",
581     "input": "&#x10FFFF;",
582     "output": ["ParseError", ["Character", "\uFFFD"]]},
583    
584     {"description": "U+10FFFF decimal character reference",
585     "input": "&#1114111;",
586     "output": ["ParseError", ["Character", "\uFFFD"]]},
587 wakaba 1.12
588     {"description":"non-Unicode character reference",
589     "input":"&#1114112;",
590     "output":["ParseError", ["Character", "\uFFFD"]]},
591    
592     {"description":"non-Unicode character reference",
593     "input":"&#x110000;",
594     "output":["ParseError", ["Character", "\uFFFD"]]},
595    
596 wakaba 1.15 {"description":"Broken hcro (&#x)",
597     "input":"&#x",
598     "output":["ParseError", ["Character", "&#x"]]},
599    
600     {"description":"Broken hcro (&#X)",
601     "input":"&#X",
602     "output":["ParseError", ["Character", "&#X"]]},
603    
604     {"description":"Broken hcro (&#x;)",
605     "input":"&#x;",
606     "output":["ParseError", ["Character", "&#x;"]]},
607    
608     {"description":"Broken hcro (&#X;)",
609     "input":"&#X;",
610     "output":["ParseError", ["Character", "&#X;"]]},
611    
612     {"description":"Broken hcro (&#xg)",
613     "input":"&#xg",
614     "output":["ParseError", ["Character", "&#xg"]]},
615    
616     {"description":"Broken hcro (&#Xg)",
617     "input":"&#Xg",
618     "output":["ParseError", ["Character", "&#Xg"]]},
619    
620     {"description":"Broken hcro (&#xg;)",
621     "input":"&#xg;",
622     "output":["ParseError", ["Character", "&#xg;"]]},
623    
624     {"description":"Broken hcro (&#Xg;)",
625     "input":"&#Xg;",
626     "output":["ParseError", ["Character", "&#Xg;"]]},
627    
628     {"description":"Broken hcro (&#x!)",
629     "input":"&#x!",
630     "output":["ParseError", ["Character", "&#x!"]]},
631    
632     {"description":"Broken hcro (&#X!)",
633     "input":"&#X!",
634     "output":["ParseError", ["Character", "&#X!"]]},
635    
636 wakaba 1.5 {"description":"NULL character",
637     "input":"\u0000",
638 wakaba 1.6 "output":["ParseError",["Character", "\uFFFD"]]},
639    
640     {"description":"&TRADE;",
641     "input":"&TRADE;",
642 wakaba 1.7 "output":[["Character", "\u2122"]]},
643    
644     {"description":"&lang;",
645     "input":"&lang;",
646 wakaba 1.18 "output":[["Character", "\u27E8"]]},
647 wakaba 1.7
648     {"description":"&rang;",
649     "input":"&rang;",
650 wakaba 1.18 "output":[["Character", "\u27E9"]]},
651 wakaba 1.7
652     {"description":"&amp;;",
653     "input":"&amp;;",
654 wakaba 1.8 "output":[["Character", "&;"]]},
655    
656 wakaba 1.11 {"description":"&HT",
657     "input":"&\u0009",
658     "output":[["Character", "&\u0009"]]},
659    
660     {"description":"&LF",
661     "input":"&\u000A",
662     "output":[["Character", "&\u000A"]]},
663    
664 wakaba 1.26 {"description": "&VT",
665     "input": "&\u000B",
666     "output": ["ParseError", ["Character", "&\u000B"]]},
667 wakaba 1.11
668     {"description":"&FF",
669     "input":"&\u000C",
670     "output":[["Character", "&\u000C"]]},
671    
672     {"description":"&SP",
673     "input":"& ",
674     "output":[["Character", "& "]]},
675    
676     {"description":"&<",
677     "input":"&<",
678 wakaba 1.12 "output":[["Character", "&"], "ParseError", ["Character", "<"]]},
679 wakaba 1.11
680     {"description":"&<p>",
681     "input":"&<p>",
682     "output":[["Character", "&"], ["StartTag", "p", {}]]},
683    
684     {"description":"&&",
685     "input":"&&",
686     "output":[["Character", "&&"]]},
687    
688     {"description":"&&amp;",
689     "input":"&&amp;",
690     "output":[["Character", "&&"]]},
691    
692     {"description":"&",
693     "input":"&",
694     "output":[["Character", "&"]]},
695 wakaba 1.12
696     {"description":"named character reference w/o refc",
697     "input":"&ampabc",
698     "output":["ParseError", ["Character", "&abc"]]},
699    
700     {"description":"named character reference",
701     "input":"&amp;abc",
702     "output":[["Character", "&abc"]]},
703    
704     {"description":"named character reference w/o refc",
705     "input":"&abc",
706     "output":["ParseError", ["Character", "&abc"]]},
707    
708     {"description":"unknown named character reference",
709     "input":"&abc;",
710     "output":["ParseError", ["Character", "&abc;"]]},
711    
712     {"description":"named character reference w/o refc in attr",
713     "input":"<a href='&ampabc'>",
714     "output":["ParseError", ["StartTag", "a", {"href": "&ampabc"}]]},
715    
716     {"description":"named character reference in attr",
717     "input":"<a href='&amp;abc'>",
718     "output":[["StartTag", "a", {"href": "&abc"}]]},
719    
720     {"description":"named character reference w/o refc in attr",
721     "input":"<a href='&abc'>",
722     "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]},
723    
724     {"description":"unknown named character reference in attr",
725     "input":"<a href='&abc;'>",
726     "output":["ParseError", ["StartTag", "a", {"href": "&abc;"}]]},
727 wakaba 1.15
728     {"description":"entity w/o refc at the end of unterminated attribute value",
729     "input":"<a href='&COPY",
730     "output":["ParseError", "ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
731    
732     {"description":"entity w/o refc at the end of attribute value",
733     "input":"<a href='&COPY'>",
734     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
735    
736     {"description":"entity w/refc at the end of attribute value",
737     "input":"<a href='&COPY;'>",
738     "output":[["StartTag", "a", {"href": "\u00A9"}]]},
739    
740     {"description":"entity w/o refc href='&COPY!'",
741     "input":"<a href='&COPY!'>",
742     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9!"}]]},
743    
744     {"description":"entity w/o refc href='&COPY=ok'",
745     "input":"<a href='&COPY=ok'>",
746     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9=ok"}]]},
747    
748     {"description":"entity w/o refc href='&COPYright'",
749     "input":"<a href='&COPYright'>",
750     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright"}]]},
751    
752     {"description":"entity w/o refc href='&COPYright;'",
753     "input":"<a href='&COPYright;'>",
754     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright;"}]]},
755    
756     {"description":"entity w/o refc href='&COPYrightc'",
757     "input":"<a href='&COPYrightc'>",
758     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightc"}]]},
759    
760     {"description":"entity w/o refc href='&COPYrightcd'",
761     "input":"<a href='&COPYrightcd'>",
762     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightcd"}]]},
763 wakaba 1.11
764 wakaba 1.8 {"description":"cdata end tag containing <",
765     "contentModelFlags":["RCDATA","CDATA"],
766     "lastStartTag":"xxx",
767     "input":"</xxx<div>",
768 wakaba 1.10 "output":[["Character", "</xxx<div>"]]},
769 wakaba 1.8
770 wakaba 1.26 {"description":"cdata end tag containing VT",
771     "contentModelFlags":["RCDATA","CDATA"],
772     "lastStartTag":"xxx",
773     "input":"</xxx\u000Babc",
774     "output":[["Character", "</xxx\u000Babc"]]},
775    
776 wakaba 1.8 {"description":"< in tag name state",
777     "input":"<p<div>",
778     "output":[["StartTag", "p<div", {}]]},
779    
780 wakaba 1.26 {"description":"VT in tag name state",
781     "input":"<p\u000ba>",
782     "output":[["StartTag", "p\u000Ba", {}]]},
783    
784 wakaba 1.8 {"description":"< in before attribute name state",
785     "input":"<p <div>",
786 wakaba 1.32 "output":["ParseError", ["StartTag", "p", {"<div":""}]]},
787 wakaba 1.8
788 wakaba 1.26 {"description":"VT in before attribute name state",
789     "input":"<p \u000bx>",
790     "output":[["StartTag", "p", {"\u000Bx":""}]]},
791    
792 wakaba 1.8 {"description":"< in attribute name state",
793     "input":"<p align<div>",
794 wakaba 1.32 "output":["ParseError", ["StartTag", "p", {"align<div":""}]]},
795 wakaba 1.8
796 wakaba 1.26 {"description":"VT in attribute name state",
797     "input":"<p a\u000bc>",
798     "output":[["StartTag", "p", {"a\u000bc":""}]]},
799    
800 wakaba 1.8 {"description":"< in after attribute name state",
801     "input":"<p align <div>",
802 wakaba 1.32 "output":["ParseError", ["StartTag", "p", {"align":"","<div":""}]]},
803 wakaba 1.8
804 wakaba 1.26 {"description":"VT in after attribute name state",
805     "input":"<p a \u000bb>",
806     "output":[["StartTag", "p", {"a":"","\u000bb":""}]]},
807    
808 wakaba 1.8 {"description":"< in before attribute value state",
809     "input":"<p align=<div>",
810 wakaba 1.32 "output":["ParseError", ["StartTag", "p", {"align":"<div"}]]},
811 wakaba 1.8
812 wakaba 1.26 {"description":"VT in before attribute value state",
813     "input":"<p a=\u000bc>",
814     "output":[["StartTag", "p", {"a":"\u000bc"}]]},
815    
816 wakaba 1.8 {"description":"< in attribute value (unquoted) state",
817     "input":"<p align=left<div>",
818 wakaba 1.32 "output":["ParseError", ["StartTag", "p", {"align":"left<div"}]]},
819 wakaba 1.8
820 wakaba 1.26 {"description":"VT in attribute value (unquoted) state",
821     "input":"<p align=left\u000bc>",
822     "output":[["StartTag", "p", {"align":"left\u000bc"}]]},
823    
824 wakaba 1.8 {"description":"< in attribute value (single-unquoted) state",
825     "input":"<p align='left<div>",
826     "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
827    
828     {"description":"< in attribute value (double-unquoted) state",
829     "input":"<p align=\u0022left<div>",
830 wakaba 1.17 "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
831 wakaba 1.26
832     {"description": "< in after attribute value (quoted) state",
833     "input": "<p a=\"b\"\u000bc>",
834     "output": ["ParseError", ["StartTag", "p", {"a":"b", "\u000bc": ""}]]},
835 wakaba 1.17
836     {"description":"/''b=\"\"",
837     "input": "<a /''b=\"\">",
838 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
839     ["StartTag", "a", {"''b": ""}]]},
840 wakaba 1.17
841     {"description":"/\"\"b=\"\"",
842     "input": "<a /\"\"b=\"\">",
843 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
844     ["StartTag", "a", {"\"\"b": ""}]]},
845 wakaba 1.17
846     {"description":"\"b=\"\"",
847     "input": "<a \"b=\"\">",
848 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\"b": ""}]]},
849 wakaba 1.17
850     {"description":"\"\"b=\"\"",
851     "input": "<a \"\"b=\"\">",
852 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"b": ""}]]},
853 wakaba 1.17
854     {"description":"'b=\"\"",
855     "input": "<a 'b=\"\">",
856 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"'b": ""}]]},
857 wakaba 1.17
858     {"description":"''b=\"\"",
859     "input": "<a ''b=\"\">",
860 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"''b": ""}]]},
861 wakaba 1.17
862     {"description":"/b=\"\"",
863     "input": "<a /b=\"\">",
864     "output": ["ParseError", ["StartTag", "a", {"b": ""}]]},
865    
866     {"description":"b/=\"\"",
867     "input": "<a b/=\"\">",
868 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError", "ParseError",
869     ["StartTag", "a", {"b": "", "=\"\"": ""}]]},
870 wakaba 1.17
871     {"description":"b/c=\"\"",
872     "input": "<a b/c=\"\">",
873     "output": ["ParseError", ["StartTag", "a", {"b": "", "c": ""}]]},
874    
875     {"description":"bc[NULL]=\"\"",
876     "input": "<a bc\u0000=\"\">",
877     "output": ["ParseError", ["StartTag", "a", {"bc\uFFFD": ""}]]},
878    
879     {"description":"b[NULL]c=\"\"",
880     "input": "<a b\u0000c=\"\">",
881     "output": ["ParseError", ["StartTag", "a", {"b\uFFFDc": ""}]]},
882    
883     {"description":"[NULL]bc=\"\"",
884     "input": "<a \u0000bc=\"\">",
885 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\uFFFDbc": ""}]]},
886    
887     {"description": "<span ===>",
888     "input": "<span ===>",
889     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=": "="}]]},
890    
891     {"description": "<span a==>",
892     "input": "<span a==>",
893     "output": ["ParseError", ["StartTag", "span", {"a": "="}]]},
894    
895     {"description": "<span ==a>",
896     "input": "<span ==a>",
897     "output": ["ParseError", ["StartTag", "span", {"=": "a"}]]},
898    
899     {"description": "<span a=b=>",
900     "input": "<span a=b=>",
901     "output": ["ParseError", ["StartTag", "span", {"a": "b="}]]},
902    
903 wakaba 1.29 {"description": "<span a=<> (HTML5 revision 3206)",
904     "input": "<span a=<>",
905     "output": ["ParseError", ["StartTag", "span", {"a": "<"}]]},
906    
907     {"description": "<span a=b<> (HTML5 revision 3206)",
908     "input": "<span a=b<>",
909     "output": ["ParseError", ["StartTag", "span", {"a": "b<"}]]},
910    
911 wakaba 1.19 {"description": "<span =x\"=\"x>",
912     "input": "<span =x\"=\"x>",
913     "output": ["ParseError", "ParseError", "ParseError",
914     ["StartTag", "span", {"=x\"": "x>"}]]},
915    
916     {"description": "<span =x\"=\"x\">",
917     "input": "<span =x\"=\"x\">",
918     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=x\"": "x"}]]},
919    
920 wakaba 1.25 {"description": "bad attribute name (HTML5 revision 2123), '",
921     "input": "<foo bar '>",
922     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'": ""}]]},
923    
924     {"description": "bad attribute name (HTML5 revision 2123), \"",
925     "input": "<foo bar \">",
926     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"": ""}]]},
927    
928     {"description": "bad attribute name (HTML5 revision 2123), 'x",
929     "input": "<foo bar 'x>",
930     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'x": ""}]]},
931    
932     {"description": "bad attribute name (HTML5 revision 2123), \"x",
933     "input": "<foo bar \"x>",
934     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"x": ""}]]},
935    
936     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
937     "input": "<foo bar=>",
938     "output": ["ParseError", ["StartTag", "foo", {"bar": ""}]]},
939    
940     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
941     "input": "</foo bar=>",
942     "output": ["ParseError", "ParseError", ["EndTag", "foo"]]},
943    
944     {"description": "empty unquoted attribute value followed by another attr",
945     "input": "<foo bar= baz=>",
946     "output": ["ParseError", ["StartTag", "foo", {"bar": "baz="}]]},
947    
948 wakaba 1.19 {"description":"&\"",
949     "input": "&\"",
950     "output": ["ParseError", ["Character", "&\""]]},
951    
952     {"description":"&'",
953     "input": "&'",
954     "output": ["ParseError", ["Character", "&'"]]},
955    
956     {"description":"<a href=\"&\">",
957     "input": "<a href=\"&\">",
958     "output": [["StartTag", "a", {"href": "&"}]]},
959    
960     {"description":"<a href=\"&'\">",
961     "input": "<a href=\"&'\">",
962     "output": ["ParseError", ["StartTag", "a", {"href": "&'"}]]},
963    
964     {"description":"<a href='&'>",
965     "input": "<a href='&'>",
966     "output": [["StartTag", "a", {"href": "&"}]]},
967    
968     {"description":"<a href='&\"'>",
969     "input": "<a href='&\"'>",
970     "output": ["ParseError", ["StartTag", "a", {"href": "&\""}]]},
971    
972     {"description":"<a href=&\">",
973     "input": "<a href=&\">",
974     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&\""}]]},
975    
976     {"description":"<a href=&'>",
977     "input": "<a href=&'>",
978     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&'"}]]},
979    
980     {"description": "<!->-->",
981     "input": "<!->-->",
982     "output": ["ParseError", ["Comment", "-"], ["Character", "-->"]]},
983    
984     {"description": "<!!--->-->",
985     "input": "<!!--->-->",
986     "output": ["ParseError", ["Comment", "!---"], ["Character", "-->"]]},
987    
988 wakaba 1.33 {"description": "<!----!>",
989     "input": "<!----!>",
990     "output": ["ParseError", ["Comment", ""]]},
991    
992     {"description": "<!----!-->",
993     "input": "<!----!-->",
994     "output": ["ParseError", ["Comment", "--!"]]},
995    
996     {"description": "<!----!",
997     "input": "<!----!",
998     "output": ["ParseError", "ParseError", ["Comment", ""]]},
999    
1000     {"description": "<!----!x-->",
1001     "input": "<!----!x-->",
1002     "output": ["ParseError", ["Comment", "--!x"]]},
1003    
1004 wakaba 1.19 {"description": "<a href=''rel=''>",
1005     "input": "<a href=''rel=''>",
1006     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
1007    
1008     {"description": "<a href=\"\"rel=''>",
1009     "input": "<a href=\"\"rel=''>",
1010     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
1011    
1012     {"description": "<a href=''/rel=''>",
1013     "input": "<a href=''/rel=''>",
1014     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
1015    
1016     {"description": "<a href=''rel=''/>",
1017     "input": "<a href=''rel=''/>",
1018 wakaba 1.24 "output": ["ParseError",
1019     ["StartTag", "a", {"href": "", "rel": ""}, true]]},
1020 wakaba 1.19
1021     {"description": "<link href=''rel=''/>",
1022     "input": "<link href=''rel=''/>",
1023 wakaba 1.24 "output": ["ParseError", ["StartTag", "link", {"href": "", "rel": ""}, true]]},
1024 wakaba 1.19
1025 wakaba 1.21 {"description": "permitted slash after a space",
1026     "input": "<br />",
1027 wakaba 1.24 "output": [["StartTag", "br", {}, true]]},
1028 wakaba 1.21
1029     {"description": "slash in tag after a space",
1030     "input": "<br / >",
1031     "output": ["ParseError", ["StartTag", "br", {}]]},
1032    
1033     {"description": "non-permitted slash after a space",
1034     "input": "<b />",
1035 wakaba 1.24 "output": [["StartTag", "b", {}, true]]},
1036 wakaba 1.21
1037     {"description": "end tag (non-)permitted slash after a space",
1038     "input": "</br />",
1039     "output": ["ParseError", ["EndTag", "br"]]},
1040    
1041     {"description": "permitted slash after attribute name",
1042     "input": "<br class/>",
1043 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
1044 wakaba 1.21
1045     {"description": "slash in tag after attribute name",
1046     "input": "<br class/ >",
1047     "output": ["ParseError", ["StartTag", "br", {"class": ""}]]},
1048    
1049     {"description": "non permitted slash after attribute name",
1050     "input": "<b class/>",
1051 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
1052 wakaba 1.21
1053     {"description": "end tag (non-)permitted slash after attribute name",
1054     "input": "</br class/>",
1055     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
1056    
1057     {"description": "permitted slash in after attribute name state",
1058     "input": "<br class />",
1059 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
1060 wakaba 1.21
1061     {"description": "non permitted slash in after attribute name state",
1062     "input": "<b class />",
1063 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
1064 wakaba 1.21
1065     {"description": "end tag (non-)permitted slash in after attribute name state",
1066     "input": "</br class />",
1067     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
1068    
1069 wakaba 1.19 {"description": "<a \">",
1070     "input": "<a \">",
1071     "output": ["ParseError", ["StartTag", "a", {"\"": ""}]]},
1072    
1073     {"description": "<a \"\">",
1074     "input": "<a \"\">",
1075     "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"": ""}]]},
1076    
1077     {"description": "<a '>",
1078     "input": "<a '>",
1079     "output": ["ParseError", ["StartTag", "a", {"'": ""}]]},
1080    
1081     {"description": "<a ''>",
1082     "input": "<a ''>",
1083     "output": ["ParseError", "ParseError", ["StartTag", "a", {"''": ""}]]},
1084    
1085     {"description": "<a a\">",
1086     "input": "<a a\">",
1087     "output": ["ParseError", ["StartTag", "a", {"a\"": ""}]]},
1088    
1089     {"description": "<a a'>",
1090     "input": "<a a'>",
1091     "output": ["ParseError", ["StartTag", "a", {"a'": ""}]]},
1092    
1093     {"description": "<a a\"'>",
1094     "input": "<a a\"'>",
1095     "output": ["ParseError", "ParseError", ["StartTag", "a", {"a\"'": ""}]]},
1096    
1097     {"description": "<a a=\">",
1098     "input": "<a a=\">",
1099     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
1100    
1101     {"description": "<a a='>",
1102     "input": "<a a='>",
1103     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
1104    
1105     {"description": "<a a=a\">",
1106     "input": "<a a=a\">",
1107     "output": ["ParseError", ["StartTag", "a", {"a": "a\""}]]},
1108    
1109     {"description": "<a a=a'>",
1110     "input": "<a a=a'>",
1111     "output": ["ParseError", ["StartTag", "a", {"a": "a'"}]]},
1112    
1113     {"description": "<a a=>",
1114     "input": "<a a=>",
1115 wakaba 1.25 "output": ["ParseError", ["StartTag", "a", {"a": ""}]]},
1116 wakaba 1.21
1117     {"description": "end tag attribute (before attribute, >)",
1118     "input": "</p class=\"\" >",
1119     "output": ["ParseError", ["EndTag", "p"]]},
1120    
1121     {"description": "end tag attribute (before attribute, EOF)",
1122     "input": "</p class=\"\" ",
1123     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1124    
1125     {"description": "end tag not closed (before attribute)",
1126     "input": "</p >",
1127     "output": [["EndTag", "p"]]},
1128    
1129     {"description": "end tag not closed (attribute name)",
1130     "input": "</p class",
1131     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1132    
1133     {"description": "end tag attribute (after attribute name)",
1134     "input": "</p class >",
1135     "output": ["ParseError", ["EndTag", "p"]]},
1136    
1137     {"description": "end tag attributes uc (after attribute name)",
1138     "input": "</p class Title>",
1139     "output": ["ParseError", ["EndTag", "p"]]},
1140    
1141     {"description": "end tag attributes lc (after attribute name)",
1142     "input": "</p class title>",
1143     "output": ["ParseError", ["EndTag", "p"]]},
1144    
1145     {"description": "end tag not closed (after attribute name)",
1146     "input": "</p class ",
1147     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1148    
1149     {"description": "end tag attribute (before attribute value)",
1150     "input": "</p class=>",
1151 wakaba 1.25 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1152 wakaba 1.21
1153     {"description": "end tag not closed (before attribute value)",
1154     "input": "</p class=",
1155     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1156    
1157     {"description": "end tag not closed (attribute value double quote)",
1158     "input": "</p class=\"",
1159     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1160    
1161     {"description": "end tag not closed (attribute value single quote)",
1162     "input": "</p class='",
1163     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1164    
1165     {"description": "end tag attribute (attribute value unquoted)",
1166     "input": "</p class=a>",
1167     "output": ["ParseError", ["EndTag", "p"]]},
1168    
1169     {"description": "end tag not closed (attribute value unquoted)",
1170     "input": "</p class=a",
1171     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1172    
1173     {"description": "end tag attribute (after attribute value double quoted)",
1174     "input": "</p class=\"a\" >",
1175     "output": ["ParseError", ["EndTag", "p"]]},
1176    
1177     {"description": "end tag attribute (after attribute value single quoted)",
1178     "input": "</p class='a' >",
1179     "output": ["ParseError", ["EndTag", "p"]]},
1180    
1181     {"description": "end tag not closed (after attribute value double quoted)",
1182     "input": "</p class=\"a\" ",
1183     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1184    
1185     {"description": "end tag not closed (after attribute value single quoted)",
1186     "input": "</p class='a' ",
1187 wakaba 1.23 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1188    
1189     {"description": "start tag not closed (after attribute value (quoted))",
1190     "input": "<p class='a'",
1191     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1192    
1193     {"description": "end tag not closed (after attribute value (quoted))",
1194     "input": "</p class='a'",
1195     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1196    
1197     {"description": "start tag not closed (self-closing start tag)",
1198     "input": "<p class='a'/",
1199     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1200    
1201     {"description": "end tag not closed (self-closing start tag)",
1202     "input": "</p/",
1203     "output": ["ParseError", ["EndTag", "p"]]},
1204    
1205     {"description": "end tag not closed (self-closing start tag)",
1206     "input": "</p class='a'/",
1207 wakaba 1.21 "output": ["ParseError", "ParseError", ["EndTag", "p"]]}
1208 wakaba 1.23
1209    
1210 wakaba 1.4
1211     ]}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24