From 32386253b3e285406fc5bc5cbd2567b14a18524f Mon Sep 17 00:00:00 2001 From: Andrew Sidwell Date: Mon, 16 Jun 2008 05:37:06 +0000 Subject: Update the testsuite to match the tokeniser. Also, import new html5lib tests for better coverage. Known issue: the tokeniser test stalls using the testrunner script. svn path=/trunk/hubbub/; revision=4356 --- test/data/tokeniser2/INDEX | 6 +- test/data/tokeniser2/contentModelFlags.test | 33 +- test/data/tokeniser2/entities.test | 2339 +++++++++++++++++++++++++++ test/data/tokeniser2/escapeFlag.test | 33 + test/data/tokeniser2/test1.test | 68 +- test/data/tokeniser2/test2.test | 93 +- test/data/tokeniser2/test3.test | 367 +++++ test/data/tokeniser2/test4.test | 289 ++++ 8 files changed, 3176 insertions(+), 52 deletions(-) create mode 100644 test/data/tokeniser2/entities.test create mode 100644 test/data/tokeniser2/escapeFlag.test create mode 100644 test/data/tokeniser2/test3.test create mode 100644 test/data/tokeniser2/test4.test (limited to 'test/data') diff --git a/test/data/tokeniser2/INDEX b/test/data/tokeniser2/INDEX index 8539aeb..00c5e01 100644 --- a/test/data/tokeniser2/INDEX +++ b/test/data/tokeniser2/INDEX @@ -4,4 +4,8 @@ test1.test html5lib tests (part 1) test2.test html5lib tests (part 2) -contentModelFlags.test html5lib content model tests \ No newline at end of file +test3.test html5lib tests (part 3) +test4.test html5lib tests (part 4) +contentModelFlags.test html5lib content model tests +entities.test html5lib entity tests +escapeFlag.test html5lib escape flag tests diff --git a/test/data/tokeniser2/contentModelFlags.test b/test/data/tokeniser2/contentModelFlags.test index 84d41fc..b4f450a 100644 --- a/test/data/tokeniser2/contentModelFlags.test +++ b/test/data/tokeniser2/contentModelFlags.test @@ -2,34 +2,49 @@ {"description":"PLAINTEXT content model flag", "contentModelFlags":["PLAINTEXT"], +"lastStartTag":"plaintext", "input":"&body;", "output":[["Character", "&body;"]]}, {"description":"End tag closing RCDATA or CDATA", "contentModelFlags":["RCDATA", "CDATA"], -"lastStartTag":"bar", -"input":"foo", -"output":[["Character", "foo"], ["EndTag", "bar"]]}, +"lastStartTag":"pre", +"input":"foo", +"output":[["Character", "foo"], ["EndTag", "pre"]]}, + +{"description":"End tag closing RCDATA or CDATA (case-insensitivity)", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"foo", +"output":[["Character", "foo"], ["EndTag", "pre"]]}, {"description":"End tag with incorrect name in RCDATA or CDATA", "contentModelFlags":["RCDATA", "CDATA"], -"lastStartTag":"baz", -"input":"bar", -"output":["ParseError", ["Character", "bar"], ["EndTag", "baz"]]}, +"lastStartTag":"pre", +"input":"bar", +"output":[["Character", "bar"], ["EndTag", "pre"]]}, + +{"description":"End tag with incorrect name in RCDATA or CDATA (starting like correct name)", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"bar", +"output":[["Character", "bar"]]}, {"description":"End tag closing RCDATA or CDATA, switching back to PCDATA", "contentModelFlags":["RCDATA", "CDATA"], -"lastStartTag":"bar", -"input":"foo", -"output":[["Character", "foo"], ["EndTag", "bar"], ["EndTag", "baz"]]}, +"lastStartTag":"pre", +"input":"foo", +"output":[["Character", "foo"], ["EndTag", "pre"], ["EndTag", "baz"]]}, {"description":"CDATA w/ something looking like an entity", "contentModelFlags":["CDATA"], +"lastStartTag":"pre", "input":"&foo;", "output":[["Character", "&foo;"]]}, {"description":"RCDATA w/ an entity", "contentModelFlags":["RCDATA"], +"lastStartTag":"textarea", "input":"<", "output":[["Character", "<"]]} diff --git a/test/data/tokeniser2/entities.test b/test/data/tokeniser2/entities.test new file mode 100644 index 0000000..8b8d352 --- /dev/null +++ b/test/data/tokeniser2/entities.test @@ -0,0 +1,2339 @@ +{"tests": [ + +{"description": "Undefined named entity in attribute value ending in semicolon and whose name starts with a known entity name.", +"input":"", +"output": ["ParseError", ["StartTag", "h", {"a": "¬i;"}]]}, + +{"description": "Named entity: AElig with a semi-colon.", +"input":"Æ", +"output": [["Character", "\u00C6"]]}, + +{"description": "Named entity: AElig without a semi-colon.", +"input":"Æ", +"output": ["ParseError", ["Character", "\u00C6"]]}, + +{"description": "Named entity: AMP with a semi-colon.", +"input":"&", +"output": [["Character", "\u0026"]]}, + +{"description": "Named entity: AMP without a semi-colon.", +"input":"&", +"output": ["ParseError", ["Character", "\u0026"]]}, + +{"description": "Named entity: Aacute with a semi-colon.", +"input":"Á", +"output": [["Character", "\u00C1"]]}, + +{"description": "Named entity: Aacute without a semi-colon.", +"input":"Á", +"output": ["ParseError", ["Character", "\u00C1"]]}, + +{"description": "Named entity: Acirc with a semi-colon.", +"input":"Â", +"output": [["Character", "\u00C2"]]}, + +{"description": "Named entity: Acirc without a semi-colon.", +"input":"Â", +"output": ["ParseError", ["Character", "\u00C2"]]}, + +{"description": "Named entity: Agrave with a semi-colon.", +"input":"À", +"output": [["Character", "\u00C0"]]}, + +{"description": "Named entity: Agrave without a semi-colon.", +"input":"À", +"output": ["ParseError", ["Character", "\u00C0"]]}, + +{"description": "Named entity: Alpha with a semi-colon.", +"input":"Α", +"output": [["Character", "\u0391"]]}, + +{"description": "Named entity: Aring with a semi-colon.", +"input":"Å", +"output": [["Character", "\u00C5"]]}, + +{"description": "Named entity: Aring without a semi-colon.", +"input":"Å", +"output": ["ParseError", ["Character", "\u00C5"]]}, + +{"description": "Named entity: Atilde with a semi-colon.", +"input":"Ã", +"output": [["Character", "\u00C3"]]}, + +{"description": "Named entity: Atilde without a semi-colon.", +"input":"Ã", +"output": ["ParseError", ["Character", "\u00C3"]]}, + +{"description": "Named entity: Auml with a semi-colon.", +"input":"Ä", +"output": [["Character", "\u00C4"]]}, + +{"description": "Named entity: Auml without a semi-colon.", +"input":"Ä", +"output": ["ParseError", ["Character", "\u00C4"]]}, + +{"description": "Named entity: Beta with a semi-colon.", +"input":"Β", +"output": [["Character", "\u0392"]]}, + +{"description": "Named entity: COPY with a semi-colon.", +"input":"©", +"output": [["Character", "\u00A9"]]}, + +{"description": "Named entity: COPY without a semi-colon.", +"input":"©", +"output": ["ParseError", ["Character", "\u00A9"]]}, + +{"description": "Named entity: Ccedil with a semi-colon.", +"input":"Ç", +"output": [["Character", "\u00C7"]]}, + +{"description": "Named entity: Ccedil without a semi-colon.", +"input":"Ç", +"output": ["ParseError", ["Character", "\u00C7"]]}, + +{"description": "Named entity: Chi with a semi-colon.", +"input":"Χ", +"output": [["Character", "\u03A7"]]}, + +{"description": "Named entity: Dagger with a semi-colon.", +"input":"‡", +"output": [["Character", "\u2021"]]}, + +{"description": "Named entity: Delta with a semi-colon.", +"input":"Δ", +"output": [["Character", "\u0394"]]}, + +{"description": "Named entity: ETH with a semi-colon.", +"input":"Ð", +"output": [["Character", "\u00D0"]]}, + +{"description": "Named entity: ETH without a semi-colon.", +"input":"Ð", +"output": ["ParseError", ["Character", "\u00D0"]]}, + +{"description": "Named entity: Eacute with a semi-colon.", +"input":"É", +"output": [["Character", "\u00C9"]]}, + +{"description": "Named entity: Eacute without a semi-colon.", +"input":"É", +"output": ["ParseError", ["Character", "\u00C9"]]}, + +{"description": "Named entity: Ecirc with a semi-colon.", +"input":"Ê", +"output": [["Character", "\u00CA"]]}, + +{"description": "Named entity: Ecirc without a semi-colon.", +"input":"Ê", +"output": ["ParseError", ["Character", "\u00CA"]]}, + +{"description": "Named entity: Egrave with a semi-colon.", +"input":"È", +"output": [["Character", "\u00C8"]]}, + +{"description": "Named entity: Egrave without a semi-colon.", +"input":"È", +"output": ["ParseError", ["Character", "\u00C8"]]}, + +{"description": "Named entity: Epsilon with a semi-colon.", +"input":"Ε", +"output": [["Character", "\u0395"]]}, + +{"description": "Named entity: Eta with a semi-colon.", +"input":"Η", +"output": [["Character", "\u0397"]]}, + +{"description": "Named entity: Euml with a semi-colon.", +"input":"Ë", +"output": [["Character", "\u00CB"]]}, + +{"description": "Named entity: Euml without a semi-colon.", +"input":"Ë", +"output": ["ParseError", ["Character", "\u00CB"]]}, + +{"description": "Named entity: GT with a semi-colon.", +"input":">", +"output": [["Character", "\u003E"]]}, + +{"description": "Named entity: GT without a semi-colon.", +"input":">", +"output": ["ParseError", ["Character", "\u003E"]]}, + +{"description": "Named entity: Gamma with a semi-colon.", +"input":"Γ", +"output": [["Character", "\u0393"]]}, + +{"description": "Named entity: Iacute with a semi-colon.", +"input":"Í", +"output": [["Character", "\u00CD"]]}, + +{"description": "Named entity: Iacute without a semi-colon.", +"input":"Í", +"output": ["ParseError", ["Character", "\u00CD"]]}, + +{"description": "Named entity: Icirc with a semi-colon.", +"input":"Î", +"output": [["Character", "\u00CE"]]}, + +{"description": "Named entity: Icirc without a semi-colon.", +"input":"Î", +"output": ["ParseError", ["Character", "\u00CE"]]}, + +{"description": "Named entity: Igrave with a semi-colon.", +"input":"Ì", +"output": [["Character", "\u00CC"]]}, + +{"description": "Named entity: Igrave without a semi-colon.", +"input":"Ì", +"output": ["ParseError", ["Character", "\u00CC"]]}, + +{"description": "Named entity: Iota with a semi-colon.", +"input":"Ι", +"output": [["Character", "\u0399"]]}, + +{"description": "Named entity: Iuml with a semi-colon.", +"input":"Ï", +"output": [["Character", "\u00CF"]]}, + +{"description": "Named entity: Iuml without a semi-colon.", +"input":"Ï", +"output": ["ParseError", ["Character", "\u00CF"]]}, + +{"description": "Named entity: Kappa with a semi-colon.", +"input":"Κ", +"output": [["Character", "\u039A"]]}, + +{"description": "Named entity: LT with a semi-colon.", +"input":"<", +"output": [["Character", "\u003C"]]}, + +{"description": "Named entity: LT without a semi-colon.", +"input":"<", +"output": ["ParseError", ["Character", "\u003C"]]}, + +{"description": "Named entity: Lambda with a semi-colon.", +"input":"Λ", +"output": [["Character", "\u039B"]]}, + +{"description": "Named entity: Mu with a semi-colon.", +"input":"Μ", +"output": [["Character", "\u039C"]]}, + +{"description": "Named entity: Ntilde with a semi-colon.", +"input":"Ñ", +"output": [["Character", "\u00D1"]]}, + +{"description": "Named entity: Ntilde without a semi-colon.", +"input":"Ñ", +"output": ["ParseError", ["Character", "\u00D1"]]}, + +{"description": "Named entity: Nu with a semi-colon.", +"input":"Ν", +"output": [["Character", "\u039D"]]}, + +{"description": "Named entity: OElig with a semi-colon.", +"input":"Œ", +"output": [["Character", "\u0152"]]}, + +{"description": "Named entity: Oacute with a semi-colon.", +"input":"Ó", +"output": [["Character", "\u00D3"]]}, + +{"description": "Named entity: Oacute without a semi-colon.", +"input":"Ó", +"output": ["ParseError", ["Character", "\u00D3"]]}, + +{"description": "Named entity: Ocirc with a semi-colon.", +"input":"Ô", +"output": [["Character", "\u00D4"]]}, + +{"description": "Named entity: Ocirc without a semi-colon.", +"input":"Ô", +"output": ["ParseError", ["Character", "\u00D4"]]}, + +{"description": "Named entity: Ograve with a semi-colon.", +"input":"Ò", +"output": [["Character", "\u00D2"]]}, + +{"description": "Named entity: Ograve without a semi-colon.", +"input":"Ò", +"output": ["ParseError", ["Character", "\u00D2"]]}, + +{"description": "Named entity: Omega with a semi-colon.", +"input":"Ω", +"output": [["Character", "\u03A9"]]}, + +{"description": "Named entity: Omicron with a semi-colon.", +"input":"Ο", +"output": [["Character", "\u039F"]]}, + +{"description": "Named entity: Oslash with a semi-colon.", +"input":"Ø", +"output": [["Character", "\u00D8"]]}, + +{"description": "Named entity: Oslash without a semi-colon.", +"input":"Ø", +"output": ["ParseError", ["Character", "\u00D8"]]}, + +{"description": "Named entity: Otilde with a semi-colon.", +"input":"Õ", +"output": [["Character", "\u00D5"]]}, + +{"description": "Named entity: Otilde without a semi-colon.", +"input":"Õ", +"output": ["ParseError", ["Character", "\u00D5"]]}, + +{"description": "Named entity: Ouml with a semi-colon.", +"input":"Ö", +"output": [["Character", "\u00D6"]]}, + +{"description": "Named entity: Ouml without a semi-colon.", +"input":"Ö", +"output": ["ParseError", ["Character", "\u00D6"]]}, + +{"description": "Named entity: Phi with a semi-colon.", +"input":"Φ", +"output": [["Character", "\u03A6"]]}, + +{"description": "Named entity: Pi with a semi-colon.", +"input":"Π", +"output": [["Character", "\u03A0"]]}, + +{"description": "Named entity: Prime with a semi-colon.", +"input":"″", +"output": [["Character", "\u2033"]]}, + +{"description": "Named entity: Psi with a semi-colon.", +"input":"Ψ", +"output": [["Character", "\u03A8"]]}, + +{"description": "Named entity: QUOT with a semi-colon.", +"input":""", +"output": [["Character", "\u0022"]]}, + +{"description": "Named entity: QUOT without a semi-colon.", +"input":""", +"output": ["ParseError", ["Character", "\u0022"]]}, + +{"description": "Named entity: REG with a semi-colon.", +"input":"®", +"output": [["Character", "\u00AE"]]}, + +{"description": "Named entity: REG without a semi-colon.", +"input":"®", +"output": ["ParseError", ["Character", "\u00AE"]]}, + +{"description": "Named entity: Rho with a semi-colon.", +"input":"Ρ", +"output": [["Character", "\u03A1"]]}, + +{"description": "Named entity: Scaron with a semi-colon.", +"input":"Š", +"output": [["Character", "\u0160"]]}, + +{"description": "Named entity: Sigma with a semi-colon.", +"input":"Σ", +"output": [["Character", "\u03A3"]]}, + +{"description": "Named entity: THORN with a semi-colon.", +"input":"Þ", +"output": [["Character", "\u00DE"]]}, + +{"description": "Named entity: THORN without a semi-colon.", +"input":"Þ", +"output": ["ParseError", ["Character", "\u00DE"]]}, + +{"description": "Named entity: TRADE with a semi-colon.", +"input":"™", +"output": [["Character", "\u2122"]]}, + +{"description": "Named entity: Tau with a semi-colon.", +"input":"Τ", +"output": [["Character", "\u03A4"]]}, + +{"description": "Named entity: Theta with a semi-colon.", +"input":"Θ", +"output": [["Character", "\u0398"]]}, + +{"description": "Named entity: Uacute with a semi-colon.", +"input":"Ú", +"output": [["Character", "\u00DA"]]}, + +{"description": "Named entity: Uacute without a semi-colon.", +"input":"Ú", +"output": ["ParseError", ["Character", "\u00DA"]]}, + +{"description": "Named entity: Ucirc with a semi-colon.", +"input":"Û", +"output": [["Character", "\u00DB"]]}, + +{"description": "Named entity: Ucirc without a semi-colon.", +"input":"Û", +"output": ["ParseError", ["Character", "\u00DB"]]}, + +{"description": "Named entity: Ugrave with a semi-colon.", +"input":"Ù", +"output": [["Character", "\u00D9"]]}, + +{"description": "Named entity: Ugrave without a semi-colon.", +"input":"Ù", +"output": ["ParseError", ["Character", "\u00D9"]]}, + +{"description": "Named entity: Upsilon with a semi-colon.", +"input":"Υ", +"output": [["Character", "\u03A5"]]}, + +{"description": "Named entity: Uuml with a semi-colon.", +"input":"Ü", +"output": [["Character", "\u00DC"]]}, + +{"description": "Named entity: Uuml without a semi-colon.", +"input":"Ü", +"output": ["ParseError", ["Character", "\u00DC"]]}, + +{"description": "Named entity: Xi with a semi-colon.", +"input":"Ξ", +"output": [["Character", "\u039E"]]}, + +{"description": "Named entity: Yacute with a semi-colon.", +"input":"Ý", +"output": [["Character", "\u00DD"]]}, + +{"description": "Named entity: Yacute without a semi-colon.", +"input":"Ý", +"output": ["ParseError", ["Character", "\u00DD"]]}, + +{"description": "Named entity: Yuml with a semi-colon.", +"input":"Ÿ", +"output": [["Character", "\u0178"]]}, + +{"description": "Named entity: Zeta with a semi-colon.", +"input":"Ζ", +"output": [["Character", "\u0396"]]}, + +{"description": "Named entity: aacute with a semi-colon.", +"input":"á", +"output": [["Character", "\u00E1"]]}, + +{"description": "Named entity: aacute without a semi-colon.", +"input":"á", +"output": ["ParseError", ["Character", "\u00E1"]]}, + +{"description": "Named entity: acirc with a semi-colon.", +"input":"â", +"output": [["Character", "\u00E2"]]}, + +{"description": "Named entity: acirc without a semi-colon.", +"input":"â", +"output": ["ParseError", ["Character", "\u00E2"]]}, + +{"description": "Named entity: acute with a semi-colon.", +"input":"´", +"output": [["Character", "\u00B4"]]}, + +{"description": "Named entity: acute without a semi-colon.", +"input":"´", +"output": ["ParseError", ["Character", "\u00B4"]]}, + +{"description": "Named entity: aelig with a semi-colon.", +"input":"æ", +"output": [["Character", "\u00E6"]]}, + +{"description": "Named entity: aelig without a semi-colon.", +"input":"æ", +"output": ["ParseError", ["Character", "\u00E6"]]}, + +{"description": "Named entity: agrave with a semi-colon.", +"input":"à", +"output": [["Character", "\u00E0"]]}, + +{"description": "Named entity: agrave without a semi-colon.", +"input":"à", +"output": ["ParseError", ["Character", "\u00E0"]]}, + +{"description": "Named entity: alefsym with a semi-colon.", +"input":"ℵ", +"output": [["Character", "\u2135"]]}, + +{"description": "Named entity: alpha with a semi-colon.", +"input":"α", +"output": [["Character", "\u03B1"]]}, + +{"description": "Named entity: amp with a semi-colon.", +"input":"&", +"output": [["Character", "\u0026"]]}, + +{"description": "Named entity: amp without a semi-colon.", +"input":"&", +"output": ["ParseError", ["Character", "\u0026"]]}, + +{"description": "Named entity: and with a semi-colon.", +"input":"∧", +"output": [["Character", "\u2227"]]}, + +{"description": "Named entity: ang with a semi-colon.", +"input":"∠", +"output": [["Character", "\u2220"]]}, + +{"description": "Named entity: apos with a semi-colon.", +"input":"'", +"output": [["Character", "\u0027"]]}, + +{"description": "Named entity: aring with a semi-colon.", +"input":"å", +"output": [["Character", "\u00E5"]]}, + +{"description": "Named entity: aring without a semi-colon.", +"input":"å", +"output": ["ParseError", ["Character", "\u00E5"]]}, + +{"description": "Named entity: asymp with a semi-colon.", +"input":"≈", +"output": [["Character", "\u2248"]]}, + +{"description": "Named entity: atilde with a semi-colon.", +"input":"ã", +"output": [["Character", "\u00E3"]]}, + +{"description": "Named entity: atilde without a semi-colon.", +"input":"ã", +"output": ["ParseError", ["Character", "\u00E3"]]}, + +{"description": "Named entity: auml with a semi-colon.", +"input":"ä", +"output": [["Character", "\u00E4"]]}, + +{"description": "Named entity: auml without a semi-colon.", +"input":"ä", +"output": ["ParseError", ["Character", "\u00E4"]]}, + +{"description": "Named entity: bdquo with a semi-colon.", +"input":"„", +"output": [["Character", "\u201E"]]}, + +{"description": "Named entity: beta with a semi-colon.", +"input":"β", +"output": [["Character", "\u03B2"]]}, + +{"description": "Named entity: brvbar with a semi-colon.", +"input":"¦", +"output": [["Character", "\u00A6"]]}, + +{"description": "Named entity: brvbar without a semi-colon.", +"input":"¦", +"output": ["ParseError", ["Character", "\u00A6"]]}, + +{"description": "Named entity: bull with a semi-colon.", +"input":"•", +"output": [["Character", "\u2022"]]}, + +{"description": "Named entity: cap with a semi-colon.", +"input":"∩", +"output": [["Character", "\u2229"]]}, + +{"description": "Named entity: ccedil with a semi-colon.", +"input":"ç", +"output": [["Character", "\u00E7"]]}, + +{"description": "Named entity: ccedil without a semi-colon.", +"input":"ç", +"output": ["ParseError", ["Character", "\u00E7"]]}, + +{"description": "Named entity: cedil with a semi-colon.", +"input":"¸", +"output": [["Character", "\u00B8"]]}, + +{"description": "Named entity: cedil without a semi-colon.", +"input":"¸", +"output": ["ParseError", ["Character", "\u00B8"]]}, + +{"description": "Named entity: cent with a semi-colon.", +"input":"¢", +"output": [["Character", "\u00A2"]]}, + +{"description": "Named entity: cent without a semi-colon.", +"input":"¢", +"output": ["ParseError", ["Character", "\u00A2"]]}, + +{"description": "Named entity: chi with a semi-colon.", +"input":"χ", +"output": [["Character", "\u03C7"]]}, + +{"description": "Named entity: circ with a semi-colon.", +"input":"ˆ", +"output": [["Character", "\u02C6"]]}, + +{"description": "Named entity: clubs with a semi-colon.", +"input":"♣", +"output": [["Character", "\u2663"]]}, + +{"description": "Named entity: cong with a semi-colon.", +"input":"≅", +"output": [["Character", "\u2245"]]}, + +{"description": "Named entity: copy with a semi-colon.", +"input":"©", +"output": [["Character", "\u00A9"]]}, + +{"description": "Named entity: copy without a semi-colon.", +"input":"©", +"output": ["ParseError", ["Character", "\u00A9"]]}, + +{"description": "Named entity: crarr with a semi-colon.", +"input":"↵", +"output": [["Character", "\u21B5"]]}, + +{"description": "Named entity: cup with a semi-colon.", +"input":"∪", +"output": [["Character", "\u222A"]]}, + +{"description": "Named entity: curren with a semi-colon.", +"input":"¤", +"output": [["Character", "\u00A4"]]}, + +{"description": "Named entity: curren without a semi-colon.", +"input":"¤", +"output": ["ParseError", ["Character", "\u00A4"]]}, + +{"description": "Named entity: dArr with a semi-colon.", +"input":"⇓", +"output": [["Character", "\u21D3"]]}, + +{"description": "Named entity: dagger with a semi-colon.", +"input":"†", +"output": [["Character", "\u2020"]]}, + +{"description": "Named entity: darr with a semi-colon.", +"input":"↓", +"output": [["Character", "\u2193"]]}, + +{"description": "Named entity: deg with a semi-colon.", +"input":"°", +"output": [["Character", "\u00B0"]]}, + +{"description": "Named entity: deg without a semi-colon.", +"input":"°", +"output": ["ParseError", ["Character", "\u00B0"]]}, + +{"description": "Named entity: delta with a semi-colon.", +"input":"δ", +"output": [["Character", "\u03B4"]]}, + +{"description": "Named entity: diams with a semi-colon.", +"input":"♦", +"output": [["Character", "\u2666"]]}, + +{"description": "Named entity: divide with a semi-colon.", +"input":"÷", +"output": [["Character", "\u00F7"]]}, + +{"description": "Named entity: divide without a semi-colon.", +"input":"÷", +"output": ["ParseError", ["Character", "\u00F7"]]}, + +{"description": "Named entity: eacute with a semi-colon.", +"input":"é", +"output": [["Character", "\u00E9"]]}, + +{"description": "Named entity: eacute without a semi-colon.", +"input":"é", +"output": ["ParseError", ["Character", "\u00E9"]]}, + +{"description": "Named entity: ecirc with a semi-colon.", +"input":"ê", +"output": [["Character", "\u00EA"]]}, + +{"description": "Named entity: ecirc without a semi-colon.", +"input":"ê", +"output": ["ParseError", ["Character", "\u00EA"]]}, + +{"description": "Named entity: egrave with a semi-colon.", +"input":"è", +"output": [["Character", "\u00E8"]]}, + +{"description": "Named entity: egrave without a semi-colon.", +"input":"è", +"output": ["ParseError", ["Character", "\u00E8"]]}, + +{"description": "Named entity: empty with a semi-colon.", +"input":"∅", +"output": [["Character", "\u2205"]]}, + +{"description": "Named entity: emsp with a semi-colon.", +"input":" ", +"output": [["Character", "\u2003"]]}, + +{"description": "Named entity: ensp with a semi-colon.", +"input":" ", +"output": [["Character", "\u2002"]]}, + +{"description": "Named entity: epsilon with a semi-colon.", +"input":"ε", +"output": [["Character", "\u03B5"]]}, + +{"description": "Named entity: equiv with a semi-colon.", +"input":"≡", +"output": [["Character", "\u2261"]]}, + +{"description": "Named entity: eta with a semi-colon.", +"input":"η", +"output": [["Character", "\u03B7"]]}, + +{"description": "Named entity: eth with a semi-colon.", +"input":"ð", +"output": [["Character", "\u00F0"]]}, + +{"description": "Named entity: eth without a semi-colon.", +"input":"ð", +"output": ["ParseError", ["Character", "\u00F0"]]}, + +{"description": "Named entity: euml with a semi-colon.", +"input":"ë", +"output": [["Character", "\u00EB"]]}, + +{"description": "Named entity: euml without a semi-colon.", +"input":"ë", +"output": ["ParseError", ["Character", "\u00EB"]]}, + +{"description": "Named entity: euro with a semi-colon.", +"input":"€", +"output": [["Character", "\u20AC"]]}, + +{"description": "Named entity: exist with a semi-colon.", +"input":"∃", +"output": [["Character", "\u2203"]]}, + +{"description": "Named entity: fnof with a semi-colon.", +"input":"ƒ", +"output": [["Character", "\u0192"]]}, + +{"description": "Named entity: forall with a semi-colon.", +"input":"∀", +"output": [["Character", "\u2200"]]}, + +{"description": "Named entity: frac12 with a semi-colon.", +"input":"½", +"output": [["Character", "\u00BD"]]}, + +{"description": "Named entity: frac12 without a semi-colon.", +"input":"½", +"output": ["ParseError", ["Character", "\u00BD"]]}, + +{"description": "Named entity: frac14 with a semi-colon.", +"input":"¼", +"output": [["Character", "\u00BC"]]}, + +{"description": "Named entity: frac14 without a semi-colon.", +"input":"¼", +"output": ["ParseError", ["Character", "\u00BC"]]}, + +{"description": "Named entity: frac34 with a semi-colon.", +"input":"¾", +"output": [["Character", "\u00BE"]]}, + +{"description": "Named entity: frac34 without a semi-colon.", +"input":"¾", +"output": ["ParseError", ["Character", "\u00BE"]]}, + +{"description": "Named entity: frasl with a semi-colon.", +"input":"⁄", +"output": [["Character", "\u2044"]]}, + +{"description": "Named entity: gamma with a semi-colon.", +"input":"γ", +"output": [["Character", "\u03B3"]]}, + +{"description": "Named entity: ge with a semi-colon.", +"input":"≥", +"output": [["Character", "\u2265"]]}, + +{"description": "Named entity: gt with a semi-colon.", +"input":">", +"output": [["Character", "\u003E"]]}, + +{"description": "Named entity: gt without a semi-colon.", +"input":">", +"output": ["ParseError", ["Character", "\u003E"]]}, + +{"description": "Named entity: hArr with a semi-colon.", +"input":"⇔", +"output": [["Character", "\u21D4"]]}, + +{"description": "Named entity: harr with a semi-colon.", +"input":"↔", +"output": [["Character", "\u2194"]]}, + +{"description": "Named entity: hearts with a semi-colon.", +"input":"♥", +"output": [["Character", "\u2665"]]}, + +{"description": "Named entity: hellip with a semi-colon.", +"input":"…", +"output": [["Character", "\u2026"]]}, + +{"description": "Named entity: iacute with a semi-colon.", +"input":"í", +"output": [["Character", "\u00ED"]]}, + +{"description": "Named entity: iacute without a semi-colon.", +"input":"í", +"output": ["ParseError", ["Character", "\u00ED"]]}, + +{"description": "Named entity: icirc with a semi-colon.", +"input":"î", +"output": [["Character", "\u00EE"]]}, + +{"description": "Named entity: icirc without a semi-colon.", +"input":"î", +"output": ["ParseError", ["Character", "\u00EE"]]}, + +{"description": "Named entity: iexcl with a semi-colon.", +"input":"¡", +"output": [["Character", "\u00A1"]]}, + +{"description": "Named entity: iexcl without a semi-colon.", +"input":"¡", +"output": ["ParseError", ["Character", "\u00A1"]]}, + +{"description": "Named entity: igrave with a semi-colon.", +"input":"ì", +"output": [["Character", "\u00EC"]]}, + +{"description": "Named entity: igrave without a semi-colon.", +"input":"ì", +"output": ["ParseError", ["Character", "\u00EC"]]}, + +{"description": "Named entity: image with a semi-colon.", +"input":"ℑ", +"output": [["Character", "\u2111"]]}, + +{"description": "Named entity: infin with a semi-colon.", +"input":"∞", +"output": [["Character", "\u221E"]]}, + +{"description": "Named entity: int with a semi-colon.", +"input":"∫", +"output": [["Character", "\u222B"]]}, + +{"description": "Named entity: iota with a semi-colon.", +"input":"ι", +"output": [["Character", "\u03B9"]]}, + +{"description": "Named entity: iquest with a semi-colon.", +"input":"¿", +"output": [["Character", "\u00BF"]]}, + +{"description": "Named entity: iquest without a semi-colon.", +"input":"¿", +"output": ["ParseError", ["Character", "\u00BF"]]}, + +{"description": "Named entity: isin with a semi-colon.", +"input":"∈", +"output": [["Character", "\u2208"]]}, + +{"description": "Named entity: iuml with a semi-colon.", +"input":"ï", +"output": [["Character", "\u00EF"]]}, + +{"description": "Named entity: iuml without a semi-colon.", +"input":"ï", +"output": ["ParseError", ["Character", "\u00EF"]]}, + +{"description": "Named entity: kappa with a semi-colon.", +"input":"κ", +"output": [["Character", "\u03BA"]]}, + +{"description": "Named entity: lArr with a semi-colon.", +"input":"⇐", +"output": [["Character", "\u21D0"]]}, + +{"description": "Named entity: lambda with a semi-colon.", +"input":"λ", +"output": [["Character", "\u03BB"]]}, + +{"description": "Named entity: lang with a semi-colon.", +"input":"⟨", +"output": [["Character", "\u27E8"]]}, + +{"description": "Named entity: laquo with a semi-colon.", +"input":"«", +"output": [["Character", "\u00AB"]]}, + +{"description": "Named entity: laquo without a semi-colon.", +"input":"«", +"output": ["ParseError", ["Character", "\u00AB"]]}, + +{"description": "Named entity: larr with a semi-colon.", +"input":"←", +"output": [["Character", "\u2190"]]}, + +{"description": "Named entity: lceil with a semi-colon.", +"input":"⌈", +"output": [["Character", "\u2308"]]}, + +{"description": "Named entity: ldquo with a semi-colon.", +"input":"“", +"output": [["Character", "\u201C"]]}, + +{"description": "Named entity: le with a semi-colon.", +"input":"≤", +"output": [["Character", "\u2264"]]}, + +{"description": "Named entity: lfloor with a semi-colon.", +"input":"⌊", +"output": [["Character", "\u230A"]]}, + +{"description": "Named entity: lowast with a semi-colon.", +"input":"∗", +"output": [["Character", "\u2217"]]}, + +{"description": "Named entity: loz with a semi-colon.", +"input":"◊", +"output": [["Character", "\u25CA"]]}, + +{"description": "Named entity: lrm with a semi-colon.", +"input":"‎", +"output": [["Character", "\u200E"]]}, + +{"description": "Named entity: lsaquo with a semi-colon.", +"input":"‹", +"output": [["Character", "\u2039"]]}, + +{"description": "Named entity: lsquo with a semi-colon.", +"input":"‘", +"output": [["Character", "\u2018"]]}, + +{"description": "Named entity: lt with a semi-colon.", +"input":"<", +"output": [["Character", "\u003C"]]}, + +{"description": "Named entity: lt without a semi-colon.", +"input":"<", +"output": ["ParseError", ["Character", "\u003C"]]}, + +{"description": "Named entity: macr with a semi-colon.", +"input":"¯", +"output": [["Character", "\u00AF"]]}, + +{"description": "Named entity: macr without a semi-colon.", +"input":"¯", +"output": ["ParseError", ["Character", "\u00AF"]]}, + +{"description": "Named entity: mdash with a semi-colon.", +"input":"—", +"output": [["Character", "\u2014"]]}, + +{"description": "Named entity: micro with a semi-colon.", +"input":"µ", +"output": [["Character", "\u00B5"]]}, + +{"description": "Named entity: micro without a semi-colon.", +"input":"µ", +"output": ["ParseError", ["Character", "\u00B5"]]}, + +{"description": "Named entity: middot with a semi-colon.", +"input":"·", +"output": [["Character", "\u00B7"]]}, + +{"description": "Named entity: middot without a semi-colon.", +"input":"·", +"output": ["ParseError", ["Character", "\u00B7"]]}, + +{"description": "Named entity: minus with a semi-colon.", +"input":"−", +"output": [["Character", "\u2212"]]}, + +{"description": "Named entity: mu with a semi-colon.", +"input":"μ", +"output": [["Character", "\u03BC"]]}, + +{"description": "Named entity: nabla with a semi-colon.", +"input":"∇", +"output": [["Character", "\u2207"]]}, + +{"description": "Named entity: nbsp with a semi-colon.", +"input":" ", +"output": [["Character", "\u00A0"]]}, + +{"description": "Named entity: nbsp without a semi-colon.", +"input":" ", +"output": ["ParseError", ["Character", "\u00A0"]]}, + +{"description": "Named entity: ndash with a semi-colon.", +"input":"–", +"output": [["Character", "\u2013"]]}, + +{"description": "Named entity: ne with a semi-colon.", +"input":"≠", +"output": [["Character", "\u2260"]]}, + +{"description": "Named entity: ni with a semi-colon.", +"input":"∋", +"output": [["Character", "\u220B"]]}, + +{"description": "Named entity: not with a semi-colon.", +"input":"¬", +"output": [["Character", "\u00AC"]]}, + +{"description": "Named entity: not without a semi-colon.", +"input":"¬", +"output": ["ParseError", ["Character", "\u00AC"]]}, + +{"description": "Named entity: notin with a semi-colon.", +"input":"∉", +"output": [["Character", "\u2209"]]}, + +{"description": "Named entity: nsub with a semi-colon.", +"input":"⊄", +"output": [["Character", "\u2284"]]}, + +{"description": "Named entity: ntilde with a semi-colon.", +"input":"ñ", +"output": [["Character", "\u00F1"]]}, + +{"description": "Named entity: ntilde without a semi-colon.", +"input":"ñ", +"output": ["ParseError", ["Character", "\u00F1"]]}, + +{"description": "Named entity: nu with a semi-colon.", +"input":"ν", +"output": [["Character", "\u03BD"]]}, + +{"description": "Named entity: oacute with a semi-colon.", +"input":"ó", +"output": [["Character", "\u00F3"]]}, + +{"description": "Named entity: oacute without a semi-colon.", +"input":"ó", +"output": ["ParseError", ["Character", "\u00F3"]]}, + +{"description": "Named entity: ocirc with a semi-colon.", +"input":"ô", +"output": [["Character", "\u00F4"]]}, + +{"description": "Named entity: ocirc without a semi-colon.", +"input":"ô", +"output": ["ParseError", ["Character", "\u00F4"]]}, + +{"description": "Named entity: oelig with a semi-colon.", +"input":"œ", +"output": [["Character", "\u0153"]]}, + +{"description": "Named entity: ograve with a semi-colon.", +"input":"ò", +"output": [["Character", "\u00F2"]]}, + +{"description": "Named entity: ograve without a semi-colon.", +"input":"ò", +"output": ["ParseError", ["Character", "\u00F2"]]}, + +{"description": "Named entity: oline with a semi-colon.", +"input":"‾", +"output": [["Character", "\u203E"]]}, + +{"description": "Named entity: omega with a semi-colon.", +"input":"ω", +"output": [["Character", "\u03C9"]]}, + +{"description": "Named entity: omicron with a semi-colon.", +"input":"ο", +"output": [["Character", "\u03BF"]]}, + +{"description": "Named entity: oplus with a semi-colon.", +"input":"⊕", +"output": [["Character", "\u2295"]]}, + +{"description": "Named entity: or with a semi-colon.", +"input":"∨", +"output": [["Character", "\u2228"]]}, + +{"description": "Named entity: ordf with a semi-colon.", +"input":"ª", +"output": [["Character", "\u00AA"]]}, + +{"description": "Named entity: ordf without a semi-colon.", +"input":"ª", +"output": ["ParseError", ["Character", "\u00AA"]]}, + +{"description": "Named entity: ordm with a semi-colon.", +"input":"º", +"output": [["Character", "\u00BA"]]}, + +{"description": "Named entity: ordm without a semi-colon.", +"input":"º", +"output": ["ParseError", ["Character", "\u00BA"]]}, + +{"description": "Named entity: oslash with a semi-colon.", +"input":"ø", +"output": [["Character", "\u00F8"]]}, + +{"description": "Named entity: oslash without a semi-colon.", +"input":"ø", +"output": ["ParseError", ["Character", "\u00F8"]]}, + +{"description": "Named entity: otilde with a semi-colon.", +"input":"õ", +"output": [["Character", "\u00F5"]]}, + +{"description": "Named entity: otilde without a semi-colon.", +"input":"õ", +"output": ["ParseError", ["Character", "\u00F5"]]}, + +{"description": "Named entity: otimes with a semi-colon.", +"input":"⊗", +"output": [["Character", "\u2297"]]}, + +{"description": "Named entity: ouml with a semi-colon.", +"input":"ö", +"output": [["Character", "\u00F6"]]}, + +{"description": "Named entity: ouml without a semi-colon.", +"input":"ö", +"output": ["ParseError", ["Character", "\u00F6"]]}, + +{"description": "Named entity: para with a semi-colon.", +"input":"¶", +"output": [["Character", "\u00B6"]]}, + +{"description": "Named entity: para without a semi-colon.", +"input":"¶", +"output": ["ParseError", ["Character", "\u00B6"]]}, + +{"description": "Named entity: part with a semi-colon.", +"input":"∂", +"output": [["Character", "\u2202"]]}, + +{"description": "Named entity: permil with a semi-colon.", +"input":"‰", +"output": [["Character", "\u2030"]]}, + +{"description": "Named entity: perp with a semi-colon.", +"input":"⊥", +"output": [["Character", "\u22A5"]]}, + +{"description": "Named entity: phi with a semi-colon.", +"input":"φ", +"output": [["Character", "\u03C6"]]}, + +{"description": "Named entity: pi with a semi-colon.", +"input":"π", +"output": [["Character", "\u03C0"]]}, + +{"description": "Named entity: piv with a semi-colon.", +"input":"ϖ", +"output": [["Character", "\u03D6"]]}, + +{"description": "Named entity: plusmn with a semi-colon.", +"input":"±", +"output": [["Character", "\u00B1"]]}, + +{"description": "Named entity: plusmn without a semi-colon.", +"input":"±", +"output": ["ParseError", ["Character", "\u00B1"]]}, + +{"description": "Named entity: pound with a semi-colon.", +"input":"£", +"output": [["Character", "\u00A3"]]}, + +{"description": "Named entity: pound without a semi-colon.", +"input":"£", +"output": ["ParseError", ["Character", "\u00A3"]]}, + +{"description": "Named entity: prime with a semi-colon.", +"input":"′", +"output": [["Character", "\u2032"]]}, + +{"description": "Named entity: prod with a semi-colon.", +"input":"∏", +"output": [["Character", "\u220F"]]}, + +{"description": "Named entity: prop with a semi-colon.", +"input":"∝", +"output": [["Character", "\u221D"]]}, + +{"description": "Named entity: psi with a semi-colon.", +"input":"ψ", +"output": [["Character", "\u03C8"]]}, + +{"description": "Named entity: quot with a semi-colon.", +"input":""", +"output": [["Character", "\u0022"]]}, + +{"description": "Named entity: quot without a semi-colon.", +"input":""", +"output": ["ParseError", ["Character", "\u0022"]]}, + +{"description": "Named entity: rArr with a semi-colon.", +"input":"⇒", +"output": [["Character", "\u21D2"]]}, + +{"description": "Named entity: radic with a semi-colon.", +"input":"√", +"output": [["Character", "\u221A"]]}, + +{"description": "Named entity: rang with a semi-colon.", +"input":"⟩", +"output": [["Character", "\u27E9"]]}, + +{"description": "Named entity: raquo with a semi-colon.", +"input":"»", +"output": [["Character", "\u00BB"]]}, + +{"description": "Named entity: raquo without a semi-colon.", +"input":"»", +"output": ["ParseError", ["Character", "\u00BB"]]}, + +{"description": "Named entity: rarr with a semi-colon.", +"input":"→", +"output": [["Character", "\u2192"]]}, + +{"description": "Named entity: rceil with a semi-colon.", +"input":"⌉", +"output": [["Character", "\u2309"]]}, + +{"description": "Named entity: rdquo with a semi-colon.", +"input":"”", +"output": [["Character", "\u201D"]]}, + +{"description": "Named entity: real with a semi-colon.", +"input":"ℜ", +"output": [["Character", "\u211C"]]}, + +{"description": "Named entity: reg with a semi-colon.", +"input":"®", +"output": [["Character", "\u00AE"]]}, + +{"description": "Named entity: reg without a semi-colon.", +"input":"®", +"output": ["ParseError", ["Character", "\u00AE"]]}, + +{"description": "Named entity: rfloor with a semi-colon.", +"input":"⌋", +"output": [["Character", "\u230B"]]}, + +{"description": "Named entity: rho with a semi-colon.", +"input":"ρ", +"output": [["Character", "\u03C1"]]}, + +{"description": "Named entity: rlm with a semi-colon.", +"input":"‏", +"output": [["Character", "\u200F"]]}, + +{"description": "Named entity: rsaquo with a semi-colon.", +"input":"›", +"output": [["Character", "\u203A"]]}, + +{"description": "Named entity: rsquo with a semi-colon.", +"input":"’", +"output": [["Character", "\u2019"]]}, + +{"description": "Named entity: sbquo with a semi-colon.", +"input":"‚", +"output": [["Character", "\u201A"]]}, + +{"description": "Named entity: scaron with a semi-colon.", +"input":"š", +"output": [["Character", "\u0161"]]}, + +{"description": "Named entity: sdot with a semi-colon.", +"input":"⋅", +"output": [["Character", "\u22C5"]]}, + +{"description": "Named entity: sect with a semi-colon.", +"input":"§", +"output": [["Character", "\u00A7"]]}, + +{"description": "Named entity: sect without a semi-colon.", +"input":"§", +"output": ["ParseError", ["Character", "\u00A7"]]}, + +{"description": "Named entity: shy with a semi-colon.", +"input":"­", +"output": [["Character", "\u00AD"]]}, + +{"description": "Named entity: shy without a semi-colon.", +"input":"­", +"output": ["ParseError", ["Character", "\u00AD"]]}, + +{"description": "Named entity: sigma with a semi-colon.", +"input":"σ", +"output": [["Character", "\u03C3"]]}, + +{"description": "Named entity: sigmaf with a semi-colon.", +"input":"ς", +"output": [["Character", "\u03C2"]]}, + +{"description": "Named entity: sim with a semi-colon.", +"input":"∼", +"output": [["Character", "\u223C"]]}, + +{"description": "Named entity: spades with a semi-colon.", +"input":"♠", +"output": [["Character", "\u2660"]]}, + +{"description": "Named entity: sub with a semi-colon.", +"input":"⊂", +"output": [["Character", "\u2282"]]}, + +{"description": "Named entity: sube with a semi-colon.", +"input":"⊆", +"output": [["Character", "\u2286"]]}, + +{"description": "Named entity: sum with a semi-colon.", +"input":"∑", +"output": [["Character", "\u2211"]]}, + +{"description": "Named entity: sup1 with a semi-colon.", +"input":"¹", +"output": [["Character", "\u00B9"]]}, + +{"description": "Named entity: sup1 without a semi-colon.", +"input":"¹", +"output": ["ParseError", ["Character", "\u00B9"]]}, + +{"description": "Named entity: sup2 with a semi-colon.", +"input":"²", +"output": [["Character", "\u00B2"]]}, + +{"description": "Named entity: sup2 without a semi-colon.", +"input":"²", +"output": ["ParseError", ["Character", "\u00B2"]]}, + +{"description": "Named entity: sup3 with a semi-colon.", +"input":"³", +"output": [["Character", "\u00B3"]]}, + +{"description": "Named entity: sup3 without a semi-colon.", +"input":"³", +"output": ["ParseError", ["Character", "\u00B3"]]}, + +{"description": "Named entity: sup with a semi-colon.", +"input":"⊃", +"output": [["Character", "\u2283"]]}, + +{"description": "Named entity: supe with a semi-colon.", +"input":"⊇", +"output": [["Character", "\u2287"]]}, + +{"description": "Named entity: szlig with a semi-colon.", +"input":"ß", +"output": [["Character", "\u00DF"]]}, + +{"description": "Named entity: szlig without a semi-colon.", +"input":"ß", +"output": ["ParseError", ["Character", "\u00DF"]]}, + +{"description": "Named entity: tau with a semi-colon.", +"input":"τ", +"output": [["Character", "\u03C4"]]}, + +{"description": "Named entity: there4 with a semi-colon.", +"input":"∴", +"output": [["Character", "\u2234"]]}, + +{"description": "Named entity: theta with a semi-colon.", +"input":"θ", +"output": [["Character", "\u03B8"]]}, + +{"description": "Named entity: thetasym with a semi-colon.", +"input":"ϑ", +"output": [["Character", "\u03D1"]]}, + +{"description": "Named entity: thinsp with a semi-colon.", +"input":" ", +"output": [["Character", "\u2009"]]}, + +{"description": "Named entity: thorn with a semi-colon.", +"input":"þ", +"output": [["Character", "\u00FE"]]}, + +{"description": "Named entity: thorn without a semi-colon.", +"input":"þ", +"output": ["ParseError", ["Character", "\u00FE"]]}, + +{"description": "Named entity: tilde with a semi-colon.", +"input":"˜", +"output": [["Character", "\u02DC"]]}, + +{"description": "Named entity: times with a semi-colon.", +"input":"×", +"output": [["Character", "\u00D7"]]}, + +{"description": "Named entity: times without a semi-colon.", +"input":"×", +"output": ["ParseError", ["Character", "\u00D7"]]}, + +{"description": "Named entity: trade with a semi-colon.", +"input":"™", +"output": [["Character", "\u2122"]]}, + +{"description": "Named entity: uArr with a semi-colon.", +"input":"⇑", +"output": [["Character", "\u21D1"]]}, + +{"description": "Named entity: uacute with a semi-colon.", +"input":"ú", +"output": [["Character", "\u00FA"]]}, + +{"description": "Named entity: uacute without a semi-colon.", +"input":"ú", +"output": ["ParseError", ["Character", "\u00FA"]]}, + +{"description": "Named entity: uarr with a semi-colon.", +"input":"↑", +"output": [["Character", "\u2191"]]}, + +{"description": "Named entity: ucirc with a semi-colon.", +"input":"û", +"output": [["Character", "\u00FB"]]}, + +{"description": "Named entity: ucirc without a semi-colon.", +"input":"û", +"output": ["ParseError", ["Character", "\u00FB"]]}, + +{"description": "Named entity: ugrave with a semi-colon.", +"input":"ù", +"output": [["Character", "\u00F9"]]}, + +{"description": "Named entity: ugrave without a semi-colon.", +"input":"ù", +"output": ["ParseError", ["Character", "\u00F9"]]}, + +{"description": "Named entity: uml with a semi-colon.", +"input":"¨", +"output": [["Character", "\u00A8"]]}, + +{"description": "Named entity: uml without a semi-colon.", +"input":"¨", +"output": ["ParseError", ["Character", "\u00A8"]]}, + +{"description": "Named entity: upsih with a semi-colon.", +"input":"ϒ", +"output": [["Character", "\u03D2"]]}, + +{"description": "Named entity: upsilon with a semi-colon.", +"input":"υ", +"output": [["Character", "\u03C5"]]}, + +{"description": "Named entity: uuml with a semi-colon.", +"input":"ü", +"output": [["Character", "\u00FC"]]}, + +{"description": "Named entity: uuml without a semi-colon.", +"input":"ü", +"output": ["ParseError", ["Character", "\u00FC"]]}, + +{"description": "Named entity: weierp with a semi-colon.", +"input":"℘", +"output": [["Character", "\u2118"]]}, + +{"description": "Named entity: xi with a semi-colon.", +"input":"ξ", +"output": [["Character", "\u03BE"]]}, + +{"description": "Named entity: yacute with a semi-colon.", +"input":"ý", +"output": [["Character", "\u00FD"]]}, + +{"description": "Named entity: yacute without a semi-colon.", +"input":"ý", +"output": ["ParseError", ["Character", "\u00FD"]]}, + +{"description": "Named entity: yen with a semi-colon.", +"input":"¥", +"output": [["Character", "\u00A5"]]}, + +{"description": "Named entity: yen without a semi-colon.", +"input":"¥", +"output": ["ParseError", ["Character", "\u00A5"]]}, + +{"description": "Named entity: yuml with a semi-colon.", +"input":"ÿ", +"output": [["Character", "\u00FF"]]}, + +{"description": "Named entity: yuml without a semi-colon.", +"input":"ÿ", +"output": ["ParseError", ["Character", "\u00FF"]]}, + +{"description": "Named entity: zeta with a semi-colon.", +"input":"ζ", +"output": [["Character", "\u03B6"]]}, + +{"description": "Named entity: zwj with a semi-colon.", +"input":"‍", +"output": [["Character", "\u200D"]]}, + +{"description": "Named entity: zwnj with a semi-colon.", +"input":"‌", +"output": [["Character", "\u200C"]]}, + +{"description": "Bad named entity: Alpha without a semi-colon.", +"input":"&Alpha", +"output": ["ParseError", ["Character", "&Alpha"]]}, + +{"description": "Bad named entity: alpha without a semi-colon.", +"input":"&alpha", +"output": ["ParseError", ["Character", "&alpha"]]}, + +{"description": "Bad named entity: and without a semi-colon.", +"input":"&and", +"output": ["ParseError", ["Character", "&and"]]}, + +{"description": "Bad named entity: ang without a semi-colon.", +"input":"&ang", +"output": ["ParseError", ["Character", "&ang"]]}, + +{"description": "Bad named entity: apos without a semi-colon.", +"input":"&apos", +"output": ["ParseError", ["Character", "&apos"]]}, + +{"description": "Bad named entity: asymp without a semi-colon.", +"input":"&asymp", +"output": ["ParseError", ["Character", "&asymp"]]}, + +{"description": "Bad named entity: bdquo without a semi-colon.", +"input":"&bdquo", +"output": ["ParseError", ["Character", "&bdquo"]]}, + +{"description": "Bad named entity: Beta without a semi-colon.", +"input":"&Beta", +"output": ["ParseError", ["Character", "&Beta"]]}, + +{"description": "Bad named entity: beta without a semi-colon.", +"input":"&beta", +"output": ["ParseError", ["Character", "&beta"]]}, + +{"description": "Bad named entity: bull without a semi-colon.", +"input":"&bull", +"output": ["ParseError", ["Character", "&bull"]]}, + +{"description": "Bad named entity: cap without a semi-colon.", +"input":"&cap", +"output": ["ParseError", ["Character", "&cap"]]}, + +{"description": "Bad named entity: Chi without a semi-colon.", +"input":"&Chi", +"output": ["ParseError", ["Character", "&Chi"]]}, + +{"description": "Bad named entity: chi without a semi-colon.", +"input":"&chi", +"output": ["ParseError", ["Character", "&chi"]]}, + +{"description": "Bad named entity: circ without a semi-colon.", +"input":"&circ", +"output": ["ParseError", ["Character", "&circ"]]}, + +{"description": "Bad named entity: clubs without a semi-colon.", +"input":"&clubs", +"output": ["ParseError", ["Character", "&clubs"]]}, + +{"description": "Bad named entity: cong without a semi-colon.", +"input":"&cong", +"output": ["ParseError", ["Character", "&cong"]]}, + +{"description": "Bad named entity: crarr without a semi-colon.", +"input":"&crarr", +"output": ["ParseError", ["Character", "&crarr"]]}, + +{"description": "Bad named entity: cup without a semi-colon.", +"input":"&cup", +"output": ["ParseError", ["Character", "&cup"]]}, + +{"description": "Bad named entity: dagger without a semi-colon.", +"input":"&dagger", +"output": ["ParseError", ["Character", "&dagger"]]}, + +{"description": "Bad named entity: dagger without a semi-colon.", +"input":"&dagger", +"output": ["ParseError", ["Character", "&dagger"]]}, + +{"description": "Bad named entity: darr without a semi-colon.", +"input":"&darr", +"output": ["ParseError", ["Character", "&darr"]]}, + +{"description": "Bad named entity: darr without a semi-colon.", +"input":"&darr", +"output": ["ParseError", ["Character", "&darr"]]}, + +{"description": "Bad named entity: Delta without a semi-colon.", +"input":"&Delta", +"output": ["ParseError", ["Character", "&Delta"]]}, + +{"description": "Bad named entity: delta without a semi-colon.", +"input":"&delta", +"output": ["ParseError", ["Character", "&delta"]]}, + +{"description": "Bad named entity: diams without a semi-colon.", +"input":"&diams", +"output": ["ParseError", ["Character", "&diams"]]}, + +{"description": "Bad named entity: empty without a semi-colon.", +"input":"&empty", +"output": ["ParseError", ["Character", "&empty"]]}, + +{"description": "Bad named entity: emsp without a semi-colon.", +"input":"&emsp", +"output": ["ParseError", ["Character", "&emsp"]]}, + +{"description": "Bad named entity: ensp without a semi-colon.", +"input":"&ensp", +"output": ["ParseError", ["Character", "&ensp"]]}, + +{"description": "Bad named entity: Epsilon without a semi-colon.", +"input":"&Epsilon", +"output": ["ParseError", ["Character", "&Epsilon"]]}, + +{"description": "Bad named entity: epsilon without a semi-colon.", +"input":"&epsilon", +"output": ["ParseError", ["Character", "&epsilon"]]}, + +{"description": "Bad named entity: equiv without a semi-colon.", +"input":"&equiv", +"output": ["ParseError", ["Character", "&equiv"]]}, + +{"description": "Bad named entity: Eta without a semi-colon.", +"input":"&Eta", +"output": ["ParseError", ["Character", "&Eta"]]}, + +{"description": "Bad named entity: eta without a semi-colon.", +"input":"&eta", +"output": ["ParseError", ["Character", "&eta"]]}, + +{"description": "Bad named entity: euro without a semi-colon.", +"input":"&euro", +"output": ["ParseError", ["Character", "&euro"]]}, + +{"description": "Bad named entity: exist without a semi-colon.", +"input":"&exist", +"output": ["ParseError", ["Character", "&exist"]]}, + +{"description": "Bad named entity: fnof without a semi-colon.", +"input":"&fnof", +"output": ["ParseError", ["Character", "&fnof"]]}, + +{"description": "Bad named entity: forall without a semi-colon.", +"input":"&forall", +"output": ["ParseError", ["Character", "&forall"]]}, + +{"description": "Bad named entity: frasl without a semi-colon.", +"input":"&frasl", +"output": ["ParseError", ["Character", "&frasl"]]}, + +{"description": "Bad named entity: Gamma without a semi-colon.", +"input":"&Gamma", +"output": ["ParseError", ["Character", "&Gamma"]]}, + +{"description": "Bad named entity: gamma without a semi-colon.", +"input":"&gamma", +"output": ["ParseError", ["Character", "&gamma"]]}, + +{"description": "Bad named entity: ge without a semi-colon.", +"input":"&ge", +"output": ["ParseError", ["Character", "&ge"]]}, + +{"description": "Bad named entity: harr without a semi-colon.", +"input":"&harr", +"output": ["ParseError", ["Character", "&harr"]]}, + +{"description": "Bad named entity: harr without a semi-colon.", +"input":"&harr", +"output": ["ParseError", ["Character", "&harr"]]}, + +{"description": "Bad named entity: hearts without a semi-colon.", +"input":"&hearts", +"output": ["ParseError", ["Character", "&hearts"]]}, + +{"description": "Bad named entity: hellip without a semi-colon.", +"input":"&hellip", +"output": ["ParseError", ["Character", "&hellip"]]}, + +{"description": "Bad named entity: image without a semi-colon.", +"input":"&image", +"output": ["ParseError", ["Character", "&image"]]}, + +{"description": "Bad named entity: infin without a semi-colon.", +"input":"&infin", +"output": ["ParseError", ["Character", "&infin"]]}, + +{"description": "Bad named entity: int without a semi-colon.", +"input":"&int", +"output": ["ParseError", ["Character", "&int"]]}, + +{"description": "Bad named entity: Iota without a semi-colon.", +"input":"&Iota", +"output": ["ParseError", ["Character", "&Iota"]]}, + +{"description": "Bad named entity: iota without a semi-colon.", +"input":"&iota", +"output": ["ParseError", ["Character", "&iota"]]}, + +{"description": "Bad named entity: isin without a semi-colon.", +"input":"&isin", +"output": ["ParseError", ["Character", "&isin"]]}, + +{"description": "Bad named entity: Kappa without a semi-colon.", +"input":"&Kappa", +"output": ["ParseError", ["Character", "&Kappa"]]}, + +{"description": "Bad named entity: kappa without a semi-colon.", +"input":"&kappa", +"output": ["ParseError", ["Character", "&kappa"]]}, + +{"description": "Bad named entity: Lambda without a semi-colon.", +"input":"&Lambda", +"output": ["ParseError", ["Character", "&Lambda"]]}, + +{"description": "Bad named entity: lambda without a semi-colon.", +"input":"&lambda", +"output": ["ParseError", ["Character", "&lambda"]]}, + +{"description": "Bad named entity: lang without a semi-colon.", +"input":"&lang", +"output": ["ParseError", ["Character", "&lang"]]}, + +{"description": "Bad named entity: larr without a semi-colon.", +"input":"&larr", +"output": ["ParseError", ["Character", "&larr"]]}, + +{"description": "Bad named entity: larr without a semi-colon.", +"input":"&larr", +"output": ["ParseError", ["Character", "&larr"]]}, + +{"description": "Bad named entity: lceil without a semi-colon.", +"input":"&lceil", +"output": ["ParseError", ["Character", "&lceil"]]}, + +{"description": "Bad named entity: ldquo without a semi-colon.", +"input":"&ldquo", +"output": ["ParseError", ["Character", "&ldquo"]]}, + +{"description": "Bad named entity: le without a semi-colon.", +"input":"&le", +"output": ["ParseError", ["Character", "&le"]]}, + +{"description": "Bad named entity: lfloor without a semi-colon.", +"input":"&lfloor", +"output": ["ParseError", ["Character", "&lfloor"]]}, + +{"description": "Bad named entity: lowast without a semi-colon.", +"input":"&lowast", +"output": ["ParseError", ["Character", "&lowast"]]}, + +{"description": "Bad named entity: loz without a semi-colon.", +"input":"&loz", +"output": ["ParseError", ["Character", "&loz"]]}, + +{"description": "Bad named entity: lrm without a semi-colon.", +"input":"&lrm", +"output": ["ParseError", ["Character", "&lrm"]]}, + +{"description": "Bad named entity: lsaquo without a semi-colon.", +"input":"&lsaquo", +"output": ["ParseError", ["Character", "&lsaquo"]]}, + +{"description": "Bad named entity: lsquo without a semi-colon.", +"input":"&lsquo", +"output": ["ParseError", ["Character", "&lsquo"]]}, + +{"description": "Bad named entity: mdash without a semi-colon.", +"input":"&mdash", +"output": ["ParseError", ["Character", "&mdash"]]}, + +{"description": "Bad named entity: minus without a semi-colon.", +"input":"&minus", +"output": ["ParseError", ["Character", "&minus"]]}, + +{"description": "Bad named entity: Mu without a semi-colon.", +"input":"&Mu", +"output": ["ParseError", ["Character", "&Mu"]]}, + +{"description": "Bad named entity: mu without a semi-colon.", +"input":"&mu", +"output": ["ParseError", ["Character", "&mu"]]}, + +{"description": "Bad named entity: nabla without a semi-colon.", +"input":"&nabla", +"output": ["ParseError", ["Character", "&nabla"]]}, + +{"description": "Bad named entity: ndash without a semi-colon.", +"input":"&ndash", +"output": ["ParseError", ["Character", "&ndash"]]}, + +{"description": "Bad named entity: ne without a semi-colon.", +"input":"&ne", +"output": ["ParseError", ["Character", "&ne"]]}, + +{"description": "Bad named entity: ni without a semi-colon.", +"input":"&ni", +"output": ["ParseError", ["Character", "&ni"]]}, + +{"description": "Bad named entity: notin without a semi-colon.", +"input":"¬in", +"output": ["ParseError", ["Character", "\u00ACin"]]}, + +{"description": "Bad named entity: nsub without a semi-colon.", +"input":"&nsub", +"output": ["ParseError", ["Character", "&nsub"]]}, + +{"description": "Bad named entity: Nu without a semi-colon.", +"input":"&Nu", +"output": ["ParseError", ["Character", "&Nu"]]}, + +{"description": "Bad named entity: nu without a semi-colon.", +"input":"&nu", +"output": ["ParseError", ["Character", "&nu"]]}, + +{"description": "Bad named entity: OElig without a semi-colon.", +"input":"&OElig", +"output": ["ParseError", ["Character", "&OElig"]]}, + +{"description": "Bad named entity: oelig without a semi-colon.", +"input":"&oelig", +"output": ["ParseError", ["Character", "&oelig"]]}, + +{"description": "Bad named entity: oline without a semi-colon.", +"input":"&oline", +"output": ["ParseError", ["Character", "&oline"]]}, + +{"description": "Bad named entity: Omega without a semi-colon.", +"input":"&Omega", +"output": ["ParseError", ["Character", "&Omega"]]}, + +{"description": "Bad named entity: omega without a semi-colon.", +"input":"&omega", +"output": ["ParseError", ["Character", "&omega"]]}, + +{"description": "Bad named entity: Omicron without a semi-colon.", +"input":"&Omicron", +"output": ["ParseError", ["Character", "&Omicron"]]}, + +{"description": "Bad named entity: omicron without a semi-colon.", +"input":"&omicron", +"output": ["ParseError", ["Character", "&omicron"]]}, + +{"description": "Bad named entity: oplus without a semi-colon.", +"input":"&oplus", +"output": ["ParseError", ["Character", "&oplus"]]}, + +{"description": "Bad named entity: or without a semi-colon.", +"input":"&or", +"output": ["ParseError", ["Character", "&or"]]}, + +{"description": "Bad named entity: otimes without a semi-colon.", +"input":"&otimes", +"output": ["ParseError", ["Character", "&otimes"]]}, + +{"description": "Bad named entity: part without a semi-colon.", +"input":"&part", +"output": ["ParseError", ["Character", "&part"]]}, + +{"description": "Bad named entity: permil without a semi-colon.", +"input":"&permil", +"output": ["ParseError", ["Character", "&permil"]]}, + +{"description": "Bad named entity: perp without a semi-colon.", +"input":"&perp", +"output": ["ParseError", ["Character", "&perp"]]}, + +{"description": "Bad named entity: Phi without a semi-colon.", +"input":"&Phi", +"output": ["ParseError", ["Character", "&Phi"]]}, + +{"description": "Bad named entity: phi without a semi-colon.", +"input":"&phi", +"output": ["ParseError", ["Character", "&phi"]]}, + +{"description": "Bad named entity: Pi without a semi-colon.", +"input":"&Pi", +"output": ["ParseError", ["Character", "&Pi"]]}, + +{"description": "Bad named entity: pi without a semi-colon.", +"input":"&pi", +"output": ["ParseError", ["Character", "&pi"]]}, + +{"description": "Bad named entity: piv without a semi-colon.", +"input":"&piv", +"output": ["ParseError", ["Character", "&piv"]]}, + +{"description": "Bad named entity: prime without a semi-colon.", +"input":"&prime", +"output": ["ParseError", ["Character", "&prime"]]}, + +{"description": "Bad named entity: prime without a semi-colon.", +"input":"&prime", +"output": ["ParseError", ["Character", "&prime"]]}, + +{"description": "Bad named entity: prod without a semi-colon.", +"input":"&prod", +"output": ["ParseError", ["Character", "&prod"]]}, + +{"description": "Bad named entity: prop without a semi-colon.", +"input":"&prop", +"output": ["ParseError", ["Character", "&prop"]]}, + +{"description": "Bad named entity: Psi without a semi-colon.", +"input":"&Psi", +"output": ["ParseError", ["Character", "&Psi"]]}, + +{"description": "Bad named entity: psi without a semi-colon.", +"input":"&psi", +"output": ["ParseError", ["Character", "&psi"]]}, + +{"description": "Bad named entity: radic without a semi-colon.", +"input":"&radic", +"output": ["ParseError", ["Character", "&radic"]]}, + +{"description": "Bad named entity: rang without a semi-colon.", +"input":"&rang", +"output": ["ParseError", ["Character", "&rang"]]}, + +{"description": "Bad named entity: rarr without a semi-colon.", +"input":"&rarr", +"output": ["ParseError", ["Character", "&rarr"]]}, + +{"description": "Bad named entity: rarr without a semi-colon.", +"input":"&rarr", +"output": ["ParseError", ["Character", "&rarr"]]}, + +{"description": "Bad named entity: rceil without a semi-colon.", +"input":"&rceil", +"output": ["ParseError", ["Character", "&rceil"]]}, + +{"description": "Bad named entity: rdquo without a semi-colon.", +"input":"&rdquo", +"output": ["ParseError", ["Character", "&rdquo"]]}, + +{"description": "Bad named entity: real without a semi-colon.", +"input":"&real", +"output": ["ParseError", ["Character", "&real"]]}, + +{"description": "Bad named entity: rfloor without a semi-colon.", +"input":"&rfloor", +"output": ["ParseError", ["Character", "&rfloor"]]}, + +{"description": "Bad named entity: Rho without a semi-colon.", +"input":"&Rho", +"output": ["ParseError", ["Character", "&Rho"]]}, + +{"description": "Bad named entity: rho without a semi-colon.", +"input":"&rho", +"output": ["ParseError", ["Character", "&rho"]]}, + +{"description": "Bad named entity: rlm without a semi-colon.", +"input":"&rlm", +"output": ["ParseError", ["Character", "&rlm"]]}, + +{"description": "Bad named entity: rsaquo without a semi-colon.", +"input":"&rsaquo", +"output": ["ParseError", ["Character", "&rsaquo"]]}, + +{"description": "Bad named entity: rsquo without a semi-colon.", +"input":"&rsquo", +"output": ["ParseError", ["Character", "&rsquo"]]}, + +{"description": "Bad named entity: sbquo without a semi-colon.", +"input":"&sbquo", +"output": ["ParseError", ["Character", "&sbquo"]]}, + +{"description": "Bad named entity: Scaron without a semi-colon.", +"input":"&Scaron", +"output": ["ParseError", ["Character", "&Scaron"]]}, + +{"description": "Bad named entity: scaron without a semi-colon.", +"input":"&scaron", +"output": ["ParseError", ["Character", "&scaron"]]}, + +{"description": "Bad named entity: sdot without a semi-colon.", +"input":"&sdot", +"output": ["ParseError", ["Character", "&sdot"]]}, + +{"description": "Bad named entity: Sigma without a semi-colon.", +"input":"&Sigma", +"output": ["ParseError", ["Character", "&Sigma"]]}, + +{"description": "Bad named entity: sigma without a semi-colon.", +"input":"&sigma", +"output": ["ParseError", ["Character", "&sigma"]]}, + +{"description": "Bad named entity: sigmaf without a semi-colon.", +"input":"&sigmaf", +"output": ["ParseError", ["Character", "&sigmaf"]]}, + +{"description": "Bad named entity: sim without a semi-colon.", +"input":"&sim", +"output": ["ParseError", ["Character", "&sim"]]}, + +{"description": "Bad named entity: spades without a semi-colon.", +"input":"&spades", +"output": ["ParseError", ["Character", "&spades"]]}, + +{"description": "Bad named entity: sub without a semi-colon.", +"input":"&sub", +"output": ["ParseError", ["Character", "&sub"]]}, + +{"description": "Bad named entity: sube without a semi-colon.", +"input":"&sube", +"output": ["ParseError", ["Character", "&sube"]]}, + +{"description": "Bad named entity: sum without a semi-colon.", +"input":"&sum", +"output": ["ParseError", ["Character", "&sum"]]}, + +{"description": "Bad named entity: sup without a semi-colon.", +"input":"&sup", +"output": ["ParseError", ["Character", "&sup"]]}, + +{"description": "Bad named entity: supe without a semi-colon.", +"input":"&supe", +"output": ["ParseError", ["Character", "&supe"]]}, + +{"description": "Bad named entity: Tau without a semi-colon.", +"input":"&Tau", +"output": ["ParseError", ["Character", "&Tau"]]}, + +{"description": "Bad named entity: tau without a semi-colon.", +"input":"&tau", +"output": ["ParseError", ["Character", "&tau"]]}, + +{"description": "Bad named entity: there4 without a semi-colon.", +"input":"&there4", +"output": ["ParseError", ["Character", "&there4"]]}, + +{"description": "Bad named entity: Theta without a semi-colon.", +"input":"&Theta", +"output": ["ParseError", ["Character", "&Theta"]]}, + +{"description": "Bad named entity: theta without a semi-colon.", +"input":"&theta", +"output": ["ParseError", ["Character", "&theta"]]}, + +{"description": "Bad named entity: thetasym without a semi-colon.", +"input":"&thetasym", +"output": ["ParseError", ["Character", "&thetasym"]]}, + +{"description": "Bad named entity: thinsp without a semi-colon.", +"input":"&thinsp", +"output": ["ParseError", ["Character", "&thinsp"]]}, + +{"description": "Bad named entity: tilde without a semi-colon.", +"input":"&tilde", +"output": ["ParseError", ["Character", "&tilde"]]}, + +{"description": "Bad named entity: trade without a semi-colon.", +"input":"&trade", +"output": ["ParseError", ["Character", "&trade"]]}, + +{"description": "Bad named entity: uarr without a semi-colon.", +"input":"&uarr", +"output": ["ParseError", ["Character", "&uarr"]]}, + +{"description": "Bad named entity: uarr without a semi-colon.", +"input":"&uarr", +"output": ["ParseError", ["Character", "&uarr"]]}, + +{"description": "Bad named entity: upsih without a semi-colon.", +"input":"&upsih", +"output": ["ParseError", ["Character", "&upsih"]]}, + +{"description": "Bad named entity: Upsilon without a semi-colon.", +"input":"&Upsilon", +"output": ["ParseError", ["Character", "&Upsilon"]]}, + +{"description": "Bad named entity: upsilon without a semi-colon.", +"input":"&upsilon", +"output": ["ParseError", ["Character", "&upsilon"]]}, + +{"description": "Bad named entity: weierp without a semi-colon.", +"input":"&weierp", +"output": ["ParseError", ["Character", "&weierp"]]}, + +{"description": "Bad named entity: Xi without a semi-colon.", +"input":"&Xi", +"output": ["ParseError", ["Character", "&Xi"]]}, + +{"description": "Bad named entity: xi without a semi-colon.", +"input":"&xi", +"output": ["ParseError", ["Character", "&xi"]]}, + +{"description": "Bad named entity: Yuml without a semi-colon.", +"input":"&Yuml", +"output": ["ParseError", ["Character", "&Yuml"]]}, + +{"description": "Bad named entity: Zeta without a semi-colon.", +"input":"&Zeta", +"output": ["ParseError", ["Character", "&Zeta"]]}, + +{"description": "Bad named entity: zeta without a semi-colon.", +"input":"&zeta", +"output": ["ParseError", ["Character", "&zeta"]]}, + +{"description": "Bad named entity: zwj without a semi-colon.", +"input":"&zwj", +"output": ["ParseError", ["Character", "&zwj"]]}, + +{"description": "Bad named entity: zwnj without a semi-colon.", +"input":"&zwnj", +"output": ["ParseError", ["Character", "&zwnj"]]}, + +{"description": "Bad named entity: zwnj without a semi-colon.", +"input":"&zwnj", +"output": ["ParseError", ["Character", "&zwnj"]]}, + +{"description": "CR as numeric entity", +"input":" ", +"output": ["ParseError", ["Character", "\n"]]}, + +{"description": "CR as hexadecimal numeric entity", +"input":" ", +"output": ["ParseError", ["Character", "\n"]]}, + +{"description": "Windows-1252 EURO SIGN numeric entity.", +"input":"€", +"output": ["ParseError", ["Character", "\u20AC"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 SINGLE LOW-9 QUOTATION MARK numeric entity.", +"input":"‚", +"output": ["ParseError", ["Character", "\u201A"]]}, + +{"description": "Windows-1252 LATIN SMALL LETTER F WITH HOOK numeric entity.", +"input":"ƒ", +"output": ["ParseError", ["Character", "\u0192"]]}, + +{"description": "Windows-1252 DOUBLE LOW-9 QUOTATION MARK numeric entity.", +"input":"„", +"output": ["ParseError", ["Character", "\u201E"]]}, + +{"description": "Windows-1252 HORIZONTAL ELLIPSIS numeric entity.", +"input":"…", +"output": ["ParseError", ["Character", "\u2026"]]}, + +{"description": "Windows-1252 DAGGER numeric entity.", +"input":"†", +"output": ["ParseError", ["Character", "\u2020"]]}, + +{"description": "Windows-1252 DOUBLE DAGGER numeric entity.", +"input":"‡", +"output": ["ParseError", ["Character", "\u2021"]]}, + +{"description": "Windows-1252 MODIFIER LETTER CIRCUMFLEX ACCENT numeric entity.", +"input":"ˆ", +"output": ["ParseError", ["Character", "\u02C6"]]}, + +{"description": "Windows-1252 PER MILLE SIGN numeric entity.", +"input":"‰", +"output": ["ParseError", ["Character", "\u2030"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LETTER S WITH CARON numeric entity.", +"input":"Š", +"output": ["ParseError", ["Character", "\u0160"]]}, + +{"description": "Windows-1252 SINGLE LEFT-POINTING ANGLE QUOTATION MARK numeric entity.", +"input":"‹", +"output": ["ParseError", ["Character", "\u2039"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LIGATURE OE numeric entity.", +"input":"Œ", +"output": ["ParseError", ["Character", "\u0152"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LETTER Z WITH CARON numeric entity.", +"input":"Ž", +"output": ["ParseError", ["Character", "\u017D"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 LEFT SINGLE QUOTATION MARK numeric entity.", +"input":"‘", +"output": ["ParseError", ["Character", "\u2018"]]}, + +{"description": "Windows-1252 RIGHT SINGLE QUOTATION MARK numeric entity.", +"input":"’", +"output": ["ParseError", ["Character", "\u2019"]]}, + +{"description": "Windows-1252 LEFT DOUBLE QUOTATION MARK numeric entity.", +"input":"“", +"output": ["ParseError", ["Character", "\u201C"]]}, + +{"description": "Windows-1252 RIGHT DOUBLE QUOTATION MARK numeric entity.", +"input":"”", +"output": ["ParseError", ["Character", "\u201D"]]}, + +{"description": "Windows-1252 BULLET numeric entity.", +"input":"•", +"output": ["ParseError", ["Character", "\u2022"]]}, + +{"description": "Windows-1252 EN DASH numeric entity.", +"input":"–", +"output": ["ParseError", ["Character", "\u2013"]]}, + +{"description": "Windows-1252 EM DASH numeric entity.", +"input":"—", +"output": ["ParseError", ["Character", "\u2014"]]}, + +{"description": "Windows-1252 SMALL TILDE numeric entity.", +"input":"˜", +"output": ["ParseError", ["Character", "\u02DC"]]}, + +{"description": "Windows-1252 TRADE MARK SIGN numeric entity.", +"input":"™", +"output": ["ParseError", ["Character", "\u2122"]]}, + +{"description": "Windows-1252 LATIN SMALL LETTER S WITH CARON numeric entity.", +"input":"š", +"output": ["ParseError", ["Character", "\u0161"]]}, + +{"description": "Windows-1252 SINGLE RIGHT-POINTING ANGLE QUOTATION MARK numeric entity.", +"input":"›", +"output": ["ParseError", ["Character", "\u203A"]]}, + +{"description": "Windows-1252 LATIN SMALL LIGATURE OE numeric entity.", +"input":"œ", +"output": ["ParseError", ["Character", "\u0153"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 EURO SIGN hexadecimal numeric entity.", +"input":"€", +"output": ["ParseError", ["Character", "\u20AC"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR hexadecimal numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 SINGLE LOW-9 QUOTATION MARK hexadecimal numeric entity.", +"input":"‚", +"output": ["ParseError", ["Character", "\u201A"]]}, + +{"description": "Windows-1252 LATIN SMALL LETTER F WITH HOOK hexadecimal numeric entity.", +"input":"ƒ", +"output": ["ParseError", ["Character", "\u0192"]]}, + +{"description": "Windows-1252 DOUBLE LOW-9 QUOTATION MARK hexadecimal numeric entity.", +"input":"„", +"output": ["ParseError", ["Character", "\u201E"]]}, + +{"description": "Windows-1252 HORIZONTAL ELLIPSIS hexadecimal numeric entity.", +"input":"…", +"output": ["ParseError", ["Character", "\u2026"]]}, + +{"description": "Windows-1252 DAGGER hexadecimal numeric entity.", +"input":"†", +"output": ["ParseError", ["Character", "\u2020"]]}, + +{"description": "Windows-1252 DOUBLE DAGGER hexadecimal numeric entity.", +"input":"‡", +"output": ["ParseError", ["Character", "\u2021"]]}, + +{"description": "Windows-1252 MODIFIER LETTER CIRCUMFLEX ACCENT hexadecimal numeric entity.", +"input":"ˆ", +"output": ["ParseError", ["Character", "\u02C6"]]}, + +{"description": "Windows-1252 PER MILLE SIGN hexadecimal numeric entity.", +"input":"‰", +"output": ["ParseError", ["Character", "\u2030"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LETTER S WITH CARON hexadecimal numeric entity.", +"input":"Š", +"output": ["ParseError", ["Character", "\u0160"]]}, + +{"description": "Windows-1252 SINGLE LEFT-POINTING ANGLE QUOTATION MARK hexadecimal numeric entity.", +"input":"‹", +"output": ["ParseError", ["Character", "\u2039"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LIGATURE OE hexadecimal numeric entity.", +"input":"Œ", +"output": ["ParseError", ["Character", "\u0152"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR hexadecimal numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LETTER Z WITH CARON hexadecimal numeric entity.", +"input":"Ž", +"output": ["ParseError", ["Character", "\u017D"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR hexadecimal numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR hexadecimal numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 LEFT SINGLE QUOTATION MARK hexadecimal numeric entity.", +"input":"‘", +"output": ["ParseError", ["Character", "\u2018"]]}, + +{"description": "Windows-1252 RIGHT SINGLE QUOTATION MARK hexadecimal numeric entity.", +"input":"’", +"output": ["ParseError", ["Character", "\u2019"]]}, + +{"description": "Windows-1252 LEFT DOUBLE QUOTATION MARK hexadecimal numeric entity.", +"input":"“", +"output": ["ParseError", ["Character", "\u201C"]]}, + +{"description": "Windows-1252 RIGHT DOUBLE QUOTATION MARK hexadecimal numeric entity.", +"input":"”", +"output": ["ParseError", ["Character", "\u201D"]]}, + +{"description": "Windows-1252 BULLET hexadecimal numeric entity.", +"input":"•", +"output": ["ParseError", ["Character", "\u2022"]]}, + +{"description": "Windows-1252 EN DASH hexadecimal numeric entity.", +"input":"–", +"output": ["ParseError", ["Character", "\u2013"]]}, + +{"description": "Windows-1252 EM DASH hexadecimal numeric entity.", +"input":"—", +"output": ["ParseError", ["Character", "\u2014"]]}, + +{"description": "Windows-1252 SMALL TILDE hexadecimal numeric entity.", +"input":"˜", +"output": ["ParseError", ["Character", "\u02DC"]]}, + +{"description": "Windows-1252 TRADE MARK SIGN hexadecimal numeric entity.", +"input":"™", +"output": ["ParseError", ["Character", "\u2122"]]}, + +{"description": "Windows-1252 LATIN SMALL LETTER S WITH CARON hexadecimal numeric entity.", +"input":"š", +"output": ["ParseError", ["Character", "\u0161"]]}, + +{"description": "Windows-1252 SINGLE RIGHT-POINTING ANGLE QUOTATION MARK hexadecimal numeric entity.", +"input":"›", +"output": ["ParseError", ["Character", "\u203A"]]}, + +{"description": "Windows-1252 LATIN SMALL LIGATURE OE hexadecimal numeric entity.", +"input":"œ", +"output": ["ParseError", ["Character", "\u0153"]]}, + +{"description": "Windows-1252 REPLACEMENT CHAR hexadecimal numeric entity.", +"input":"", +"output": ["ParseError", ["Character", "\uFFFD"]]}, + +{"description": "Windows-1252 LATIN SMALL LETTER Z WITH CARON hexadecimal numeric entity.", +"input":"ž", +"output": ["ParseError", ["Character", "\u017E"]]}, + +{"description": "Windows-1252 LATIN CAPITAL LETTER Y WITH DIAERESIS hexadecimal numeric entity.", +"input":"Ÿ", +"output": ["ParseError", ["Character", "\u0178"]]} + +]} diff --git a/test/data/tokeniser2/escapeFlag.test b/test/data/tokeniser2/escapeFlag.test new file mode 100644 index 0000000..8736c3c --- /dev/null +++ b/test/data/tokeniser2/escapeFlag.test @@ -0,0 +1,33 @@ +{"tests": [ + +{"description":"Commented close tag in [R]CDATA", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"foo", +"output":[["Character", "foo"], ["EndTag", "pre"]]}, + +{"description":"Bogus comment in [R]CDATA", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"foobaz", +"output":[["Character", "foobaz"], ["EndTag", "pre"]]}, + +{"description":"End tag surrounded by bogus comment in [R]CDATA", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"foobaz", +"output":[["Character", "foo"], ["EndTag", "pre"], "ParseError", ["Comment", ""], ["Character", "baz"], ["EndTag", "pre"]]}, + +{"description":"Commented entities in RCDATA", +"contentModelFlags":["RCDATA"], +"lastStartTag":"pre", +"input":" & & ", +"output":[["Character", " & & "], ["EndTag", "pre"]]}, + +{"description":"Incorrect comment ending sequences in [R]CDATA", +"contentModelFlags":["RCDATA", "CDATA"], +"lastStartTag":"pre", +"input":"foox--<>", +"output":[["Character", "foox--<>"]]} + +]} diff --git a/test/data/tokeniser2/test1.test b/test/data/tokeniser2/test1.test index c12ff5a..ddb9814 100644 --- a/test/data/tokeniser2/test1.test +++ b/test/data/tokeniser2/test1.test @@ -2,15 +2,15 @@ {"description":"Correct Doctype lowercase", "input":"", -"output":[["DOCTYPE", "HTML", false]]}, +"output":[["DOCTYPE", "html", null, null, true]]}, {"description":"Correct Doctype uppercase", -"input":"", -"output":[["DOCTYPE", "HTML", false]]}, +"input":"", +"output":[["DOCTYPE", "HTML", null, null, true]]}, {"description":"Correct Doctype mixed case", "input":"", -"output":[["DOCTYPE", "HTML", false]]}, +"output":[["DOCTYPE", "HtMl", null, null, true]]}, {"description":"Truncated doctype start", "input":"", @@ -18,7 +18,7 @@ {"description":"Doctype in error", "input":"", -"output":[["DOCTYPE", "FOO", true]]}, +"output":[["DOCTYPE", "foo", null, null, true]]}, {"description":"Single Start Tag", "input":"", @@ -58,7 +58,7 @@ {"description":"Multiple atts no space", "input":"", -"output":[["StartTag", "h", {"a":"b", "c":"d"}]]}, +"output":["ParseError", ["StartTag", "h", {"a":"b", "c":"d"}]]}, {"description":"Repeated attr", "input":"", @@ -84,17 +84,38 @@ "input":"", + "output":["ParseError", ["Comment", ""]]}, + +{"description":"Short comment two", + "input":"", + "output":["ParseError", ["Comment", ""]]}, + +{"description":"Short comment three", + "input":"", + "output":[["Comment", ""]]}, + + +{"description":"Ampersand EOF", "input":"&", -"output":["ParseError", ["Character", "&"]]}, +"output":[["Character", "&"]]}, + +{"description":"Ampersand ampersand EOF", +"input":"&&", +"output":[["Character", "&&"]]}, + +{"description":"Ampersand space EOF", +"input":"& ", +"output":[["Character", "& "]]}, {"description":"Unfinished entity", "input":"&f", -"output":["ParseError", ["Character", "&"], ["Character", "f"]]}, +"output":["ParseError", ["Character", "&f"]]}, {"description":"Ampersand, number sign", "input":"&#", -"output":["ParseError", ["Character", "&"], ["Character", "#"]]}, +"output":["ParseError", ["Character", "&#"]]}, {"description":"Unfinished numeric entity", "input":"&#x", @@ -102,20 +123,19 @@ {"description":"Entity with trailing semicolon (1)", "input":"I'm ¬it", -"output":[["Character","I'm ¬it"]]}, +"output":[["Character","I'm \u00ACit"]]}, {"description":"Entity with trailing semicolon (2)", "input":"I'm ∉", -"output":[["Character","I'm ∉"]]}, +"output":[["Character","I'm \u2209"]]}, {"description":"Entity without trailing semicolon (1)", "input":"I'm ¬it", -"output":[["Character","I'm "], "ParseError", ["Character", "¬"], -["Character", "it"]]}, +"output":[["Character","I'm "], "ParseError", ["Character", "\u00ACit"]]}, {"description":"Entity without trailing semicolon (2)", "input":"I'm ¬in", -"output":[["Character","I'm "], "ParseError", ["Character", "∉"]]}, +"output":[["Character","I'm "], "ParseError", ["Character", "\u00ACin"]]}, {"description":"Partial entity match at end of file", "input":"I'm &no", @@ -131,6 +151,22 @@ {"description":"Hexadecimal entity in attribute", "input":"", -"output":[["StartTag", "h", {"a":"?"}], ["EndTag", "h"]]} +"output":[["StartTag", "h", {"a":"?"}], ["EndTag", "h"]]}, + +{"description":"Entity in attribute without semicolon ending in x", +"input":"", +"output":["ParseError", ["StartTag", "h", {"a":"¬x"}]]}, + +{"description":"Entity in attribute without semicolon ending in 1", +"input":"", +"output":["ParseError", ["StartTag", "h", {"a":"¬1"}]]}, + +{"description":"Entity in attribute without semicolon ending in i", +"input":"", +"output":["ParseError", ["StartTag", "h", {"a":"¬i"}]]}, + +{"description":"Entity in attribute without semicolon", +"input":"", +"output":["ParseError", ["StartTag", "h", {"a":"\u00A9"}]]} ]} diff --git a/test/data/tokeniser2/test2.test b/test/data/tokeniser2/test2.test index 32c0f99..50c3531 100644 --- a/test/data/tokeniser2/test2.test +++ b/test/data/tokeniser2/test2.test @@ -1,32 +1,68 @@ {"tests": [ -{"description":"Doctype without a name", +{"description":"DOCTYPE without name", "input":"", -"output":["ParseError", "ParseError", ["DOCTYPE", "", true]]}, +"output":["ParseError", "ParseError", ["DOCTYPE", "", null, null, false]]}, -{"description":"Correct doctype without a space before name", +{"description":"DOCTYPE without space before name", "input":"", -"output":["ParseError", ["DOCTYPE", "HTML", false]]}, +"output":["ParseError", ["DOCTYPE", "html", null, null, true]]}, -{"description":"Incorrect doctype without a space before name", +{"description":"Incorrect DOCTYPE without a space before name", "input":"", -"output":["ParseError", ["DOCTYPE", "FOO", true]]}, +"output":["ParseError", ["DOCTYPE", "foo", null, null, true]]}, -{"description":"Bogus doctype", +{"description":"DOCTYPE with publicId", "input":"", -"output":["ParseError", ["DOCTYPE", "HTML", true]]}, +"output":[["DOCTYPE", "html", "-//W3C//DTD HTML Transitional 4.01//EN", null, true]]}, + +{"description":"DOCTYPE with EOF after PUBLIC", +"input":"", +"output":[["DOCTYPE", "html", null, "-//W3C//DTD HTML Transitional 4.01//EN", true]]}, + +{"description":"DOCTYPE with publicId and systemId", +"input":"", +"output":[["DOCTYPE", "html", "-//W3C//DTD HTML Transitional 4.01//EN", "-//W3C//DTD HTML Transitional 4.01//EN", true]]}, + +{"description":"DOCTYPE with > in double-quoted publicId", +"input":"x", +"output":["ParseError", ["DOCTYPE", "html", "", null, false], ["Character", "x"]]}, + +{"description":"DOCTYPE with > in single-quoted publicId", +"input":"x", +"output":["ParseError", ["DOCTYPE", "html", "", null, false], ["Character", "x"]]}, + +{"description":"DOCTYPE with > in double-quoted systemId", +"input":"x", +"output":["ParseError", ["DOCTYPE", "html", "foo", "", false], ["Character", "x"]]}, + +{"description":"DOCTYPE with > in single-quoted systemId", +"input":"x", +"output":["ParseError", ["DOCTYPE", "html", "foo", "", false], ["Character", "x"]]}, {"description":"Incomplete doctype", "input":"", -"output":["ParseError", ["StartTag", "h", { "a":"&" }]]}, +"output":[["StartTag", "h", { "a":"&" }]]}, {"description":"StartTag containing <", "input":"", -"output":["ParseError", ["StartTag", "a", { }], ["StartTag", "b", { }]]}, +"output":[["StartTag", "a", -"output":["ParseError", ["StartTag", "h", { }]]}, +"output":[["StartTag","h",{},true]]}, {"description":"Void element with permitted slash", "input":"
", -"output":[["StartTag", "br", { }]]}, +"output":[["StartTag","br",{},true]]}, + +{"description":"Void element with permitted slash (with attribute)", +"input":"
", +"output":[["StartTag","br",{"foo":"bar"},true]]}, {"description":"StartTag containing /", "input":"", @@ -96,12 +132,17 @@ "input":"foo < bar", "output":[["Character", "foo "], "ParseError", ["Character", "< bar"]]}, -/* jmb -- libjson uses C strings internally, thus the input gets truncated before the - * data is fed to the input stream (and thus the tokeniser) {"description":"Null Byte Replacement", "input":"\u0000", -"output":[["Character", "\ufffd"]]} -*/ +"output":["ParseError", ["Character", "\ufffd"]]}, + +{"description":"Comment with dash", +"input":"", +"input":"", +"output":["ParseError", ["Comment", ""]]}, + +{"description":"", +"input":"", +"output":["ParseError", ["Comment", ""]]}, + +{"description":"", +"input":"", +"output":[["Comment", ""]]}, + +{"description":"