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