/[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.27 - (hide annotations) (download)
Mon Sep 22 06:04:29 2008 UTC (16 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.26: +120 -0 lines
++ whatpm/t/ChangeLog	22 Sep 2008 05:59:48 -0000
	* tokenizer-test-1.test: Test data on invalid character references
	are added (cf. HTML5 revision 2138).

	* tokenizer-test-2.dat: Test data on U+000B are updated (HTML5
	revision 2138).

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

++ whatpm/Whatpm/ChangeLog	22 Sep 2008 06:02:01 -0000
2008-09-22  Wakaba  <wakaba@suika.fam.cx>

	* HTML.pm.src: Character references for non-space C0 characters,
	including U+000B VT, DEL character, noncharacter code points, are
	now converted to the U+FFFD character (cf. HTML5 revision 2138).

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 wakaba 1.27 {"description": "U+0001 character reference",
300     "input": "&#x1;",
301     "output": ["ParseError", ["Character", "\uFFFD"]]},
302    
303     {"description": "U+0002 character reference",
304     "input": "&#x2;",
305     "output": ["ParseError", ["Character", "\uFFFD"]]},
306    
307     {"description": "U+0008 character reference",
308     "input": "&#x8;",
309     "output": ["ParseError", ["Character", "\uFFFD"]]},
310    
311     {"description": "U+0008 decimal character reference",
312     "input": "&#8;",
313     "output": ["ParseError", ["Character", "\uFFFD"]]},
314    
315     {"description": "U+0009 character reference",
316     "input": "&#x9;",
317     "output": [["Character", "\u0009"]]},
318    
319     {"description": "U+000A character reference",
320     "input": "&#xa;",
321     "output": [["Character", "\u000A"]]},
322    
323 wakaba 1.12 {"description":"character entity &#13;",
324     "input":"&#13;",
325     "output":["ParseError", ["Character", "\u000A"]]},
326    
327     {"description":"character entity &#xd;",
328     "input":"&#xd;",
329     "output":["ParseError", ["Character", "\u000A"]]},
330    
331     {"description":"character entities &#13;&#10;",
332     "input":"&#13;&#10;",
333     "output":["ParseError", ["Character", "\u000A\u000A"]]},
334    
335     {"description":"character entity &#13; followed by a LF",
336     "input":"&#13;\u000A",
337     "output":["ParseError", ["Character", "\u000A\u000A"]]},
338    
339 wakaba 1.27 {"description": "U+000B character reference",
340     "input": "&#xb;",
341     "output": ["ParseError", ["Character", "\uFFFD"]]},
342    
343     {"description": "U+000B decimal character reference",
344     "input": "&#11;",
345     "output": ["ParseError", ["Character", "\uFFFD"]]},
346    
347     {"description": "U+000C character reference",
348     "input": "&#xc;",
349     "output": [["Character", "\u000C"]]},
350    
351     {"description": "U+000E character reference",
352     "input": "&#xe;",
353     "output": ["ParseError", ["Character", "\uFFFD"]]},
354    
355     {"description": "U+000F character reference",
356     "input": "&#xF;",
357     "output": ["ParseError", ["Character", "\uFFFD"]]},
358    
359     {"description": "U+000F decimal character reference",
360     "input": "&#15;",
361     "output": ["ParseError", ["Character", "\uFFFD"]]},
362    
363     {"description": "U+0010 character reference",
364     "input": "&#x10;",
365     "output": ["ParseError", ["Character", "\uFFFD"]]},
366    
367     {"description": "U+001B character reference",
368     "input": "&#x1b;",
369     "output": ["ParseError", ["Character", "\uFFFD"]]},
370    
371     {"description": "U+001F character reference",
372     "input": "&#x1F;",
373     "output": ["ParseError", ["Character", "\uFFFD"]]},
374    
375     {"description": "U+0020 character reference",
376     "input": "&#x20;",
377     "output": [["Character", " "]]},
378    
379     {"description": "U+007F character reference",
380     "input": "&#x7f;",
381     "output": ["ParseError", ["Character", "\uFFFD"]]},
382    
383 wakaba 1.4 {"description":"c1 character references",
384     "input":"&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;",
385     "output":[
386     "ParseError", ["Character", "\u20AC"],
387     "ParseError", ["Character", "\uFFFD"],
388     "ParseError", ["Character", "\u201A"],
389     "ParseError", ["Character", "\u0192"],
390     "ParseError", ["Character", "\u201E"],
391     "ParseError", ["Character", "\u2026"],
392     "ParseError", ["Character", "\u2020"],
393     "ParseError", ["Character", "\u2021"]
394     ]},
395     {"description":"c1 character references",
396     "input":"&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;",
397     "output":[
398     "ParseError", ["Character", "\u02C6"],
399     "ParseError", ["Character", "\u2030"],
400     "ParseError", ["Character", "\u0160"],
401     "ParseError", ["Character", "\u2039"],
402     "ParseError", ["Character", "\u0152"],
403     "ParseError", ["Character", "\uFFFD"],
404     "ParseError", ["Character", "\u017D"],
405     "ParseError", ["Character", "\uFFFD"]
406     ]},
407     {"description":"c1 character references",
408     "input":"&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;",
409     "output":[
410     "ParseError", ["Character", "\uFFFD"],
411     "ParseError", ["Character", "\u2018"],
412     "ParseError", ["Character", "\u2019"],
413     "ParseError", ["Character", "\u201C"],
414     "ParseError", ["Character", "\u201D"],
415     "ParseError", ["Character", "\u2022"],
416     "ParseError", ["Character", "\u2013"],
417     "ParseError", ["Character", "\u2014"]
418     ]},
419     {"description":"c1 character references",
420     "input":"&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;",
421     "output":[
422     "ParseError", ["Character", "\u02DC"],
423     "ParseError", ["Character", "\u2122"],
424     "ParseError", ["Character", "\u0161"],
425     "ParseError", ["Character", "\u203A"],
426     "ParseError", ["Character", "\u0153"],
427     "ParseError", ["Character", "\uFFFD"],
428     "ParseError", ["Character", "\u017E"],
429     "ParseError", ["Character", "\u0178"]
430     ]},
431    
432     {"description":"c1 character references",
433     "input":"&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;",
434     "output":[
435     "ParseError", ["Character", "\u20AC"],
436     "ParseError", ["Character", "\uFFFD"],
437     "ParseError", ["Character", "\u201A"],
438     "ParseError", ["Character", "\u0192"],
439     "ParseError", ["Character", "\u201E"],
440     "ParseError", ["Character", "\u2026"],
441     "ParseError", ["Character", "\u2020"],
442     "ParseError", ["Character", "\u2021"]
443     ]},
444     {"description":"c1 character references",
445     "input":"&#x88;&#x89;&#x8a;&#x8b;&#x8c;&#x8d;&#x8e;&#x8f;",
446     "output":[
447     "ParseError", ["Character", "\u02C6"],
448     "ParseError", ["Character", "\u2030"],
449     "ParseError", ["Character", "\u0160"],
450     "ParseError", ["Character", "\u2039"],
451     "ParseError", ["Character", "\u0152"],
452     "ParseError", ["Character", "\uFFFD"],
453     "ParseError", ["Character", "\u017D"],
454     "ParseError", ["Character", "\uFFFD"]
455     ]},
456     {"description":"c1 character references",
457     "input":"&#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;",
458     "output":[
459     "ParseError", ["Character", "\uFFFD"],
460     "ParseError", ["Character", "\u2018"],
461     "ParseError", ["Character", "\u2019"],
462     "ParseError", ["Character", "\u201C"],
463     "ParseError", ["Character", "\u201D"],
464     "ParseError", ["Character", "\u2022"],
465     "ParseError", ["Character", "\u2013"],
466     "ParseError", ["Character", "\u2014"]
467     ]},
468     {"description":"c1 character references",
469     "input":"&#x98;&#x99;&#x9a;&#x9b;&#x9c;&#x9d;&#x9e;&#x9f;",
470     "output":[
471     "ParseError", ["Character", "\u02DC"],
472     "ParseError", ["Character", "\u2122"],
473     "ParseError", ["Character", "\u0161"],
474     "ParseError", ["Character", "\u203A"],
475     "ParseError", ["Character", "\u0153"],
476     "ParseError", ["Character", "\uFFFD"],
477     "ParseError", ["Character", "\u017E"],
478     "ParseError", ["Character", "\u0178"]
479 wakaba 1.5 ]},
480    
481 wakaba 1.16 {"description":"Numeric entity representing a Windows-1252 'codepoint'",
482     "input":"&#137;",
483     "output":["ParseError", ["Character", "\u2030"]]},
484    
485     {"description":"Hexadecimal entity representing a Windows-1252 'codepoint'",
486     "input":"&#x89;",
487     "output":["ParseError", ["Character", "\u2030"]]},
488    
489 wakaba 1.12 {"description":"surrogate character reference",
490     "input":"&#xD800;",
491     "output":["ParseError", ["Character", "\uFFFD"]]},
492    
493     {"description":"surrogate character references",
494     "input":"&#xD800;&#xDFFF;",
495     "output":["ParseError", ["Character", "\uFFFD"],
496     "ParseError", ["Character", "\uFFFD"]]},
497    
498     {"description":"surrogate character reference",
499     "input":"\uD800&#xDFFF;",
500 wakaba 1.22 "output":["ParseError", ["Character", "\uD800"],
501 wakaba 1.12 "ParseError", ["Character", "\uFFFD"]]},
502    
503     {"description":"surrogate character reference",
504     "input":"&#xD800;\uDFFF",
505 wakaba 1.22 "output":["ParseError", ["Character", "\uFFFD"],
506     "ParseError", ["Character", "\uDFFF"]]},
507 wakaba 1.12
508     {"description":"surrogate character reference",
509     "input":"&#55296;",
510     "output":["ParseError", ["Character", "\uFFFD"]]},
511    
512     {"description":"surrogate character reference",
513     "input":"&#57343;",
514     "output":["ParseError", ["Character", "\uFFFD"]]},
515 wakaba 1.27
516     {"description": "U+FDD0 character reference",
517     "input": "&#xfdd0;",
518     "output": ["ParseError", ["Character", "\uFFFD"]]},
519    
520     {"description": "U+FDD0 decimal character reference",
521     "input": "&#64976;",
522     "output": ["ParseError", ["Character", "\uFFFD"]]},
523    
524     {"description": "U+FDDF character reference",
525     "input": "&#xfddf;",
526     "output": ["ParseError", ["Character", "\uFFFD"]]},
527    
528     {"description": "U+FFFE character reference",
529     "input": "&#xfffe;",
530     "output": ["ParseError", ["Character", "\uFFFD"]]},
531    
532     {"description": "U+FFFE decimal character reference",
533     "input": "&#65534;",
534     "output": ["ParseError", ["Character", "\uFFFD"]]},
535    
536     {"description": "U+FFFF character reference",
537     "input": "&#xffff;",
538     "output": ["ParseError", ["Character", "\uFFFD"]]},
539    
540     {"description": "U+FFFF decimal character reference",
541     "input": "&#65535;",
542     "output": ["ParseError", ["Character", "\uFFFD"]]},
543    
544     {"description": "U+1FFFE character reference",
545     "input": "&#x1fffe;",
546     "output": ["ParseError", ["Character", "\uFFFD"]]},
547    
548     {"description": "U+1FFFF character reference",
549     "input": "&#x1ffff;",
550     "output": ["ParseError", ["Character", "\uFFFD"]]},
551    
552     {"description": "U+10FFFE character reference",
553     "input": "&#x10fffe;",
554     "output": ["ParseError", ["Character", "\uFFFD"]]},
555    
556     {"description": "U+10FFFE decimal character reference",
557     "input": "&#1114110;",
558     "output": ["ParseError", ["Character", "\uFFFD"]]},
559    
560     {"description": "U+10FFFF character reference",
561     "input": "&#x10FFFF;",
562     "output": ["ParseError", ["Character", "\uFFFD"]]},
563    
564     {"description": "U+10FFFF decimal character reference",
565     "input": "&#1114111;",
566     "output": ["ParseError", ["Character", "\uFFFD"]]},
567 wakaba 1.12
568     {"description":"non-Unicode character reference",
569     "input":"&#1114112;",
570     "output":["ParseError", ["Character", "\uFFFD"]]},
571    
572     {"description":"non-Unicode character reference",
573     "input":"&#x110000;",
574     "output":["ParseError", ["Character", "\uFFFD"]]},
575    
576 wakaba 1.15 {"description":"Broken hcro (&#x)",
577     "input":"&#x",
578     "output":["ParseError", ["Character", "&#x"]]},
579    
580     {"description":"Broken hcro (&#X)",
581     "input":"&#X",
582     "output":["ParseError", ["Character", "&#X"]]},
583    
584     {"description":"Broken hcro (&#x;)",
585     "input":"&#x;",
586     "output":["ParseError", ["Character", "&#x;"]]},
587    
588     {"description":"Broken hcro (&#X;)",
589     "input":"&#X;",
590     "output":["ParseError", ["Character", "&#X;"]]},
591    
592     {"description":"Broken hcro (&#xg)",
593     "input":"&#xg",
594     "output":["ParseError", ["Character", "&#xg"]]},
595    
596     {"description":"Broken hcro (&#Xg)",
597     "input":"&#Xg",
598     "output":["ParseError", ["Character", "&#Xg"]]},
599    
600     {"description":"Broken hcro (&#xg;)",
601     "input":"&#xg;",
602     "output":["ParseError", ["Character", "&#xg;"]]},
603    
604     {"description":"Broken hcro (&#Xg;)",
605     "input":"&#Xg;",
606     "output":["ParseError", ["Character", "&#Xg;"]]},
607    
608     {"description":"Broken hcro (&#x!)",
609     "input":"&#x!",
610     "output":["ParseError", ["Character", "&#x!"]]},
611    
612     {"description":"Broken hcro (&#X!)",
613     "input":"&#X!",
614     "output":["ParseError", ["Character", "&#X!"]]},
615    
616 wakaba 1.5 {"description":"NULL character",
617     "input":"\u0000",
618 wakaba 1.6 "output":["ParseError",["Character", "\uFFFD"]]},
619    
620     {"description":"&TRADE;",
621     "input":"&TRADE;",
622 wakaba 1.7 "output":[["Character", "\u2122"]]},
623    
624     {"description":"&lang;",
625     "input":"&lang;",
626 wakaba 1.18 "output":[["Character", "\u27E8"]]},
627 wakaba 1.7
628     {"description":"&rang;",
629     "input":"&rang;",
630 wakaba 1.18 "output":[["Character", "\u27E9"]]},
631 wakaba 1.7
632     {"description":"&amp;;",
633     "input":"&amp;;",
634 wakaba 1.8 "output":[["Character", "&;"]]},
635    
636 wakaba 1.11 {"description":"&HT",
637     "input":"&\u0009",
638     "output":[["Character", "&\u0009"]]},
639    
640     {"description":"&LF",
641     "input":"&\u000A",
642     "output":[["Character", "&\u000A"]]},
643    
644 wakaba 1.26 {"description": "&VT",
645     "input": "&\u000B",
646     "output": ["ParseError", ["Character", "&\u000B"]]},
647 wakaba 1.11
648     {"description":"&FF",
649     "input":"&\u000C",
650     "output":[["Character", "&\u000C"]]},
651    
652     {"description":"&SP",
653     "input":"& ",
654     "output":[["Character", "& "]]},
655    
656     {"description":"&<",
657     "input":"&<",
658 wakaba 1.12 "output":[["Character", "&"], "ParseError", ["Character", "<"]]},
659 wakaba 1.11
660     {"description":"&<p>",
661     "input":"&<p>",
662     "output":[["Character", "&"], ["StartTag", "p", {}]]},
663    
664     {"description":"&&",
665     "input":"&&",
666     "output":[["Character", "&&"]]},
667    
668     {"description":"&&amp;",
669     "input":"&&amp;",
670     "output":[["Character", "&&"]]},
671    
672     {"description":"&",
673     "input":"&",
674     "output":[["Character", "&"]]},
675 wakaba 1.12
676     {"description":"named character reference w/o refc",
677     "input":"&ampabc",
678     "output":["ParseError", ["Character", "&abc"]]},
679    
680     {"description":"named character reference",
681     "input":"&amp;abc",
682     "output":[["Character", "&abc"]]},
683    
684     {"description":"named character reference w/o refc",
685     "input":"&abc",
686     "output":["ParseError", ["Character", "&abc"]]},
687    
688     {"description":"unknown named character reference",
689     "input":"&abc;",
690     "output":["ParseError", ["Character", "&abc;"]]},
691    
692     {"description":"named character reference w/o refc in attr",
693     "input":"<a href='&ampabc'>",
694     "output":["ParseError", ["StartTag", "a", {"href": "&ampabc"}]]},
695    
696     {"description":"named character reference in attr",
697     "input":"<a href='&amp;abc'>",
698     "output":[["StartTag", "a", {"href": "&abc"}]]},
699    
700     {"description":"named character reference w/o refc in attr",
701     "input":"<a href='&abc'>",
702     "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]},
703    
704     {"description":"unknown named character reference in attr",
705     "input":"<a href='&abc;'>",
706     "output":["ParseError", ["StartTag", "a", {"href": "&abc;"}]]},
707 wakaba 1.15
708     {"description":"entity w/o refc at the end of unterminated attribute value",
709     "input":"<a href='&COPY",
710     "output":["ParseError", "ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
711    
712     {"description":"entity w/o refc at the end of attribute value",
713     "input":"<a href='&COPY'>",
714     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
715    
716     {"description":"entity w/refc at the end of attribute value",
717     "input":"<a href='&COPY;'>",
718     "output":[["StartTag", "a", {"href": "\u00A9"}]]},
719    
720     {"description":"entity w/o refc href='&COPY!'",
721     "input":"<a href='&COPY!'>",
722     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9!"}]]},
723    
724     {"description":"entity w/o refc href='&COPY=ok'",
725     "input":"<a href='&COPY=ok'>",
726     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9=ok"}]]},
727    
728     {"description":"entity w/o refc href='&COPYright'",
729     "input":"<a href='&COPYright'>",
730     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright"}]]},
731    
732     {"description":"entity w/o refc href='&COPYright;'",
733     "input":"<a href='&COPYright;'>",
734     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright;"}]]},
735    
736     {"description":"entity w/o refc href='&COPYrightc'",
737     "input":"<a href='&COPYrightc'>",
738     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightc"}]]},
739    
740     {"description":"entity w/o refc href='&COPYrightcd'",
741     "input":"<a href='&COPYrightcd'>",
742     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightcd"}]]},
743 wakaba 1.11
744 wakaba 1.8 {"description":"cdata end tag containing <",
745     "contentModelFlags":["RCDATA","CDATA"],
746     "lastStartTag":"xxx",
747     "input":"</xxx<div>",
748 wakaba 1.10 "output":[["Character", "</xxx<div>"]]},
749 wakaba 1.8
750 wakaba 1.26 {"description":"cdata end tag containing VT",
751     "contentModelFlags":["RCDATA","CDATA"],
752     "lastStartTag":"xxx",
753     "input":"</xxx\u000Babc",
754     "output":[["Character", "</xxx\u000Babc"]]},
755    
756 wakaba 1.8 {"description":"< in tag name state",
757     "input":"<p<div>",
758     "output":[["StartTag", "p<div", {}]]},
759    
760 wakaba 1.26 {"description":"VT in tag name state",
761     "input":"<p\u000ba>",
762     "output":[["StartTag", "p\u000Ba", {}]]},
763    
764 wakaba 1.8 {"description":"< in before attribute name state",
765     "input":"<p <div>",
766     "output":[["StartTag", "p", {"<div":""}]]},
767    
768 wakaba 1.26 {"description":"VT in before attribute name state",
769     "input":"<p \u000bx>",
770     "output":[["StartTag", "p", {"\u000Bx":""}]]},
771    
772 wakaba 1.8 {"description":"< in attribute name state",
773     "input":"<p align<div>",
774     "output":[["StartTag", "p", {"align<div":""}]]},
775    
776 wakaba 1.26 {"description":"VT in attribute name state",
777     "input":"<p a\u000bc>",
778     "output":[["StartTag", "p", {"a\u000bc":""}]]},
779    
780 wakaba 1.8 {"description":"< in after attribute name state",
781     "input":"<p align <div>",
782     "output":[["StartTag", "p", {"align":"","<div":""}]]},
783    
784 wakaba 1.26 {"description":"VT in after attribute name state",
785     "input":"<p a \u000bb>",
786     "output":[["StartTag", "p", {"a":"","\u000bb":""}]]},
787    
788 wakaba 1.8 {"description":"< in before attribute value state",
789     "input":"<p align=<div>",
790     "output":[["StartTag", "p", {"align":"<div"}]]},
791    
792 wakaba 1.26 {"description":"VT in before attribute value state",
793     "input":"<p a=\u000bc>",
794     "output":[["StartTag", "p", {"a":"\u000bc"}]]},
795    
796 wakaba 1.8 {"description":"< in attribute value (unquoted) state",
797     "input":"<p align=left<div>",
798     "output":[["StartTag", "p", {"align":"left<div"}]]},
799    
800 wakaba 1.26 {"description":"VT in attribute value (unquoted) state",
801     "input":"<p align=left\u000bc>",
802     "output":[["StartTag", "p", {"align":"left\u000bc"}]]},
803    
804 wakaba 1.8 {"description":"< in attribute value (single-unquoted) state",
805     "input":"<p align='left<div>",
806     "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
807    
808     {"description":"< in attribute value (double-unquoted) state",
809     "input":"<p align=\u0022left<div>",
810 wakaba 1.17 "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
811 wakaba 1.26
812     {"description": "< in after attribute value (quoted) state",
813     "input": "<p a=\"b\"\u000bc>",
814     "output": ["ParseError", ["StartTag", "p", {"a":"b", "\u000bc": ""}]]},
815 wakaba 1.17
816     {"description":"/''b=\"\"",
817     "input": "<a /''b=\"\">",
818 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
819     ["StartTag", "a", {"''b": ""}]]},
820 wakaba 1.17
821     {"description":"/\"\"b=\"\"",
822     "input": "<a /\"\"b=\"\">",
823 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
824     ["StartTag", "a", {"\"\"b": ""}]]},
825 wakaba 1.17
826     {"description":"\"b=\"\"",
827     "input": "<a \"b=\"\">",
828 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\"b": ""}]]},
829 wakaba 1.17
830     {"description":"\"\"b=\"\"",
831     "input": "<a \"\"b=\"\">",
832 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"b": ""}]]},
833 wakaba 1.17
834     {"description":"'b=\"\"",
835     "input": "<a 'b=\"\">",
836 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"'b": ""}]]},
837 wakaba 1.17
838     {"description":"''b=\"\"",
839     "input": "<a ''b=\"\">",
840 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"''b": ""}]]},
841 wakaba 1.17
842     {"description":"/b=\"\"",
843     "input": "<a /b=\"\">",
844     "output": ["ParseError", ["StartTag", "a", {"b": ""}]]},
845    
846     {"description":"b/=\"\"",
847     "input": "<a b/=\"\">",
848 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError", "ParseError",
849     ["StartTag", "a", {"b": "", "=\"\"": ""}]]},
850 wakaba 1.17
851     {"description":"b/c=\"\"",
852     "input": "<a b/c=\"\">",
853     "output": ["ParseError", ["StartTag", "a", {"b": "", "c": ""}]]},
854    
855     {"description":"bc[NULL]=\"\"",
856     "input": "<a bc\u0000=\"\">",
857     "output": ["ParseError", ["StartTag", "a", {"bc\uFFFD": ""}]]},
858    
859     {"description":"b[NULL]c=\"\"",
860     "input": "<a b\u0000c=\"\">",
861     "output": ["ParseError", ["StartTag", "a", {"b\uFFFDc": ""}]]},
862    
863     {"description":"[NULL]bc=\"\"",
864     "input": "<a \u0000bc=\"\">",
865 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\uFFFDbc": ""}]]},
866    
867     {"description": "<span ===>",
868     "input": "<span ===>",
869     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=": "="}]]},
870    
871     {"description": "<span a==>",
872     "input": "<span a==>",
873     "output": ["ParseError", ["StartTag", "span", {"a": "="}]]},
874    
875     {"description": "<span ==a>",
876     "input": "<span ==a>",
877     "output": ["ParseError", ["StartTag", "span", {"=": "a"}]]},
878    
879     {"description": "<span a=b=>",
880     "input": "<span a=b=>",
881     "output": ["ParseError", ["StartTag", "span", {"a": "b="}]]},
882    
883     {"description": "<span =x\"=\"x>",
884     "input": "<span =x\"=\"x>",
885     "output": ["ParseError", "ParseError", "ParseError",
886     ["StartTag", "span", {"=x\"": "x>"}]]},
887    
888     {"description": "<span =x\"=\"x\">",
889     "input": "<span =x\"=\"x\">",
890     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=x\"": "x"}]]},
891    
892 wakaba 1.25 {"description": "bad attribute name (HTML5 revision 2123), '",
893     "input": "<foo bar '>",
894     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'": ""}]]},
895    
896     {"description": "bad attribute name (HTML5 revision 2123), \"",
897     "input": "<foo bar \">",
898     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"": ""}]]},
899    
900     {"description": "bad attribute name (HTML5 revision 2123), 'x",
901     "input": "<foo bar 'x>",
902     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "'x": ""}]]},
903    
904     {"description": "bad attribute name (HTML5 revision 2123), \"x",
905     "input": "<foo bar \"x>",
906     "output": ["ParseError", ["StartTag", "foo", {"bar": "", "\"x": ""}]]},
907    
908     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
909     "input": "<foo bar=>",
910     "output": ["ParseError", ["StartTag", "foo", {"bar": ""}]]},
911    
912     {"description": "empty unquoted attribute value (HTML5 revision 2122)",
913     "input": "</foo bar=>",
914     "output": ["ParseError", "ParseError", ["EndTag", "foo"]]},
915    
916     {"description": "empty unquoted attribute value followed by another attr",
917     "input": "<foo bar= baz=>",
918     "output": ["ParseError", ["StartTag", "foo", {"bar": "baz="}]]},
919    
920 wakaba 1.19 {"description":"&\"",
921     "input": "&\"",
922     "output": ["ParseError", ["Character", "&\""]]},
923    
924     {"description":"&'",
925     "input": "&'",
926     "output": ["ParseError", ["Character", "&'"]]},
927    
928     {"description":"<a href=\"&\">",
929     "input": "<a href=\"&\">",
930     "output": [["StartTag", "a", {"href": "&"}]]},
931    
932     {"description":"<a href=\"&'\">",
933     "input": "<a href=\"&'\">",
934     "output": ["ParseError", ["StartTag", "a", {"href": "&'"}]]},
935    
936     {"description":"<a href='&'>",
937     "input": "<a href='&'>",
938     "output": [["StartTag", "a", {"href": "&"}]]},
939    
940     {"description":"<a href='&\"'>",
941     "input": "<a href='&\"'>",
942     "output": ["ParseError", ["StartTag", "a", {"href": "&\""}]]},
943    
944     {"description":"<a href=&\">",
945     "input": "<a href=&\">",
946     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&\""}]]},
947    
948     {"description":"<a href=&'>",
949     "input": "<a href=&'>",
950     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&'"}]]},
951    
952     {"description": "<!->-->",
953     "input": "<!->-->",
954     "output": ["ParseError", ["Comment", "-"], ["Character", "-->"]]},
955    
956     {"description": "<!!--->-->",
957     "input": "<!!--->-->",
958     "output": ["ParseError", ["Comment", "!---"], ["Character", "-->"]]},
959    
960     {"description": "<a href=''rel=''>",
961     "input": "<a href=''rel=''>",
962     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
963    
964     {"description": "<a href=\"\"rel=''>",
965     "input": "<a href=\"\"rel=''>",
966     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
967    
968     {"description": "<a href=''/rel=''>",
969     "input": "<a href=''/rel=''>",
970     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
971    
972     {"description": "<a href=''rel=''/>",
973     "input": "<a href=''rel=''/>",
974 wakaba 1.24 "output": ["ParseError",
975     ["StartTag", "a", {"href": "", "rel": ""}, true]]},
976 wakaba 1.19
977     {"description": "<link href=''rel=''/>",
978     "input": "<link href=''rel=''/>",
979 wakaba 1.24 "output": ["ParseError", ["StartTag", "link", {"href": "", "rel": ""}, true]]},
980 wakaba 1.19
981 wakaba 1.21 {"description": "permitted slash after a space",
982     "input": "<br />",
983 wakaba 1.24 "output": [["StartTag", "br", {}, true]]},
984 wakaba 1.21
985     {"description": "slash in tag after a space",
986     "input": "<br / >",
987     "output": ["ParseError", ["StartTag", "br", {}]]},
988    
989     {"description": "non-permitted slash after a space",
990     "input": "<b />",
991 wakaba 1.24 "output": [["StartTag", "b", {}, true]]},
992 wakaba 1.21
993     {"description": "end tag (non-)permitted slash after a space",
994     "input": "</br />",
995     "output": ["ParseError", ["EndTag", "br"]]},
996    
997     {"description": "permitted slash after attribute name",
998     "input": "<br class/>",
999 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
1000 wakaba 1.21
1001     {"description": "slash in tag after attribute name",
1002     "input": "<br class/ >",
1003     "output": ["ParseError", ["StartTag", "br", {"class": ""}]]},
1004    
1005     {"description": "non permitted slash after attribute name",
1006     "input": "<b class/>",
1007 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
1008 wakaba 1.21
1009     {"description": "end tag (non-)permitted slash after attribute name",
1010     "input": "</br class/>",
1011     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
1012    
1013     {"description": "permitted slash in after attribute name state",
1014     "input": "<br class />",
1015 wakaba 1.24 "output": [["StartTag", "br", {"class": ""}, true]]},
1016 wakaba 1.21
1017     {"description": "non permitted slash in after attribute name state",
1018     "input": "<b class />",
1019 wakaba 1.24 "output": [["StartTag", "b", {"class": ""}, true]]},
1020 wakaba 1.21
1021     {"description": "end tag (non-)permitted slash in after attribute name state",
1022     "input": "</br class />",
1023     "output": ["ParseError", "ParseError", ["EndTag", "br"]]},
1024    
1025 wakaba 1.19 {"description": "<a \">",
1026     "input": "<a \">",
1027     "output": ["ParseError", ["StartTag", "a", {"\"": ""}]]},
1028    
1029     {"description": "<a \"\">",
1030     "input": "<a \"\">",
1031     "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"": ""}]]},
1032    
1033     {"description": "<a '>",
1034     "input": "<a '>",
1035     "output": ["ParseError", ["StartTag", "a", {"'": ""}]]},
1036    
1037     {"description": "<a ''>",
1038     "input": "<a ''>",
1039     "output": ["ParseError", "ParseError", ["StartTag", "a", {"''": ""}]]},
1040    
1041     {"description": "<a a\">",
1042     "input": "<a a\">",
1043     "output": ["ParseError", ["StartTag", "a", {"a\"": ""}]]},
1044    
1045     {"description": "<a a'>",
1046     "input": "<a a'>",
1047     "output": ["ParseError", ["StartTag", "a", {"a'": ""}]]},
1048    
1049     {"description": "<a a\"'>",
1050     "input": "<a a\"'>",
1051     "output": ["ParseError", "ParseError", ["StartTag", "a", {"a\"'": ""}]]},
1052    
1053     {"description": "<a a=\">",
1054     "input": "<a a=\">",
1055     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
1056    
1057     {"description": "<a a='>",
1058     "input": "<a a='>",
1059     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
1060    
1061     {"description": "<a a=a\">",
1062     "input": "<a a=a\">",
1063     "output": ["ParseError", ["StartTag", "a", {"a": "a\""}]]},
1064    
1065     {"description": "<a a=a'>",
1066     "input": "<a a=a'>",
1067     "output": ["ParseError", ["StartTag", "a", {"a": "a'"}]]},
1068    
1069     {"description": "<a a=>",
1070     "input": "<a a=>",
1071 wakaba 1.25 "output": ["ParseError", ["StartTag", "a", {"a": ""}]]},
1072 wakaba 1.21
1073     {"description": "end tag attribute (before attribute, >)",
1074     "input": "</p class=\"\" >",
1075     "output": ["ParseError", ["EndTag", "p"]]},
1076    
1077     {"description": "end tag attribute (before attribute, EOF)",
1078     "input": "</p class=\"\" ",
1079     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1080    
1081     {"description": "end tag not closed (before attribute)",
1082     "input": "</p >",
1083     "output": [["EndTag", "p"]]},
1084    
1085     {"description": "end tag not closed (attribute name)",
1086     "input": "</p class",
1087     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1088    
1089     {"description": "end tag attribute (after attribute name)",
1090     "input": "</p class >",
1091     "output": ["ParseError", ["EndTag", "p"]]},
1092    
1093     {"description": "end tag attributes uc (after attribute name)",
1094     "input": "</p class Title>",
1095     "output": ["ParseError", ["EndTag", "p"]]},
1096    
1097     {"description": "end tag attributes lc (after attribute name)",
1098     "input": "</p class title>",
1099     "output": ["ParseError", ["EndTag", "p"]]},
1100    
1101     {"description": "end tag not closed (after attribute name)",
1102     "input": "</p class ",
1103     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1104    
1105     {"description": "end tag attribute (before attribute value)",
1106     "input": "</p class=>",
1107 wakaba 1.25 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1108 wakaba 1.21
1109     {"description": "end tag not closed (before attribute value)",
1110     "input": "</p class=",
1111     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1112    
1113     {"description": "end tag not closed (attribute value double quote)",
1114     "input": "</p class=\"",
1115     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1116    
1117     {"description": "end tag not closed (attribute value single quote)",
1118     "input": "</p class='",
1119     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1120    
1121     {"description": "end tag attribute (attribute value unquoted)",
1122     "input": "</p class=a>",
1123     "output": ["ParseError", ["EndTag", "p"]]},
1124    
1125     {"description": "end tag not closed (attribute value unquoted)",
1126     "input": "</p class=a",
1127     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1128    
1129     {"description": "end tag attribute (after attribute value double quoted)",
1130     "input": "</p class=\"a\" >",
1131     "output": ["ParseError", ["EndTag", "p"]]},
1132    
1133     {"description": "end tag attribute (after attribute value single quoted)",
1134     "input": "</p class='a' >",
1135     "output": ["ParseError", ["EndTag", "p"]]},
1136    
1137     {"description": "end tag not closed (after attribute value double quoted)",
1138     "input": "</p class=\"a\" ",
1139     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1140    
1141     {"description": "end tag not closed (after attribute value single quoted)",
1142     "input": "</p class='a' ",
1143 wakaba 1.23 "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1144    
1145     {"description": "start tag not closed (after attribute value (quoted))",
1146     "input": "<p class='a'",
1147     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1148    
1149     {"description": "end tag not closed (after attribute value (quoted))",
1150     "input": "</p class='a'",
1151     "output": ["ParseError", "ParseError", ["EndTag", "p"]]},
1152    
1153     {"description": "start tag not closed (self-closing start tag)",
1154     "input": "<p class='a'/",
1155     "output": ["ParseError", ["StartTag", "p", {"class": "a"}]]},
1156    
1157     {"description": "end tag not closed (self-closing start tag)",
1158     "input": "</p/",
1159     "output": ["ParseError", ["EndTag", "p"]]},
1160    
1161     {"description": "end tag not closed (self-closing start tag)",
1162     "input": "</p class='a'/",
1163 wakaba 1.21 "output": ["ParseError", "ParseError", ["EndTag", "p"]]}
1164 wakaba 1.23
1165    
1166 wakaba 1.4
1167     ]}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24