{"tests": [ {"description":"Correct Doctype lowercase", "input":"", "output":[["DOCTYPE", "HTML", false]]}, {"description":"Correct Doctype uppercase", "input":"", "output":[["DOCTYPE", "HTML", false]]}, {"description":"Correct Doctype mixed case", "input":"", "output":[["DOCTYPE", "HTML", false]]}, {"description":"Truncated doctype start", "input":"", "output":["ParseError", ["Comment", "DOC"]]}, {"description":"Doctype in error", "input":"", "output":[["DOCTYPE", "FOO", true]]}, {"description":"Single Start Tag", "input":"", "output":[["StartTag", "h", {}]]}, {"description":"Empty end tag", "input":"", "output":["ParseError"]}, {"description":"Empty start tag", "input":"<>", "output":["ParseError", ["Character", "<>"]]}, {"description":"Start Tag w/attribute", "input":"", "output":[["StartTag", "h", {"a":"b"}]]}, {"description":"Start Tag w/attribute no quotes", "input":"", "output":[["StartTag", "h", {"a":"b"}]]}, {"description":"Start/End Tag", "input":"", "output":[["StartTag", "h", {}], ["EndTag", "h"]]}, {"description":"Two unclosed start tags", "input":"

One

Two", "output":[["StartTag", "p", {}], ["Character", "One"], ["StartTag", "p", {}], ["Character", "Two"]]}, {"description":"End Tag w/attribute", "input":"", "output":[["StartTag", "h", {}], "ParseError", ["EndTag", "h"]]}, {"description":"Multiple atts", "input":"", "output":[["StartTag", "h", {"a":"b", "c":"d"}]]}, {"description":"Multiple atts no space", "input":"", "output":[["StartTag", "h", {"a":"b", "c":"d"}]]}, {"description":"Repeated attr", "input":"", "output":["ParseError", ["StartTag", "h", {"a":"b"}]]}, {"description":"Simple comment", "input":"", "output":[["Comment", "comment"]]}, {"description":"Comment, Central dash no space", "input":"", "output":["ParseError", ["Comment", "-"]]}, {"description":"Comment, two central dashes", "input":"", "output":["ParseError", ["Comment", " --comment "]]}, {"description":"Unfinished comment", "input":"