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>

A</pre>", 540 "input": "<!DOCTYPE html><pre>

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}