1{
2    "tests": [
3        {
4            "fragmentContext": null,
5            "description": "<head></head><style></style>",
6            "input": "<head></head><style></style>",
7            "output": [
8                [
9                    "StartTag",
10                    "head",
11                    {}
12                ],
13                [
14                    "EndTag",
15                    "head"
16                ],
17                [
18                    "StartTag",
19                    "style",
20                    {}
21                ],
22                [
23                    "EndTag",
24                    "style"
25                ]
26            ]
27        },
28        {
29            "fragmentContext": null,
30            "description": "<head></head><script></script>",
31            "input": "<head></head><script></script>",
32            "output": [
33                [
34                    "StartTag",
35                    "head",
36                    {}
37                ],
38                [
39                    "EndTag",
40                    "head"
41                ],
42                [
43                    "StartTag",
44                    "script",
45                    {}
46                ],
47                [
48                    "EndTag",
49                    "script"
50                ]
51            ]
52        },
53        {
54            "fragmentContext": null,
55            "description": "<head></head><!-- --><style></style><!-- --><script></script>",
56            "input": "<head></head><!-- --><style></style><!-- --><script></script>",
57            "output": [
58                [
59                    "StartTag",
60                    "head",
61                    {}
62                ],
63                [
64                    "EndTag",
65                    "head"
66                ],
67                [
68                    "Comment",
69                    " "
70                ],
71                [
72                    "StartTag",
73                    "style",
74                    {}
75                ],
76                [
77                    "EndTag",
78                    "style"
79                ],
80                [
81                    "Comment",
82                    " "
83                ],
84                [
85                    "StartTag",
86                    "script",
87                    {}
88                ],
89                [
90                    "EndTag",
91                    "script"
92                ]
93            ]
94        },
95        {
96            "fragmentContext": null,
97            "description": "<head></head><!-- -->x<style></style><!-- --><script></script>",
98            "input": "<head></head><!-- -->x<style></style><!-- --><script></script>",
99            "output": [
100                [
101                    "StartTag",
102                    "head",
103                    {}
104                ],
105                [
106                    "EndTag",
107                    "head"
108                ],
109                [
110                    "Comment",
111                    " "
112                ],
113                [
114                    "Character",
115                    "x"
116                ],
117                [
118                    "StartTag",
119                    "style",
120                    {}
121                ],
122                [
123                    "EndTag",
124                    "style"
125                ],
126                [
127                    "Comment",
128                    " "
129                ],
130                [
131                    "StartTag",
132                    "script",
133                    {}
134                ],
135                [
136                    "EndTag",
137                    "script"
138                ]
139            ]
140        },
141        {
142            "fragmentContext": null,
143            "description": "<!DOCTYPE html><html><head></head><body><pre>\\n</pre></body></html>",
144            "input": "<!DOCTYPE html><html><head></head><body><pre>\n</pre></body></html>",
145            "output": [
146                [
147                    "DOCTYPE",
148                    "html",
149                    null,
150                    null,
151                    true
152                ],
153                [
154                    "StartTag",
155                    "html",
156                    {}
157                ],
158                [
159                    "StartTag",
160                    "head",
161                    {}
162                ],
163                [
164                    "EndTag",
165                    "head"
166                ],
167                [
168                    "StartTag",
169                    "body",
170                    {}
171                ],
172                [
173                    "StartTag",
174                    "pre",
175                    {}
176                ],
177                [
178                    "EndTag",
179                    "pre"
180                ],
181                [
182                    "EndTag",
183                    "body"
184                ],
185                [
186                    "EndTag",
187                    "html"
188                ]
189            ]
190        },
191        {
192            "fragmentContext": null,
193            "description": "<!DOCTYPE html><html><head></head><body><pre>\\nfoo</pre></body></html>",
194            "input": "<!DOCTYPE html><html><head></head><body><pre>\nfoo</pre></body></html>",
195            "output": [
196                [
197                    "DOCTYPE",
198                    "html",
199                    null,
200                    null,
201                    true
202                ],
203                [
204                    "StartTag",
205                    "html",
206                    {}
207                ],
208                [
209                    "StartTag",
210                    "head",
211                    {}
212                ],
213                [
214                    "EndTag",
215                    "head"
216                ],
217                [
218                    "StartTag",
219                    "body",
220                    {}
221                ],
222                [
223                    "StartTag",
224                    "pre",
225                    {}
226                ],
227                [
228                    "Character",
229                    "foo"
230                ],
231                [
232                    "EndTag",
233                    "pre"
234                ],
235                [
236                    "EndTag",
237                    "body"
238                ],
239                [
240                    "EndTag",
241                    "html"
242                ]
243            ]
244        },
245        {
246            "fragmentContext": null,
247            "description": "<!DOCTYPE html><html><head></head><body><pre>\\n\\nfoo</pre></body></html>",
248            "input": "<!DOCTYPE html><html><head></head><body><pre>\n\nfoo</pre></body></html>",
249            "output": [
250                [
251                    "DOCTYPE",
252                    "html",
253                    null,
254                    null,
255                    true
256                ],
257                [
258                    "StartTag",
259                    "html",
260                    {}
261                ],
262                [
263                    "StartTag",
264                    "head",
265                    {}
266                ],
267                [
268                    "EndTag",
269                    "head"
270                ],
271                [
272                    "StartTag",
273                    "body",
274                    {}
275                ],
276                [
277                    "StartTag",
278                    "pre",
279                    {}
280                ],
281                [
282                    "Character",
283                    "\nfoo"
284                ],
285                [
286                    "EndTag",
287                    "pre"
288                ],
289                [
290                    "EndTag",
291                    "body"
292                ],
293                [
294                    "EndTag",
295                    "html"
296                ]
297            ]
298        },
299        {
300            "fragmentContext": null,
301            "description": "<!DOCTYPE html><html><head></head><body><pre>\\nfoo\\n</pre></body></html>",
302            "input": "<!DOCTYPE html><html><head></head><body><pre>\nfoo\n</pre></body></html>",
303            "output": [
304                [
305                    "DOCTYPE",
306                    "html",
307                    null,
308                    null,
309                    true
310                ],
311                [
312                    "StartTag",
313                    "html",
314                    {}
315                ],
316                [
317                    "StartTag",
318                    "head",
319                    {}
320                ],
321                [
322                    "EndTag",
323                    "head"
324                ],
325                [
326                    "StartTag",
327                    "body",
328                    {}
329                ],
330                [
331                    "StartTag",
332                    "pre",
333                    {}
334                ],
335                [
336                    "Character",
337                    "foo\n"
338                ],
339                [
340                    "EndTag",
341                    "pre"
342                ],
343                [
344                    "EndTag",
345                    "body"
346                ],
347                [
348                    "EndTag",
349                    "html"
350                ]
351            ]
352        },
353        {
354            "fragmentContext": null,
355            "description": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\\n</span></body></html>",
356            "input": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\n</span></body></html>",
357            "output": [
358                [
359                    "DOCTYPE",
360                    "html",
361                    null,
362                    null,
363                    true
364                ],
365                [
366                    "StartTag",
367                    "html",
368                    {}
369                ],
370                [
371                    "StartTag",
372                    "head",
373                    {}
374                ],
375                [
376                    "EndTag",
377                    "head"
378                ],
379                [
380                    "StartTag",
381                    "body",
382                    {}
383                ],
384                [
385                    "StartTag",
386                    "pre",
387                    {}
388                ],
389                [
390                    "Character",
391                    "x"
392                ],
393                [
394                    "EndTag",
395                    "pre"
396                ],
397                [
398                    "StartTag",
399                    "span",
400                    {}
401                ],
402                [
403                    "Character",
404                    "\n"
405                ],
406                [
407                    "EndTag",
408                    "span"
409                ],
410                [
411                    "EndTag",
412                    "body"
413                ],
414                [
415                    "EndTag",
416                    "html"
417                ]
418            ]
419        },
420        {
421            "fragmentContext": null,
422            "description": "<!DOCTYPE html><html><head></head><body><pre>x\\ny</pre></body></html>",
423            "input": "<!DOCTYPE html><html><head></head><body><pre>x\ny</pre></body></html>",
424            "output": [
425                [
426                    "DOCTYPE",
427                    "html",
428                    null,
429                    null,
430                    true
431                ],
432                [
433                    "StartTag",
434                    "html",
435                    {}
436                ],
437                [
438                    "StartTag",
439                    "head",
440                    {}
441                ],
442                [
443                    "EndTag",
444                    "head"
445                ],
446                [
447                    "StartTag",
448                    "body",
449                    {}
450                ],
451                [
452                    "StartTag",
453                    "pre",
454                    {}
455                ],
456                [
457                    "Character",
458                    "x\ny"
459                ],
460                [
461                    "EndTag",
462                    "pre"
463                ],
464                [
465                    "EndTag",
466                    "body"
467                ],
468                [
469                    "EndTag",
470                    "html"
471                ]
472            ]
473        },
474        {
475            "fragmentContext": null,
476            "description": "<!DOCTYPE html><html><head></head><body><pre>x<div>\\ny</pre></body></html>",
477            "input": "<!DOCTYPE html><html><head></head><body><pre>x<div>\ny</pre></body></html>",
478            "output": [
479                [
480                    "DOCTYPE",
481                    "html",
482                    null,
483                    null,
484                    true
485                ],
486                [
487                    "StartTag",
488                    "html",
489                    {}
490                ],
491                [
492                    "StartTag",
493                    "head",
494                    {}
495                ],
496                [
497                    "EndTag",
498                    "head"
499                ],
500                [
501                    "StartTag",
502                    "body",
503                    {}
504                ],
505                [
506                    "StartTag",
507                    "pre",
508                    {}
509                ],
510                [
511                    "Character",
512                    "x"
513                ],
514                [
515                    "StartTag",
516                    "div",
517                    {}
518                ],
519                [
520                    "Character",
521                    "\ny"
522                ],
523                [
524                    "EndTag",
525                    "pre"
526                ],
527                [
528                    "EndTag",
529                    "body"
530                ],
531                [
532                    "EndTag",
533                    "html"
534                ]
535            ]
536        },
537        {
538            "fragmentContext": null,
539            "description": "<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>",
540            "input": "<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>",
541            "output": [
542                [
543                    "DOCTYPE",
544                    "html",
545                    null,
546                    null,
547                    true
548                ],
549                [
550                    "StartTag",
551                    "pre",
552                    {}
553                ],
554                [
555                    "Character",
556                    "\nA"
557                ],
558                [
559                    "EndTag",
560                    "pre"
561                ]
562            ]
563        },
564        {
565            "fragmentContext": null,
566            "description": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>",
567            "input": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>",
568            "output": [
569                [
570                    "DOCTYPE",
571                    "html",
572                    null,
573                    null,
574                    true
575                ],
576                [
577                    "StartTag",
578                    "html",
579                    {}
580                ],
581                [
582                    "StartTag",
583                    "meta",
584                    {}
585                ],
586                [
587                    "StartTag",
588                    "head",
589                    {}
590                ],
591                [
592                    "EndTag",
593                    "head"
594                ],
595                [
596                    "EndTag",
597                    "html"
598                ]
599            ]
600        },
601        {
602            "fragmentContext": null,
603            "description": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>",
604            "input": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>",
605            "output": [
606                [
607                    "DOCTYPE",
608                    "html",
609                    null,
610                    null,
611                    true
612                ],
613                [
614                    "StartTag",
615                    "html",
616                    {}
617                ],
618                [
619                    "StartTag",
620                    "head",
621                    {}
622                ],
623                [
624                    "StartTag",
625                    "head",
626                    {}
627                ],
628                [
629                    "EndTag",
630                    "head"
631                ],
632                [
633                    "EndTag",
634                    "html"
635                ]
636            ]
637        },
638        {
639            "fragmentContext": null,
640            "description": "<textarea>foo<span>bar</span><i>baz",
641            "input": "<textarea>foo<span>bar</span><i>baz",
642            "output": [
643                [
644                    "StartTag",
645                    "textarea",
646                    {}
647                ],
648                [
649                    "Character",
650                    "foo<span>bar</span><i>baz"
651                ]
652            ]
653        },
654        {
655            "fragmentContext": null,
656            "description": "<title>foo<span>bar</em><i>baz",
657            "input": "<title>foo<span>bar</em><i>baz",
658            "output": [
659                [
660                    "StartTag",
661                    "title",
662                    {}
663                ],
664                [
665                    "Character",
666                    "foo<span>bar</em><i>baz"
667                ]
668            ]
669        },
670        {
671            "fragmentContext": null,
672            "description": "<!DOCTYPE html><textarea>\\n</textarea>",
673            "input": "<!DOCTYPE html><textarea>\n</textarea>",
674            "output": [
675                [
676                    "DOCTYPE",
677                    "html",
678                    null,
679                    null,
680                    true
681                ],
682                [
683                    "StartTag",
684                    "textarea",
685                    {}
686                ],
687                [
688                    "EndTag",
689                    "textarea"
690                ]
691            ]
692        },
693        {
694            "fragmentContext": null,
695            "description": "<!DOCTYPE html><textarea>\\nfoo</textarea>",
696            "input": "<!DOCTYPE html><textarea>\nfoo</textarea>",
697            "output": [
698                [
699                    "DOCTYPE",
700                    "html",
701                    null,
702                    null,
703                    true
704                ],
705                [
706                    "StartTag",
707                    "textarea",
708                    {}
709                ],
710                [
711                    "Character",
712                    "foo"
713                ],
714                [
715                    "EndTag",
716                    "textarea"
717                ]
718            ]
719        },
720        {
721            "fragmentContext": null,
722            "description": "<!DOCTYPE html><textarea>\\n\\nfoo</textarea>",
723            "input": "<!DOCTYPE html><textarea>\n\nfoo</textarea>",
724            "output": [
725                [
726                    "DOCTYPE",
727                    "html",
728                    null,
729                    null,
730                    true
731                ],
732                [
733                    "StartTag",
734                    "textarea",
735                    {}
736                ],
737                [
738                    "Character",
739                    "\nfoo"
740                ],
741                [
742                    "EndTag",
743                    "textarea"
744                ]
745            ]
746        },
747        {
748            "fragmentContext": null,
749            "description": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>",
750            "input": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>",
751            "output": [
752                [
753                    "DOCTYPE",
754                    "html",
755                    null,
756                    null,
757                    true
758                ],
759                [
760                    "StartTag",
761                    "html",
762                    {}
763                ],
764                [
765                    "StartTag",
766                    "head",
767                    {}
768                ],
769                [
770                    "EndTag",
771                    "head"
772                ],
773                [
774                    "StartTag",
775                    "body",
776                    {}
777                ],
778                [
779                    "StartTag",
780                    "ul",
781                    {}
782                ],
783                [
784                    "StartTag",
785                    "li",
786                    {}
787                ],
788                [
789                    "StartTag",
790                    "div",
791                    {}
792                ],
793                [
794                    "StartTag",
795                    "p",
796                    {}
797                ],
798                [
799                    "StartTag",
800                    "li",
801                    {}
802                ],
803                [
804                    "EndTag",
805                    "ul"
806                ],
807                [
808                    "EndTag",
809                    "body"
810                ],
811                [
812                    "EndTag",
813                    "html"
814                ]
815            ]
816        },
817        {
818            "fragmentContext": null,
819            "description": "<!doctype html><nobr><nobr><nobr>",
820            "input": "<!doctype html><nobr><nobr><nobr>",
821            "output": [
822                [
823                    "DOCTYPE",
824                    "html",
825                    null,
826                    null,
827                    true
828                ],
829                [
830                    "StartTag",
831                    "nobr",
832                    {}
833                ],
834                [
835                    "StartTag",
836                    "nobr",
837                    {}
838                ],
839                [
840                    "StartTag",
841                    "nobr",
842                    {}
843                ]
844            ]
845        },
846        {
847            "fragmentContext": null,
848            "description": "<!doctype html><nobr><nobr></nobr><nobr>",
849            "input": "<!doctype html><nobr><nobr></nobr><nobr>",
850            "output": [
851                [
852                    "DOCTYPE",
853                    "html",
854                    null,
855                    null,
856                    true
857                ],
858                [
859                    "StartTag",
860                    "nobr",
861                    {}
862                ],
863                [
864                    "StartTag",
865                    "nobr",
866                    {}
867                ],
868                [
869                    "EndTag",
870                    "nobr"
871                ],
872                [
873                    "StartTag",
874                    "nobr",
875                    {}
876                ]
877            ]
878        },
879        {
880            "fragmentContext": null,
881            "description": "<!doctype html><html><body><p><table></table></body></html>",
882            "input": "<!doctype html><html><body><p><table></table></body></html>",
883            "output": [
884                [
885                    "DOCTYPE",
886                    "html",
887                    null,
888                    null,
889                    true
890                ],
891                [
892                    "StartTag",
893                    "html",
894                    {}
895                ],
896                [
897                    "StartTag",
898                    "body",
899                    {}
900                ],
901                [
902                    "StartTag",
903                    "p",
904                    {}
905                ],
906                [
907                    "StartTag",
908                    "table",
909                    {}
910                ],
911                [
912                    "EndTag",
913                    "table"
914                ],
915                [
916                    "EndTag",
917                    "body"
918                ],
919                [
920                    "EndTag",
921                    "html"
922                ]
923            ]
924        },
925        {
926            "fragmentContext": null,
927            "description": "<p><table></table>",
928            "input": "<p><table></table>",
929            "output": [
930                [
931                    "StartTag",
932                    "p",
933                    {}
934                ],
935                [
936                    "StartTag",
937                    "table",
938                    {}
939                ],
940                [
941                    "EndTag",
942                    "table"
943                ]
944            ]
945        }
946    ]
947}