/[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.20 - (hide annotations) (download)
Sun Mar 2 23:51:00 2008 UTC (17 years, 4 months ago) by wakaba
Branch: MAIN
Changes since 1.19: +18 -2 lines
++ whatpm/t/ChangeLog	2 Mar 2008 23:42:50 -0000
2008-03-03  Wakaba  <wakaba@suika.fam.cx>

	* tokenizer-test-1.test: New tests on trailing garbage
	after SYSTEM literal (HTML5 revision 1306) are added.

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     {"description":"PUBLIC\u0022\u0022",
92     "input":"<!DOCTYPE html PUBLIC\u0022\u0022>",
93     "output":[["DOCTYPE", "html", "", null, true]]},
94    
95     {"description":"PUBLIC''",
96     "input":"<!DOCTYPE html PUBLIC''>",
97     "output":[["DOCTYPE", "html", "", null, true]]},
98    
99     {"description":"PUBLICbogus",
100     "input":"<!DOCTYPE html PUBLICbogus>",
101     "output":["ParseError",["DOCTYPE", "html", null, null, false]]},
102    
103     {"description":"PUBLIC bogus",
104     "input":"<!DOCTYPE html PUBLIC bogus>",
105     "output":["ParseError",["DOCTYPE", "html", null, null, false]]},
106    
107     {"description":"PUBLIC \u0022\u0022bogus",
108     "input":"<!DOCTYPE html PUBLIC \u0022\u0022bogus>",
109     "output":["ParseError",["DOCTYPE", "html", "", null, false]]},
110    
111     {"description":"PUBLIC \u0022\u0022 bogus",
112     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 bogus>",
113     "output":["ParseError",["DOCTYPE", "html", "", null, false]]},
114    
115     {"description":"PUBLIC \u0022\u0022 \u0022\u0022bogus",
116     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 \u0022\u0022bogus>",
117 wakaba 1.20 "output":["ParseError",["DOCTYPE", "html", "", "", true]]},
118 wakaba 1.9
119     {"description":"PUBLIC \u0022\u0022 \u0022\u0022 bogus",
120     "input":"<!DOCTYPE html PUBLIC \u0022\u0022 \u0022\u0022 bogus>",
121 wakaba 1.20 "output":["ParseError",["DOCTYPE", "html", "", "", true]]},
122 wakaba 1.9
123     {"description":"PUBLIC \u0022\u0022\u0022\u0022>",
124     "input":"<!DOCTYPE html PUBLIC \u0022\u0022\u0022\u0022>",
125     "output":[["DOCTYPE", "html", "", "", true]]},
126    
127     {"description":"PUBLIC \u0022\u0022''>",
128     "input":"<!DOCTYPE html PUBLIC \u0022\u0022''>",
129     "output":[["DOCTYPE", "html", "", "", true]]},
130 wakaba 1.3
131 wakaba 1.13 {"description":"SYSTEM a",
132     "input":"<!DOCTYPE html SYSTEM a>",
133     "output":["ParseError", ["DOCTYPE", "html", null, null, false]]},
134 wakaba 1.20
135     {"description": "garbage after SYSTEM literal",
136     "input": "<!DOCTYPE html SYSTEM 'a' b>",
137     "output": ["ParseError", ["DOCTYPE", "html", null, "a", true]]},
138    
139     {"description": "garbage after PUBLIC and SYSTEM literal",
140     "input": "<!DOCTYPE html PUBLIC 'c' 'a' b>",
141     "output": ["ParseError", ["DOCTYPE", "html", "c", "a", true]]},
142    
143     {"description": "garbage immediately after SYSTEM literal",
144     "input": "<!DOCTYPE html SYSTEM 'a'b>",
145     "output": ["ParseError", ["DOCTYPE", "html", null, "a", true]]},
146    
147     {"description": "garbage immediately after PUBLIC and SYSTEM literal",
148     "input": "<!DOCTYPE html PUBLIC 'c' 'a'b>",
149     "output": ["ParseError", ["DOCTYPE", "html", "c", "a", true]]},
150 wakaba 1.13
151 wakaba 1.14 {"description":"<!---x-->",
152     "input":"<!---x-->",
153     "output":[["Comment", "-x"]]},
154    
155     {"description":"<!----x-->",
156     "input":"<!----x-->",
157     "output":["ParseError", ["Comment", "--x"]]},
158    
159 wakaba 1.1 {"description":"non-PCDATA content model flag, start tag-like string",
160     "contentModelFlags":["PLAINTEXT","RCDATA","CDATA"],
161     "input":"<div>",
162 wakaba 1.2 "output":[["Character", "<div>"]]},
163    
164     {"description":"end tag followed by character data",
165     "contentModelFlags":["RCDATA","CDATA"],
166     "lastStartTag":"xxx",
167     "input":"AB</xxx>CD",
168 wakaba 1.4 "output":[["Character", "AB"],["EndTag", "xxx"],["Character", "CD"]]},
169 wakaba 1.1
170 wakaba 1.12 {"description":"NULL character reference",
171     "input":"&#0;",
172     "output":["ParseError", ["Character", "\uFFFD"]]},
173    
174     {"description":"NULL character reference",
175     "input":"&#x0;",
176     "output":["ParseError", ["Character", "\uFFFD"]]},
177    
178     {"description":"character entity &#13;",
179     "input":"&#13;",
180     "output":["ParseError", ["Character", "\u000A"]]},
181    
182     {"description":"character entity &#xd;",
183     "input":"&#xd;",
184     "output":["ParseError", ["Character", "\u000A"]]},
185    
186     {"description":"character entities &#13;&#10;",
187     "input":"&#13;&#10;",
188     "output":["ParseError", ["Character", "\u000A\u000A"]]},
189    
190     {"description":"character entity &#13; followed by a LF",
191     "input":"&#13;\u000A",
192     "output":["ParseError", ["Character", "\u000A\u000A"]]},
193    
194 wakaba 1.4 {"description":"c1 character references",
195     "input":"&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;",
196     "output":[
197     "ParseError", ["Character", "\u20AC"],
198     "ParseError", ["Character", "\uFFFD"],
199     "ParseError", ["Character", "\u201A"],
200     "ParseError", ["Character", "\u0192"],
201     "ParseError", ["Character", "\u201E"],
202     "ParseError", ["Character", "\u2026"],
203     "ParseError", ["Character", "\u2020"],
204     "ParseError", ["Character", "\u2021"]
205     ]},
206     {"description":"c1 character references",
207     "input":"&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;",
208     "output":[
209     "ParseError", ["Character", "\u02C6"],
210     "ParseError", ["Character", "\u2030"],
211     "ParseError", ["Character", "\u0160"],
212     "ParseError", ["Character", "\u2039"],
213     "ParseError", ["Character", "\u0152"],
214     "ParseError", ["Character", "\uFFFD"],
215     "ParseError", ["Character", "\u017D"],
216     "ParseError", ["Character", "\uFFFD"]
217     ]},
218     {"description":"c1 character references",
219     "input":"&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;",
220     "output":[
221     "ParseError", ["Character", "\uFFFD"],
222     "ParseError", ["Character", "\u2018"],
223     "ParseError", ["Character", "\u2019"],
224     "ParseError", ["Character", "\u201C"],
225     "ParseError", ["Character", "\u201D"],
226     "ParseError", ["Character", "\u2022"],
227     "ParseError", ["Character", "\u2013"],
228     "ParseError", ["Character", "\u2014"]
229     ]},
230     {"description":"c1 character references",
231     "input":"&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;",
232     "output":[
233     "ParseError", ["Character", "\u02DC"],
234     "ParseError", ["Character", "\u2122"],
235     "ParseError", ["Character", "\u0161"],
236     "ParseError", ["Character", "\u203A"],
237     "ParseError", ["Character", "\u0153"],
238     "ParseError", ["Character", "\uFFFD"],
239     "ParseError", ["Character", "\u017E"],
240     "ParseError", ["Character", "\u0178"]
241     ]},
242    
243     {"description":"c1 character references",
244     "input":"&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;",
245     "output":[
246     "ParseError", ["Character", "\u20AC"],
247     "ParseError", ["Character", "\uFFFD"],
248     "ParseError", ["Character", "\u201A"],
249     "ParseError", ["Character", "\u0192"],
250     "ParseError", ["Character", "\u201E"],
251     "ParseError", ["Character", "\u2026"],
252     "ParseError", ["Character", "\u2020"],
253     "ParseError", ["Character", "\u2021"]
254     ]},
255     {"description":"c1 character references",
256     "input":"&#x88;&#x89;&#x8a;&#x8b;&#x8c;&#x8d;&#x8e;&#x8f;",
257     "output":[
258     "ParseError", ["Character", "\u02C6"],
259     "ParseError", ["Character", "\u2030"],
260     "ParseError", ["Character", "\u0160"],
261     "ParseError", ["Character", "\u2039"],
262     "ParseError", ["Character", "\u0152"],
263     "ParseError", ["Character", "\uFFFD"],
264     "ParseError", ["Character", "\u017D"],
265     "ParseError", ["Character", "\uFFFD"]
266     ]},
267     {"description":"c1 character references",
268     "input":"&#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;",
269     "output":[
270     "ParseError", ["Character", "\uFFFD"],
271     "ParseError", ["Character", "\u2018"],
272     "ParseError", ["Character", "\u2019"],
273     "ParseError", ["Character", "\u201C"],
274     "ParseError", ["Character", "\u201D"],
275     "ParseError", ["Character", "\u2022"],
276     "ParseError", ["Character", "\u2013"],
277     "ParseError", ["Character", "\u2014"]
278     ]},
279     {"description":"c1 character references",
280     "input":"&#x98;&#x99;&#x9a;&#x9b;&#x9c;&#x9d;&#x9e;&#x9f;",
281     "output":[
282     "ParseError", ["Character", "\u02DC"],
283     "ParseError", ["Character", "\u2122"],
284     "ParseError", ["Character", "\u0161"],
285     "ParseError", ["Character", "\u203A"],
286     "ParseError", ["Character", "\u0153"],
287     "ParseError", ["Character", "\uFFFD"],
288     "ParseError", ["Character", "\u017E"],
289     "ParseError", ["Character", "\u0178"]
290 wakaba 1.5 ]},
291    
292 wakaba 1.16 {"description":"Numeric entity representing a Windows-1252 'codepoint'",
293     "input":"&#137;",
294     "output":["ParseError", ["Character", "\u2030"]]},
295    
296     {"description":"Hexadecimal entity representing a Windows-1252 'codepoint'",
297     "input":"&#x89;",
298     "output":["ParseError", ["Character", "\u2030"]]},
299    
300 wakaba 1.12 {"description":"surrogate character reference",
301     "input":"&#xD800;",
302     "output":["ParseError", ["Character", "\uFFFD"]]},
303    
304     {"description":"surrogate character references",
305     "input":"&#xD800;&#xDFFF;",
306     "output":["ParseError", ["Character", "\uFFFD"],
307     "ParseError", ["Character", "\uFFFD"]]},
308    
309     {"description":"surrogate character reference",
310     "input":"\uD800&#xDFFF;",
311     "output":[["Character", "\uD800"],
312     "ParseError", ["Character", "\uFFFD"]]},
313    
314     {"description":"surrogate character reference",
315     "input":"&#xD800;\uDFFF",
316     "output":["ParseError", ["Character", "\uFFFD\uDFFF"]]},
317    
318     {"description":"surrogate character reference",
319     "input":"&#55296;",
320     "output":["ParseError", ["Character", "\uFFFD"]]},
321    
322     {"description":"surrogate character reference",
323     "input":"&#57343;",
324     "output":["ParseError", ["Character", "\uFFFD"]]},
325    
326     {"description":"non-Unicode character reference",
327     "input":"&#1114112;",
328     "output":["ParseError", ["Character", "\uFFFD"]]},
329    
330     {"description":"non-Unicode character reference",
331     "input":"&#x110000;",
332     "output":["ParseError", ["Character", "\uFFFD"]]},
333    
334 wakaba 1.15 {"description":"Broken hcro (&#x)",
335     "input":"&#x",
336     "output":["ParseError", ["Character", "&#x"]]},
337    
338     {"description":"Broken hcro (&#X)",
339     "input":"&#X",
340     "output":["ParseError", ["Character", "&#X"]]},
341    
342     {"description":"Broken hcro (&#x;)",
343     "input":"&#x;",
344     "output":["ParseError", ["Character", "&#x;"]]},
345    
346     {"description":"Broken hcro (&#X;)",
347     "input":"&#X;",
348     "output":["ParseError", ["Character", "&#X;"]]},
349    
350     {"description":"Broken hcro (&#xg)",
351     "input":"&#xg",
352     "output":["ParseError", ["Character", "&#xg"]]},
353    
354     {"description":"Broken hcro (&#Xg)",
355     "input":"&#Xg",
356     "output":["ParseError", ["Character", "&#Xg"]]},
357    
358     {"description":"Broken hcro (&#xg;)",
359     "input":"&#xg;",
360     "output":["ParseError", ["Character", "&#xg;"]]},
361    
362     {"description":"Broken hcro (&#Xg;)",
363     "input":"&#Xg;",
364     "output":["ParseError", ["Character", "&#Xg;"]]},
365    
366     {"description":"Broken hcro (&#x!)",
367     "input":"&#x!",
368     "output":["ParseError", ["Character", "&#x!"]]},
369    
370     {"description":"Broken hcro (&#X!)",
371     "input":"&#X!",
372     "output":["ParseError", ["Character", "&#X!"]]},
373    
374 wakaba 1.5 {"description":"NULL character",
375     "input":"\u0000",
376 wakaba 1.6 "output":["ParseError",["Character", "\uFFFD"]]},
377    
378     {"description":"&TRADE;",
379     "input":"&TRADE;",
380 wakaba 1.7 "output":[["Character", "\u2122"]]},
381    
382     {"description":"&lang;",
383     "input":"&lang;",
384 wakaba 1.18 "output":[["Character", "\u27E8"]]},
385 wakaba 1.7
386     {"description":"&rang;",
387     "input":"&rang;",
388 wakaba 1.18 "output":[["Character", "\u27E9"]]},
389 wakaba 1.7
390     {"description":"&amp;;",
391     "input":"&amp;;",
392 wakaba 1.8 "output":[["Character", "&;"]]},
393    
394 wakaba 1.11 {"description":"&HT",
395     "input":"&\u0009",
396     "output":[["Character", "&\u0009"]]},
397    
398     {"description":"&LF",
399     "input":"&\u000A",
400     "output":[["Character", "&\u000A"]]},
401    
402     {"description":"&VT",
403     "input":"&\u000B",
404     "output":[["Character", "&\u000B"]]},
405    
406     {"description":"&FF",
407     "input":"&\u000C",
408     "output":[["Character", "&\u000C"]]},
409    
410     {"description":"&SP",
411     "input":"& ",
412     "output":[["Character", "& "]]},
413    
414     {"description":"&<",
415     "input":"&<",
416 wakaba 1.12 "output":[["Character", "&"], "ParseError", ["Character", "<"]]},
417 wakaba 1.11
418     {"description":"&<p>",
419     "input":"&<p>",
420     "output":[["Character", "&"], ["StartTag", "p", {}]]},
421    
422     {"description":"&&",
423     "input":"&&",
424     "output":[["Character", "&&"]]},
425    
426     {"description":"&&amp;",
427     "input":"&&amp;",
428     "output":[["Character", "&&"]]},
429    
430     {"description":"&",
431     "input":"&",
432     "output":[["Character", "&"]]},
433 wakaba 1.12
434     {"description":"named character reference w/o refc",
435     "input":"&ampabc",
436     "output":["ParseError", ["Character", "&abc"]]},
437    
438     {"description":"named character reference",
439     "input":"&amp;abc",
440     "output":[["Character", "&abc"]]},
441    
442     {"description":"named character reference w/o refc",
443     "input":"&abc",
444     "output":["ParseError", ["Character", "&abc"]]},
445    
446     {"description":"unknown named character reference",
447     "input":"&abc;",
448     "output":["ParseError", ["Character", "&abc;"]]},
449    
450     {"description":"named character reference w/o refc in attr",
451     "input":"<a href='&ampabc'>",
452     "output":["ParseError", ["StartTag", "a", {"href": "&ampabc"}]]},
453    
454     {"description":"named character reference in attr",
455     "input":"<a href='&amp;abc'>",
456     "output":[["StartTag", "a", {"href": "&abc"}]]},
457    
458     {"description":"named character reference w/o refc in attr",
459     "input":"<a href='&abc'>",
460     "output":["ParseError", ["StartTag", "a", {"href": "&abc"}]]},
461    
462     {"description":"unknown named character reference in attr",
463     "input":"<a href='&abc;'>",
464     "output":["ParseError", ["StartTag", "a", {"href": "&abc;"}]]},
465 wakaba 1.15
466     {"description":"entity w/o refc at the end of unterminated attribute value",
467     "input":"<a href='&COPY",
468     "output":["ParseError", "ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
469    
470     {"description":"entity w/o refc at the end of attribute value",
471     "input":"<a href='&COPY'>",
472     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9"}]]},
473    
474     {"description":"entity w/refc at the end of attribute value",
475     "input":"<a href='&COPY;'>",
476     "output":[["StartTag", "a", {"href": "\u00A9"}]]},
477    
478     {"description":"entity w/o refc href='&COPY!'",
479     "input":"<a href='&COPY!'>",
480     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9!"}]]},
481    
482     {"description":"entity w/o refc href='&COPY=ok'",
483     "input":"<a href='&COPY=ok'>",
484     "output":["ParseError", ["StartTag", "a", {"href": "\u00A9=ok"}]]},
485    
486     {"description":"entity w/o refc href='&COPYright'",
487     "input":"<a href='&COPYright'>",
488     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright"}]]},
489    
490     {"description":"entity w/o refc href='&COPYright;'",
491     "input":"<a href='&COPYright;'>",
492     "output":["ParseError", ["StartTag", "a", {"href": "&COPYright;"}]]},
493    
494     {"description":"entity w/o refc href='&COPYrightc'",
495     "input":"<a href='&COPYrightc'>",
496     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightc"}]]},
497    
498     {"description":"entity w/o refc href='&COPYrightcd'",
499     "input":"<a href='&COPYrightcd'>",
500     "output":["ParseError", ["StartTag", "a", {"href": "&COPYrightcd"}]]},
501 wakaba 1.11
502 wakaba 1.8 {"description":"cdata end tag containing <",
503     "contentModelFlags":["RCDATA","CDATA"],
504     "lastStartTag":"xxx",
505     "input":"</xxx<div>",
506 wakaba 1.10 "output":[["Character", "</xxx<div>"]]},
507 wakaba 1.8
508     {"description":"< in tag name state",
509     "input":"<p<div>",
510     "output":[["StartTag", "p<div", {}]]},
511    
512     {"description":"< in before attribute name state",
513     "input":"<p <div>",
514     "output":[["StartTag", "p", {"<div":""}]]},
515    
516     {"description":"< in attribute name state",
517     "input":"<p align<div>",
518     "output":[["StartTag", "p", {"align<div":""}]]},
519    
520     {"description":"< in after attribute name state",
521     "input":"<p align <div>",
522     "output":[["StartTag", "p", {"align":"","<div":""}]]},
523    
524     {"description":"< in before attribute value state",
525     "input":"<p align=<div>",
526     "output":[["StartTag", "p", {"align":"<div"}]]},
527    
528     {"description":"< in attribute value (unquoted) state",
529     "input":"<p align=left<div>",
530     "output":[["StartTag", "p", {"align":"left<div"}]]},
531    
532     {"description":"< in attribute value (single-unquoted) state",
533     "input":"<p align='left<div>",
534     "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
535    
536     {"description":"< in attribute value (double-unquoted) state",
537     "input":"<p align=\u0022left<div>",
538 wakaba 1.17 "output":["ParseError", ["StartTag", "p", {"align":"left<div>"}]]},
539    
540     {"description":"/''b=\"\"",
541     "input": "<a /''b=\"\">",
542 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
543     ["StartTag", "a", {"''b": ""}]]},
544 wakaba 1.17
545     {"description":"/\"\"b=\"\"",
546     "input": "<a /\"\"b=\"\">",
547 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError",
548     ["StartTag", "a", {"\"\"b": ""}]]},
549 wakaba 1.17
550     {"description":"\"b=\"\"",
551     "input": "<a \"b=\"\">",
552 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\"b": ""}]]},
553 wakaba 1.17
554     {"description":"\"\"b=\"\"",
555     "input": "<a \"\"b=\"\">",
556 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"b": ""}]]},
557 wakaba 1.17
558     {"description":"'b=\"\"",
559     "input": "<a 'b=\"\">",
560 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"'b": ""}]]},
561 wakaba 1.17
562     {"description":"''b=\"\"",
563     "input": "<a ''b=\"\">",
564 wakaba 1.19 "output": ["ParseError", "ParseError", ["StartTag", "a", {"''b": ""}]]},
565 wakaba 1.17
566     {"description":"/b=\"\"",
567     "input": "<a /b=\"\">",
568     "output": ["ParseError", ["StartTag", "a", {"b": ""}]]},
569    
570     {"description":"b/=\"\"",
571     "input": "<a b/=\"\">",
572 wakaba 1.19 "output": ["ParseError", "ParseError", "ParseError", "ParseError",
573     ["StartTag", "a", {"b": "", "=\"\"": ""}]]},
574 wakaba 1.17
575     {"description":"b/c=\"\"",
576     "input": "<a b/c=\"\">",
577     "output": ["ParseError", ["StartTag", "a", {"b": "", "c": ""}]]},
578    
579     {"description":"bc[NULL]=\"\"",
580     "input": "<a bc\u0000=\"\">",
581     "output": ["ParseError", ["StartTag", "a", {"bc\uFFFD": ""}]]},
582    
583     {"description":"b[NULL]c=\"\"",
584     "input": "<a b\u0000c=\"\">",
585     "output": ["ParseError", ["StartTag", "a", {"b\uFFFDc": ""}]]},
586    
587     {"description":"[NULL]bc=\"\"",
588     "input": "<a \u0000bc=\"\">",
589 wakaba 1.19 "output": ["ParseError", ["StartTag", "a", {"\uFFFDbc": ""}]]},
590    
591     {"description": "<span ===>",
592     "input": "<span ===>",
593     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=": "="}]]},
594    
595     {"description": "<span a==>",
596     "input": "<span a==>",
597     "output": ["ParseError", ["StartTag", "span", {"a": "="}]]},
598    
599     {"description": "<span ==a>",
600     "input": "<span ==a>",
601     "output": ["ParseError", ["StartTag", "span", {"=": "a"}]]},
602    
603     {"description": "<span a=b=>",
604     "input": "<span a=b=>",
605     "output": ["ParseError", ["StartTag", "span", {"a": "b="}]]},
606    
607     {"description": "<span =x\"=\"x>",
608     "input": "<span =x\"=\"x>",
609     "output": ["ParseError", "ParseError", "ParseError",
610     ["StartTag", "span", {"=x\"": "x>"}]]},
611    
612     {"description": "<span =x\"=\"x\">",
613     "input": "<span =x\"=\"x\">",
614     "output": ["ParseError", "ParseError", ["StartTag", "span", {"=x\"": "x"}]]},
615    
616     {"description":"&\"",
617     "input": "&\"",
618     "output": ["ParseError", ["Character", "&\""]]},
619    
620     {"description":"&'",
621     "input": "&'",
622     "output": ["ParseError", ["Character", "&'"]]},
623    
624     {"description":"<a href=\"&\">",
625     "input": "<a href=\"&\">",
626     "output": [["StartTag", "a", {"href": "&"}]]},
627    
628     {"description":"<a href=\"&'\">",
629     "input": "<a href=\"&'\">",
630     "output": ["ParseError", ["StartTag", "a", {"href": "&'"}]]},
631    
632     {"description":"<a href='&'>",
633     "input": "<a href='&'>",
634     "output": [["StartTag", "a", {"href": "&"}]]},
635    
636     {"description":"<a href='&\"'>",
637     "input": "<a href='&\"'>",
638     "output": ["ParseError", ["StartTag", "a", {"href": "&\""}]]},
639    
640     {"description":"<a href=&\">",
641     "input": "<a href=&\">",
642     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&\""}]]},
643    
644     {"description":"<a href=&'>",
645     "input": "<a href=&'>",
646     "output": ["ParseError", "ParseError", ["StartTag", "a", {"href": "&'"}]]},
647    
648     {"description": "<!->-->",
649     "input": "<!->-->",
650     "output": ["ParseError", ["Comment", "-"], ["Character", "-->"]]},
651    
652     {"description": "<!!--->-->",
653     "input": "<!!--->-->",
654     "output": ["ParseError", ["Comment", "!---"], ["Character", "-->"]]},
655    
656     {"description": "<a href=''rel=''>",
657     "input": "<a href=''rel=''>",
658     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
659    
660     {"description": "<a href=\"\"rel=''>",
661     "input": "<a href=\"\"rel=''>",
662     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
663    
664     {"description": "<a href=''/rel=''>",
665     "input": "<a href=''/rel=''>",
666     "output": ["ParseError", ["StartTag", "a", {"href": "", "rel": ""}]]},
667    
668     {"description": "<a href=''rel=''/>",
669     "input": "<a href=''rel=''/>",
670     "output": ["ParseError", "ParseError",
671     ["StartTag", "a", {"href": "", "rel": ""}]]},
672    
673     {"description": "<link href=''rel=''/>",
674     "input": "<link href=''rel=''/>",
675     "output": ["ParseError", ["StartTag", "link", {"href": "", "rel": ""}]]},
676    
677     {"description": "<a \">",
678     "input": "<a \">",
679     "output": ["ParseError", ["StartTag", "a", {"\"": ""}]]},
680    
681     {"description": "<a \"\">",
682     "input": "<a \"\">",
683     "output": ["ParseError", "ParseError", ["StartTag", "a", {"\"\"": ""}]]},
684    
685     {"description": "<a '>",
686     "input": "<a '>",
687     "output": ["ParseError", ["StartTag", "a", {"'": ""}]]},
688    
689     {"description": "<a ''>",
690     "input": "<a ''>",
691     "output": ["ParseError", "ParseError", ["StartTag", "a", {"''": ""}]]},
692    
693     {"description": "<a a\">",
694     "input": "<a a\">",
695     "output": ["ParseError", ["StartTag", "a", {"a\"": ""}]]},
696    
697     {"description": "<a a'>",
698     "input": "<a a'>",
699     "output": ["ParseError", ["StartTag", "a", {"a'": ""}]]},
700    
701     {"description": "<a a\"'>",
702     "input": "<a a\"'>",
703     "output": ["ParseError", "ParseError", ["StartTag", "a", {"a\"'": ""}]]},
704    
705     {"description": "<a a=\">",
706     "input": "<a a=\">",
707     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
708    
709     {"description": "<a a='>",
710     "input": "<a a='>",
711     "output": ["ParseError", ["StartTag", "a", {"a": ">"}]]},
712    
713     {"description": "<a a=a\">",
714     "input": "<a a=a\">",
715     "output": ["ParseError", ["StartTag", "a", {"a": "a\""}]]},
716    
717     {"description": "<a a=a'>",
718     "input": "<a a=a'>",
719     "output": ["ParseError", ["StartTag", "a", {"a": "a'"}]]},
720    
721     {"description": "<a a=>",
722     "input": "<a a=>",
723     "output": [["StartTag", "a", {"a": ""}]]}
724 wakaba 1.4
725     ]}

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24