/[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.26 - (hide annotations) (download)
Sat Sep 20 09:28:32 2008 UTC (16 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.25: +70 -3 lines
++ whatpm/t/ChangeLog	20 Sep 2008 09:28:04 -0000
	* tokenizer-test-1.test: Test data for U+000B are added (cf. HTML5
	revision 1738).

2008-09-20  Wakaba  <wakaba@suika.fam.cx>

++ whatpm/Whatpm/ChangeLog	20 Sep 2008 09:27:21 -0000
	* HTML.pm.src: U+000B is no longer a space character (HTML5
	revision 1738).

2008-09-20  Wakaba  <wakaba@suika.fam.cx>

1 wakaba 1.1 {"tests": [
2    
3 wakaba 1.3 {"description":"<!DOCTYPE",
4     "input":"<!DOCTYPE",
5 wakaba 1.9 "output":["ParseError","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.9 "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.9 "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.9 "output":["ParseError",["DOCTYPE", "Ht", null, null, false]]},
38 wakaba 1.3
39     {"description":"<!DOCTYPE hT",
40     "input":"<!DOCTYPE hT",
41 wakaba 1.9 "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.9 "output":[["DOCTYPE", "Ht", null, null, true]]},
50 wakaba 1.3
51     {"description":"<!DOCTYPE hT>",
52     "input":"<!DOCTYPE hT>",
53 wakaba 1.9 "output":[["DOCTYPE", "hT", null, null, true]]},
54 wakaba 1.3
55     {"description":"<!DOCTYPE hT>",
56     "input":"<!DOCTYPE hT>",
57 wakaba 1.9 "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.9 "output":["ParseError",["DOCTYPE", "Htm", null, null, false]]},
66 wakaba 1.3
67     {"description":"<!DOCTYPE hTM",
68     "input":"<!DOCTYPE hTM",
69 wakaba 1.9 "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.9 "output":[["DOCTYPE", "Htm", null, null, true]]},
78 wakaba 1.3
79     {"description":"<!DOCTYPE hTM>",
80     "input":"<!DOCTYPE hTM>",
81 wakaba 1.9 "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.21 {"description": "<!D>",
185     "input": "<!D>",
186     "output": ["ParseError", ["Comment", "D"]]},
187    
188     {"description": "<!DO>",
189     "input": "<!DO>",
190     "output": ["ParseError", ["Comment", "DO"]]},
191    
192     {"description": "<!DOc>",
193     "input": "<!DOc>",
194     "output": ["ParseError", ["Comment", "DOc"]]},
195    
196     {"description": "<!dOcT>",
197     "input": "<!dOcT>",
198     "output": ["ParseError", ["Comment", "dOcT"]]},
199    
200     {"description": "<!DoctY",
201     "input": "<!DoctY",
202     "output": ["ParseError", ["Comment", "DoctY"]]},
203    
204     {"description": "<!doctyp!>",
205     "input": "<!doctyp!>",
206     "output": ["ParseError", ["Comment", "doctyp!"]]},
207    
208     {"description": "<!Doc?>",
209     "input": "<!Doc?>",
210     "output": ["ParseError", ["Comment", "Doc?"]]},
211    
212     {"description": "<!Doc<type>>",
213     "input": "<!Doc<type>>",
214     "output": ["ParseError", ["Comment", "Doc<type"], ["Character", ">"]]},
215    
216     {"description": "<!DOCTYPE HTML P>",
217     "input": "<!DOCTYPE HTML P>",
218     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
219    
220     {"description": "<!DOCTYPE HTML Pa>",
221     "input": "<!DOCTYPE HTML Pa>",
222     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
223    
224     {"description": "<!DOCTYPE HTML Pua>",
225     "input": "<!DOCTYPE HTML Pua>",
226     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
227    
228     {"description": "<!DOCTYPE HTML PUB>",
229     "input": "<!DOCTYPE HTML PUB>",
230     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
231    
232     {"description": "<!DOCTYPE HTML pubL>",
233     "input": "<!DOCTYPE HTML pubL>",
234     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
235    
236     {"description": "<!DOCTYPE HTML publication>",
237     "input": "<!DOCTYPE HTML publication>",
238     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
239    
240     {"description": "<!DOCTYPE HTML publi>",
241     "input": "<!DOCTYPE HTML publi>",
242     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
243    
244     {"description": "<!DOCTYPE HTML PULICID>",
245     "input": "<!DOCTYPE HTML PUBLICID>",
246     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
247    
248     {"description": "<!DOCTYPE HTML S ''>",
249     "input": "<!DOCTYPE HTML S ''>",
250     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
251    
252     {"description": "<!DOCTYPE HTML sy>",
253     "input": "<!DOCTYPE HTML sy>",
254     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
255    
256     {"description": "<!DOCTYPE HTML sys ''>",
257     "input": "<!DOCTYPE HTML sys ''>",
258     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
259    
260     {"description": "<!DOCTYPE HTML syst>",
261     "input": "<!DOCTYPE HTML syst>",
262     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
263    
264     {"description": "<!DOCTYPE HTML SySter>",
265     "input": "<!DOCTYPE HTML SySter>",
266     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
267    
268     {"description": "<!DOCTYPE HTML systemid>",
269     "input": "<!DOCTYPE HTML systemid>",
270     "output": ["ParseError", ["DOCTYPE", "HTML", null, null, false]]},
271    
272 wakaba 1.14 {"description":"<!---x-->",
273     "input":"<!---x-->",
274     "output":[["Comment", "-x"]]},
275    
276     {"description":"<!----x-->",
277     "input":"<!----x-->",
278     "output":["ParseError", ["Comment", "--x"]]},
279    
280 wakaba 1.1 {"description":"non-PCDATA content model flag, start tag-like string",
281     "contentModelFlags":["PLAINTEXT","RCDATA","CDATA"],
282     "input":"<div>",
283 wakaba 1.2 "output":[["Character", "<div>"]]},
284    
285     {"description":"end tag followed by character data",
286     "contentModelFlags":["RCDATA","CDATA"],
287     "lastStartTag":"xxx",
288     "input":"AB</xxx>CD",
289 wakaba 1.4 "output":[["Character", "AB"],["EndTag", "xxx"],["Character", "CD"]]},
290 wakaba 1.1
291 wakaba 1.12 {"description":"NULL character reference",
292     "input":"&#0;",
293     "output":["ParseError", ["Character", "\uFFFD"]]},
294    
295     {"description":"NULL character reference",
296     "input":"&#x0;",
297     "output":["ParseError", ["Character", "\uFFFD"]]},
298    
299     {"description":"character entity &#13;",
300     "input":"&#13;",
301     "output":["ParseError", ["Character", "\u000A"]]},
302    
303     {"description":"character entity &#xd;",
304     "input":"&#xd;",
305     "output":["ParseError", ["Character", "\u000A"]]},
306    
307     {"description":"character entities &#13;&#10;",
308     "input":"&#13;&#10;",
309     "output":["ParseError", ["Character", "\u000A\u000A"]]},
310    
311     {"description":"character entity &#13; followed by a LF",
312     "input":"&#13;\u000A",
313     "output":["ParseError", ["Character", "\u000A\u000A"]]},
314    
315 wakaba 1.4 {"description":"c1 character references",
316     "input":"&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;",
317     "output":[
318     "ParseError", ["Character", "\u20AC"],
319     "ParseError", ["Character", "\uFFFD"],
320     "ParseError", ["Character", "\u201A"],
321     "ParseError", ["Character", "\u0192"],
322     "ParseError", ["Character", "\u201E"],
323     "ParseError", ["Character", "\u2026"],
324     "ParseError", ["Character", "\u2020"],
325     "ParseError", ["Character", "\u2021"]
326     ]},
327     {"description":"c1 character references",
328     "input":"&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;",
329     "output":[
330     "ParseError", ["Character", "\u02C6"],
331     "ParseError", ["Character", "\u2030"],
332     "ParseError", ["Character", "\u0160"],
333     "ParseError", ["Character", "\u2039"],
334     "ParseError", ["Character", "\u0152"],
335     "ParseError", ["Character", "\uFFFD"],
336     "ParseError", ["Character", "\u017D"],
337     "ParseError", ["Character", "\uFFFD"]
338     ]},
339     {"description":"c1 character references",
340     "input":"&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;",
341     "output":[
342     "ParseError", ["Character", "\uFFFD"],
343     "ParseError", ["Character", "\u2018"],
344     "ParseError", ["Character", "\u2019"],
345     "ParseError", ["Character", "\u201C"],
346     "ParseError", ["Character", "\u201D"],
347     "ParseError", ["Character", "\u2022"],
348     "ParseError", ["Character", "\u2013"],
349     "ParseError", ["Character", "\u2014"]
350     ]},
351     {"description":"c1 character references",
352     "input":"&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;",
353     "output":[
354     "ParseError", ["Character", "\u02DC"],
355     "ParseError", ["Character", "\u2122"],
356     "ParseError", ["Character", "\u0161"],
357     "ParseError", ["Character", "\u203A"],
358     "ParseError", ["Character", "\u0153"],
359     "ParseError", ["Character", "\uFFFD"],
360     "ParseError", ["Character", "\u017E"],
361     "ParseError", ["Character", "\u0178"]
362     ]},
363    
364     {"description":"c1 character references",
365     "input":"&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;",
366     "output":[
367     "ParseError", ["Character", "\u20AC"],
368     "ParseError", ["Character", "\uFFFD"],
369     "ParseError", ["Character", "\u201A"],
370     "ParseError", ["Character", "\u0192"],
371     "ParseError", ["Character", "\u201E"],
372     "ParseError", ["Character", "\u2026"],
373     "ParseError", ["Character", "\u2020"],
374     "ParseError", ["Character", "\u2021"]
375     ]},
376     {"description":"c1 character references",
377     "input":"&#x88;&#x89;&#x8a;&#x8b;&#x8c;&#x8d;&#x8e;&#x8f;",
378     "output":[
379     "ParseError", ["Character", "\u02C6"],
380     "ParseError", ["Character", "\u2030"],
381     "ParseError", ["Character", "\u0160"],
382     "ParseError", ["Character", "\u2039"],
383     "ParseError", ["Character", "\u0152"],
384     "ParseError", ["Character", "\uFFFD"],
385     "ParseError", ["Character", "\u017D"],
386     "ParseError", ["Character", "\uFFFD"]
387     ]},
388     {"description":"c1 character references",
389     "input":"&#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;",
390     "output":[
391     "ParseError", ["Character", "\uFFFD"],
392     "ParseError", ["Character", "\u2018"],
393     "ParseError", ["Character", "\u2019"],
394     "ParseError", ["Character", "\u201C"],
395     "ParseError", ["Character", "\u201D"],
396     "ParseError", ["Character", "\u2022"],
397     "ParseError", ["Character", "\u2013"],
398     "ParseError", ["Character", "\u2014"]
399     ]},
400     {"description":"c1 character references",
401     "input":"&#x98;&#x99;&#x9a;&#x9b;&#x9c;&#x9d;&#x9e;&#x9f;",
402     "output":[
403     "ParseError", ["Character", "\u02DC"],
404     "ParseError", ["Character", "\u2122"],
405     "ParseError", ["Character", "\u0161"],
406     "ParseError", ["Character", "\u203A"],
407     "ParseError", ["Character", "\u0153"],
408     "ParseError", ["Character", "\uFFFD"],
409     "ParseError", ["Character", "\u017E"],
410     "ParseError", ["Character", "\u0178"]
411 wakaba 1.5 ]},
412    
413 wakaba 1.16 {"description":"Numeric entity representing a Windows-1252 'codepoint'",
414     "input":"&#137;",
415     "output":["ParseError", ["Character", "\u2030"]]},
416    
417     {"description":"Hexadecimal entity representing a Windows-1252 'codepoint'",
418     "input":"&#x89;",
419     "output":["ParseError", ["Character", "\u2030"]]},
420    
421 wakaba 1.12 {"description":"surrogate character reference",
422     "input":"&#xD800;",
423     "output":["ParseError", ["Character", "\uFFFD"]]},
424    
425     {"description":"surrogate character references",
426     "input":"&#xD800;&#xDFFF;",
427     "output":["ParseError", ["Character", "\uFFFD"],
428     "ParseError", ["Character", "\uFFFD"]]},
429    
430     {"description":"surrogate character reference",
431     "input":"\uD800&#xDFFF;",
432 wakaba 1.22 "output":["ParseError", ["Character", "\uD800"],
433 wakaba 1.12 "ParseError", ["Character", "\uFFFD"]]},
434    
435     {"description":"surrogate character reference",
436     "input":"&#xD800;\uDFFF",
437 wakaba 1.22 "output":["ParseError", ["Character", "\uFFFD"],
438     "ParseError", ["Character", "\uDFFF"]]},
439 wakaba 1.12
440     {"description":"surrogate character reference",
441     "input":"&#55296;",
442     "output":["ParseError", ["Character", "\uFFFD"]]},
443    
444     {"description":"surrogate character reference",
445     "input":"&#57343;",
446     "output":["ParseError", ["Character", "\uFFFD"]]},
447    
448     {"description":"non-Unicode character reference",
449     "input":"&#1114112;",
450     "output":["ParseError", ["Character", "\uFFFD"]]},
451    
452     {"description":"non-Unicode character reference",
453     "input":"&#x110000;",
454     "output":["ParseError", ["Character", "\uFFFD"]]},
455    
456 wakaba 1.15 {"description":"Broken hcro (&#x)",
457     "input":"&#x",
458     "output":["ParseError", ["Character", "&#x"]]},
459    
460     {"description":"Broken hcro (&#X)",
461     "input":"&#X",
462     "output":["ParseError", ["Character", "&#X"]]},
463    
464     {"description":"Broken hcro (&#x;)",
465     "input":"&#x;",
466     "output":["ParseError", ["Character", "&#x;"]]},
467    
468     {"description":"Broken hcro (&#X;)",
469     "input":"&#X;",
470     "output":["ParseError", ["Character", "&#X;"]]},
471    
472     {"description":"Broken hcro (&#xg)",
473     "input":"&#xg",
474     "output":["ParseError", ["Character", "&#xg"]]},
475    
476     {"description":"Broken hcro (&#Xg)",
477     "input":"&#Xg",
478     "output":["ParseError", ["Character", "&#Xg"]]},
479    
480     {"description":"Broken hcro (&#xg;)",
481     "input":"&#xg;",
482     "output":["ParseError", ["Character", "&#xg;"]]},
483    
484     {"description":"Broken hcro (&#Xg;)",
485     "input":"&#Xg;",
486     "output":["ParseError", ["Character", "&#Xg;"]]},
487    
488     {"description":"Broken hcro (&#x!)",
489     "input":"&#x!",
490     "output":["ParseError", ["Character", "&#x!"]]},
491    
492     {"description":"Broken hcro (&#X!)",
493     "input":"&#X!",
494     "output":["ParseError", ["Character", "&#X!"]]},
495    
496 wakaba 1.5 {"description":"NULL character",
497     "input":"\u0000",
498 wakaba 1.6 "output":["ParseError",["Character", "\uFFFD"]]},
499    
500     {"description":"&TRADE;",
501     "input":"&TRADE;",
502 wakaba 1.7 "output":[["Character", "\u2122"]]},
503    
504     {"description":"&lang;",
505     "input":"&lang;",
506 wakaba 1.18 "output":[["Character", "\u27E8"]]},
507 wakaba 1.7
508     {"description":"&rang;",
509     "input":"&rang;",
510 wakaba 1.18 "output":[["Character", "\u27E9"]]},
511 wakaba 1.7
512     {"description":"&amp;;",
513     "input":"&amp;;",
514 wakaba 1.8 "output":[["Character", "&;"]]},
515    
516 wakaba 1.11 {"description":"&HT",
517     "input":"&\u0009",
518     "output":[["Character", "&\u0009"]]},
519    
520     {"description":"&LF",
521     "input":"&\u000A",
522     "output":[["Character", "&\u000A"]]},
523    
524 wakaba 1.26 {"description": "&VT",
525     "input": "&\u000B",
526     "output": ["ParseError", ["Character", "&\u000B"]]},
527 wakaba 1.11
528     {"description":"&FF",
529     "input":"&\u000C",
530     "output":[["Character", "&\u000C"]]},
531    
532     {"description":"&SP",
533     "input":"& ",
534     "output":[["Character", "& "]]},
535    
536     {"description":"&<",
537     "input":"&<",
538 wakaba 1.12 "output":[["Character", "&"], "ParseError", ["Character", "<"]]},
539 wakaba 1.11
540     {"description":"&<p>",
541     "input":"&<p>",
542     "output":[["Character", "&"], ["StartTag", "p", {}]]},
543    
544     {"description":"&&",
545     "input":"&&",
546     "output":[["Character", "&&"]]},
547    
548     {"description":"&&amp;",
549     "input":"&&amp;",
550     "output":[["Character", "&&"]]},
551    
552     {"description":"&",
553     "input":"&",
554     "output":[["Character", "&"]]},
555 wakaba 1.12
556     {"description":"named character reference w/o refc",
557     "input":"&ampabc",
558     "output":["ParseError", ["Character", "&abc"]]},
559    
560     {"description":"named character reference",
561     "input":"&amp;abc",
562     "output":[["Character", "&abc"]]},
563    
564     {"description":"named character reference w/o refc",
565     "input":"&abc",
566     "output":["ParseError", ["Character", "&abc"]]},
567    
568     {"description":"unknown named character reference",
569     "input":"&abc;",
570     "output":["ParseError", ["Character", "&abc;"]]},
571    
572     {"description":"named character reference w/o refc in attr",
573     "input":"<a href='&ampabc'>",
574     "output":["ParseError", ["StartTag", "a", {"href": "&ampabc"}]]},
575    
576     {"description":"named character reference in attr",
577     "input":"<a href='&amp;abc'>",
578     "output":[["StartTag", "a", {"href": "&abc"}]]},
579    
580     {"description":"named character reference w/o refc in attr",
581     "input":"<a href='&abc'>",
582     "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]},
583    
584     {"description":"unknown named character reference in attr",
585     "input":"<a href='&abc;'>",
586     "output":["ParseError", ["StartTag", "a", {"href": "&abc;"}]]},
587 wakaba 1.15
588     {"description":"entity w/o refc at the end of unterminated attribute value",
589     "input":"<a href='&COPY",
590     "output":["ParseError", "ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
591    
592     {"description":"entity w/o refc at the end of attribute value",
593     "input":"<a href='&COPY'>",
594     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
595    
596     {"description":"entity w/refc at the end of attribute value",
597     "input":"<a href='&COPY;'>",
598     "output":[["StartTag", "a", {"href": "\u00A9"}]]},
599    
600     {"description":"entity w/o refc href='&COPY!'",
601     "input":"<a href='&COPY!'>",
602     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9!"}]]},
603    
604     {"description":"entity w/o refc href='&COPY=ok'",
605     "input":"<a href='&COPY=ok'>",
606     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9=ok"}]]},
607    
608     {"description":"entity w/o refc href='&COPYright'",
609     "input":"<a href='&COPYright'>",
610     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright"}]]},
611    
612     {"description":"entity w/o refc href='&COPYright;'",
613     "input":"<a href='&COPYright;'>",
614     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright;"}]]},
615    
616     {"description":"entity w/o refc href='&COPYrightc'",
617     "input":"<a href='&COPYrightc'>",
618     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightc"}]]},
619    
620     {"description":"entity w/o refc href='&COPYrightcd'",
621     "input":"<a href='&COPYrightcd'>",
622     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightcd"}]]},
623 wakaba 1.11
624 wakaba 1.8 {"description":"cdata end tag containing <",
625     "contentModelFlags":["RCDATA","CDATA"],
626     "lastStartTag":"xxx",
627     "input":"</xxx<div>",
628 wakaba 1.10 "output":[["Character", "</xxx<div>"]]},
629 wakaba 1.8
630 wakaba 1.26 {"description":"cdata end tag containing VT",
631     "contentModelFlags":["RCDATA","CDATA"],
632     "lastStartTag":"xxx",
633     "input":"</xxx\u000Babc",
634     "output":[["Character", "</xxx\u000Babc"]]},
635    
636 wakaba 1.8 {"description":"< in tag name state",
637     "input":"<p<div>",
638     "output":[["StartTag", "p<div", {}]]},
639    
640 wakaba 1.26 {"description":"VT in tag name state",
641     "input":"<p\u000ba>",
642     "output":[["StartTag", "p\u000Ba", {}]]},
643    
644 wakaba 1.8 {"description":"< in before attribute name state",
645     "input":"<p <div>",
646     "output":[["StartTag", "p", {"<div":""}]]},
647    
648 wakaba 1.26 {"description":"VT in before attribute name state",
649     "input":"<p \u000bx>",
650     "output":[["StartTag", "p", {"\u000Bx":""}]]},
651    
652 wakaba 1.8 {"description":"< in attribute name state",
653     "input":"<p align<div>",
654     "output":[["StartTag", "p", {"align<div":""}]]},
655    
656 wakaba 1.26 {"description":"VT in attribute name state",
657     "input":"<p a\u000bc>",
658     "output":[["StartTag", "p", {"a\u000bc":""}]]},
659    
660 wakaba 1.8 {"description":"< in after attribute name state",
661     "input":"<p align <div>",
662     "output":[["StartTag", "p", {"align":"","<div":""}]]},
663    
664 wakaba 1.26 {"description":"VT in after attribute name state",
665     "input":"<p a \u000bb>",
666     "output":[["StartTag", "p", {"a":"","\u000bb":""}]]},
667    
668 wakaba 1.8 {"description":"< in before attribute value state",
669     "input":"<p align=<div>",
670     "output":[["StartTag", "p", {"align":"<div"}]]},
671    
672 wakaba 1.26 {"description":"VT in before attribute value state",
673     "input":"<p a=\u000bc>",
674     "output":[["StartTag", "p", {"a":"\u000bc"}]]},
675    
676 wakaba 1.8 {"description":"< in attribute value (unquoted) state",
677     "input":"<p align=left<div>",
678     "output":[["StartTag", "p", {"align":"left<div"}]]},
679    
680 wakaba 1.26 {"description":"VT in attribute value (unquoted) state",
681     "input":"<p align=left\u000bc>",
682     "output":[["StartTag", "p", {"align":"left\u000bc"}]]},
683    
684 wakaba 1.8 {"description":"< in attribute value (single-unquoted) state",
685     "input":"<p align='left<div>",
686     "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
687    
688     {"description":"< in attribute value (double-unquoted) state",
689     "input":"<p align=\u0022left<div>",
690 wakaba 1.17 "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
691 wakaba 1.26
692     {"description": "< in after attribute value (quoted) state",
693     "input": "<p a=\"b\"\u000bc>",
694     "output": ["ParseError", ["StartTag", "p", {"a":"b", "\u000bc": ""}]]},
695 wakaba 1.17
696     {"description":"/''b=\"\"",
697     "input": "<a /''b=\"\">",
698 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
699     ["StartTag", "a", {"''b": ""}]]},
700 wakaba 1.17
701     {"description":"/\"\"b=\"\"",
702     "input": "<a /\"\"b=\"\">",
703 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
704     ["StartTag", "a", {"\"\"b": ""}]]},
705 wakaba 1.17
706     {"description":"\"b=\"\"",
707     "input": "<a \"b=\"\">",
708 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\"b": ""}]]},
709 wakaba 1.17
710     {"description":"\"\"b=\"\"",
711     "input": "<a \"\"b=\"\">",
712 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"b": ""}]]},
713 wakaba 1.17
714     {"description":"'b=\"\"",
715     "input": "<a 'b=\"\">",
716 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"'b": ""}]]},
717 wakaba 1.17
718     {"description":"''b=\"\"",
719     "input": "<a ''b=\"\">",
720 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"''b": ""}]]},
721 wakaba 1.17
722     {"description":"/b=\"\"",
723     "input": "<a /b=\"\">",
724     "output": ["ParseError", ["StartTag", "a", {"b": ""}]]},
725    
726     {"description":"b/=\"\"",
727     "input": "<a b/=\"\">",
728 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError", "ParseError",
729     ["StartTag", "a", {"b": "", "=\"\"": ""}]]},
730 wakaba 1.17
731     {"description":"b/c=\"\"",
732     "input": "<a b/c=\"\">",
733     "output": ["ParseError", ["StartTag", "a", {"b": "", "c": ""}]]},
734    
735     {"description":"bc[NULL]=\"\"",
736     "input": "<a bc\u0000=\"\">",
737     "output": ["ParseError", ["StartTag", "a", {"bc\uFFFD": ""}]]},
738    
739     {"description":"b[NULL]c=\"\"",
740     "input": "<a b\u0000c=\"\">",
741     "output": ["ParseError", ["StartTag", "a", {"b\uFFFDc": ""}]]},
742    
743     {"description":"[NULL]bc=\"\"",
744     "input": "<a \u0000bc=\"\">",
745 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\uFFFDbc": ""}]]},
746    
747     {"description": "<span ===>",
748     "input": "<span ===>",
749     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=": "="}]]},
750    
751     {"description": "<span a==>",
752     "input": "<span a==>",
753     "output": ["ParseError", ["StartTag", "span", {"a": "="}]]},
754    
755     {"description": "<span ==a>",
756     "input": "<span ==a>",
757     "output": ["ParseError", ["StartTag", "span", {"=": "a"}]]},
758    
759     {"description": "<span a=b=>",
760     "input": "<span a=b=>",
761     "output": ["ParseError", ["StartTag", "span", {"a": "b="}]]},
762    
763     {"description": "<span =x\"=\"x>",
764     "input": "<span =x\"=\"x>",
765     "output": ["ParseError", "ParseError", "ParseError",
766     ["StartTag", "span", {"=x\"": "x>"}]]},
767    
768     {"description": "<span =x\"=\"x\">",
769     "input": "<span =x\"=\"x\">",
770     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=x\"": "x"}]]},
771    
772 wakaba 1.25 {"description": "bad attribute name (HTML5 revision 2123), '",
773     "input": "<foo bar '>",
774     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'": ""}]]},
775    
776     {"description": "bad attribute name (HTML5 revision 2123), \"",
777     "input": "<foo bar \">",
778     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"": ""}]]},
779    
780     {"description": "bad attribute name (HTML5 revision 2123), 'x",
781     "input": "<foo bar 'x>",
782     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'x": ""}]]},
783    
784     {"description": "bad attribute name (HTML5 revision 2123), \"x",
785     "input": "<foo bar \"x>",
786     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"x": ""}]]},
787    
788     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
789     "input": "<foo bar=>",
790     "output": ["ParseError", ["StartTag", "foo", {"bar": ""}]]},
791    
792     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
793     "input": "</foo bar=>",
794     "output": ["ParseError", "ParseError", ["EndTag", "foo"]]},
795    
796     {"description": "empty unquoted attribute value followed by another attr",
797     "input": "<foo bar= baz=>",
798     "output": ["ParseError", ["StartTag", "foo", {"bar": "baz="}]]},
799    
800 wakaba 1.19 {"description":"&\"",
801     "input": "&\"",
802     "output": ["ParseError", ["Character", "&\""]]},
803    
804     {"description":"&'",
805     "input": "&'",
806     "output": ["ParseError", ["Character", "&'"]]},
807    
808     {"description":"<a href=\"&\">",
809     "input": "<a href=\"&\">",
810     "output": [["StartTag", "a", {"href": "&"}]]},
811    
812     {"description":"<a href=\"&'\">",
813     "input": "<a href=\"&'\">",
814     "output": ["ParseError", ["StartTag", "a", {"href": "&'"}]]},
815    
816     {"description":"<a href='&'>",
817     "input": "<a href='&'>",
818     "output": [["StartTag", "a", {"href": "&"}]]},
819    
820     {"description":"<a href='&\"'>",
821     "input": "<a href='&\"'>",
822     "output": ["ParseError", ["StartTag", "a", {"href": "&\""}]]},
823    
824     {"description":"<a href=&\">",
825     "input": "<a href=&\">",
826     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&\""}]]},
827    
828     {"description":"<a href=&'>",
829     "input": "<a href=&'>",
830     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&'"}]]},
831    
832     {"description": "<!->-->",
833     "input": "<!->-->",
834     "output": ["ParseError", ["Comment", "-"], ["Character", "-->"]]},
835    
836     {"description": "<!!--->-->",
837     "input": "<!!--->-->",
838     "output": ["ParseError", ["Comment", "!---"], ["Character", "-->"]]},
839    
840     {"description": "<a href=''rel=''>",
841     "input": "<a href=''rel=''>",
842     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
843    
844     {"description": "<a href=\"\"rel=''>",
845     "input": "<a href=\"\"rel=''>",
846     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
847    
848     {"description": "<a href=''/rel=''>",
849     "input": "<a href=''/rel=''>",
850     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
851    
852     {"description": "<a href=''rel=''/>",
853     "input": "<a href=''rel=''/>",
854 wakaba 1.24 "output": ["ParseError",
855     ["StartTag", "a", {"href": "", "rel": ""}, true]]},
856 wakaba 1.19
857     {"description": "<link href=''rel=''/>",
858     "input": "<link href=''rel=''/>",
859 wakaba 1.24 "output": ["ParseError", ["StartTag", "link", {"href": "", "rel": ""}, true]]},
860 wakaba 1.19
861 wakaba 1.21 {"description": "permitted slash after a space",
862     "input": "<br />",
863 wakaba 1.24 "output": [["StartTag", "br", {}, true]]},
864 wakaba 1.21
865     {"description": "slash in tag after a space",
866     "input": "<br / >",
867     "output": ["ParseError", ["StartTag", "br", {}]]},
868    
869     {"description": "non-permitted slash after a space",
870     "input": "<b />",
871 wakaba 1.24 "output": [["StartTag", "b", {}, true]]},
872 wakaba 1.21
873     {"description": "end tag (non-)permitted slash after a space",
874     "input": "</br />",
875     "output": ["ParseError", ["EndTag", "br"]]},
876    
877     {"description": "permitted slash after attribute name",
878     "input": "<br class/>",
879 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
880 wakaba 1.21
881     {"description": "slash in tag after attribute name",
882     "input": "<br class/ >",
883     "output": ["ParseError", ["StartTag", "br", {"class": ""}]]},
884    
885     {"description": "non permitted slash after attribute name",
886     "input": "<b class/>",
887 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
888 wakaba 1.21
889     {"description": "end tag (non-)permitted slash after attribute name",
890     "input": "</br class/>",
891     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
892    
893     {"description": "permitted slash in after attribute name state",
894     "input": "<br class />",
895 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
896 wakaba 1.21
897     {"description": "non permitted slash in after attribute name state",
898     "input": "<b class />",
899 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
900 wakaba 1.21
901     {"description": "end tag (non-)permitted slash in after attribute name state",
902     "input": "</br class />",
903     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
904    
905 wakaba 1.19 {"description": "<a \">",
906     "input": "<a \">",
907     "output": ["ParseError", ["StartTag", "a", {"\"": ""}]]},
908    
909     {"description": "<a \"\">",
910     "input": "<a \"\">",
911     "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"": ""}]]},
912    
913     {"description": "<a '>",
914     "input": "<a '>",
915     "output": ["ParseError", ["StartTag", "a", {"'": ""}]]},
916    
917     {"description": "<a ''>",
918     "input": "<a ''>",
919     "output": ["ParseError", "ParseError", ["StartTag", "a", {"''": ""}]]},
920    
921     {"description": "<a a\">",
922     "input": "<a a\">",
923     "output": ["ParseError", ["StartTag", "a", {"a\"": ""}]]},
924    
925     {"description": "<a a'>",
926     "input": "<a a'>",
927     "output": ["ParseError", ["StartTag", "a", {"a'": ""}]]},
928    
929     {"description": "<a a\"'>",
930     "input": "<a a\"'>",
931     "output": ["ParseError", "ParseError", ["StartTag", "a", {"a\"'": ""}]]},
932    
933     {"description": "<a a=\">",
934     "input": "<a a=\">",
935     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
936    
937     {"description": "<a a='>",
938     "input": "<a a='>",
939     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
940    
941     {"description": "<a a=a\">",
942     "input": "<a a=a\">",
943     "output": ["ParseError", ["StartTag", "a", {"a": "a\""}]]},
944    
945     {"description": "<a a=a'>",
946     "input": "<a a=a'>",
947     "output": ["ParseError", ["StartTag", "a", {"a": "a'"}]]},
948    
949     {"description": "<a a=>",
950     "input": "<a a=>",
951 wakaba 1.25 "output": ["ParseError", ["StartTag", "a", {"a": ""}]]},
952 wakaba 1.21
953     {"description": "end tag attribute (before attribute, >)",
954     "input": "</p class=\"\" >",
955     "output": ["ParseError", ["EndTag", "p"]]},
956    
957     {"description": "end tag attribute (before attribute, EOF)",
958     "input": "</p class=\"\" ",
959     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
960    
961     {"description": "end tag not closed (before attribute)",
962     "input": "</p >",
963     "output": [["EndTag", "p"]]},
964    
965     {"description": "end tag not closed (attribute name)",
966     "input": "</p class",
967     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
968    
969     {"description": "end tag attribute (after attribute name)",
970     "input": "</p class >",
971     "output": ["ParseError", ["EndTag", "p"]]},
972    
973     {"description": "end tag attributes uc (after attribute name)",
974     "input": "</p class Title>",
975     "output": ["ParseError", ["EndTag", "p"]]},
976    
977     {"description": "end tag attributes lc (after attribute name)",
978     "input": "</p class title>",
979     "output": ["ParseError", ["EndTag", "p"]]},
980    
981     {"description": "end tag not closed (after attribute name)",
982     "input": "</p class ",
983     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
984    
985     {"description": "end tag attribute (before attribute value)",
986     "input": "</p class=>",
987 wakaba 1.25 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
988 wakaba 1.21
989     {"description": "end tag not closed (before attribute value)",
990     "input": "</p class=",
991     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
992    
993     {"description": "end tag not closed (attribute value double quote)",
994     "input": "</p class=\"",
995     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
996    
997     {"description": "end tag not closed (attribute value single quote)",
998     "input": "</p class='",
999     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1000    
1001     {"description": "end tag attribute (attribute value unquoted)",
1002     "input": "</p class=a>",
1003     "output": ["ParseError", ["EndTag", "p"]]},
1004    
1005     {"description": "end tag not closed (attribute value unquoted)",
1006     "input": "</p class=a",
1007     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1008    
1009     {"description": "end tag attribute (after attribute value double quoted)",
1010     "input": "</p class=\"a\" >",
1011     "output": ["ParseError", ["EndTag", "p"]]},
1012    
1013     {"description": "end tag attribute (after attribute value single quoted)",
1014     "input": "</p class='a' >",
1015     "output": ["ParseError", ["EndTag", "p"]]},
1016    
1017     {"description": "end tag not closed (after attribute value double quoted)",
1018     "input": "</p class=\"a\" ",
1019     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1020    
1021     {"description": "end tag not closed (after attribute value single quoted)",
1022     "input": "</p class='a' ",
1023 wakaba 1.23 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1024    
1025     {"description": "start tag not closed (after attribute value (quoted))",
1026     "input": "<p class='a'",
1027     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1028    
1029     {"description": "end tag not closed (after attribute value (quoted))",
1030     "input": "</p class='a'",
1031     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1032    
1033     {"description": "start tag not closed (self-closing start tag)",
1034     "input": "<p class='a'/",
1035     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1036    
1037     {"description": "end tag not closed (self-closing start tag)",
1038     "input": "</p/",
1039     "output": ["ParseError", ["EndTag", "p"]]},
1040    
1041     {"description": "end tag not closed (self-closing start tag)",
1042     "input": "</p class='a'/",
1043 wakaba 1.21 "output": ["ParseError", "ParseError", ["EndTag", "p"]]}
1044 wakaba 1.23
1045    
1046 wakaba 1.4
1047     ]}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24