137 lines
3.7 KiB
Plaintext
137 lines
3.7 KiB
Plaintext
|
{"tests": [
|
||
|
|
||
|
{"description":"Correct Doctype lowercase",
|
||
|
"input":"<!DOCTYPE html>",
|
||
|
"output":[["DOCTYPE", "HTML", false]]},
|
||
|
|
||
|
{"description":"Correct Doctype uppercase",
|
||
|
"input":"<!DOCTYPE HTML>",
|
||
|
"output":[["DOCTYPE", "HTML", false]]},
|
||
|
|
||
|
{"description":"Correct Doctype mixed case",
|
||
|
"input":"<!DOCTYPE HtMl>",
|
||
|
"output":[["DOCTYPE", "HTML", false]]},
|
||
|
|
||
|
{"description":"Truncated doctype start",
|
||
|
"input":"<!DOC>",
|
||
|
"output":["ParseError", ["Comment", "DOC"]]},
|
||
|
|
||
|
{"description":"Doctype in error",
|
||
|
"input":"<!DOCTYPE foo>",
|
||
|
"output":[["DOCTYPE", "FOO", true]]},
|
||
|
|
||
|
{"description":"Single Start Tag",
|
||
|
"input":"<h>",
|
||
|
"output":[["StartTag", "h", {}]]},
|
||
|
|
||
|
{"description":"Empty end tag",
|
||
|
"input":"</>",
|
||
|
"output":["ParseError"]},
|
||
|
|
||
|
{"description":"Empty start tag",
|
||
|
"input":"<>",
|
||
|
"output":["ParseError", ["Character", "<>"]]},
|
||
|
|
||
|
{"description":"Start Tag w/attribute",
|
||
|
"input":"<h a='b'>",
|
||
|
"output":[["StartTag", "h", {"a":"b"}]]},
|
||
|
|
||
|
{"description":"Start Tag w/attribute no quotes",
|
||
|
"input":"<h a=b>",
|
||
|
"output":[["StartTag", "h", {"a":"b"}]]},
|
||
|
|
||
|
{"description":"Start/End Tag",
|
||
|
"input":"<h></h>",
|
||
|
"output":[["StartTag", "h", {}], ["EndTag", "h"]]},
|
||
|
|
||
|
{"description":"Two unclosed start tags",
|
||
|
"input":"<p>One<p>Two",
|
||
|
"output":[["StartTag", "p", {}], ["Character", "One"], ["StartTag", "p", {}], ["Character", "Two"]]},
|
||
|
|
||
|
{"description":"End Tag w/attribute",
|
||
|
"input":"<h></h a='b'>",
|
||
|
"output":[["StartTag", "h", {}], "ParseError", ["EndTag", "h"]]},
|
||
|
|
||
|
{"description":"Multiple atts",
|
||
|
"input":"<h a='b' c='d'>",
|
||
|
"output":[["StartTag", "h", {"a":"b", "c":"d"}]]},
|
||
|
|
||
|
{"description":"Multiple atts no space",
|
||
|
"input":"<h a='b'c='d'>",
|
||
|
"output":[["StartTag", "h", {"a":"b", "c":"d"}]]},
|
||
|
|
||
|
{"description":"Repeated attr",
|
||
|
"input":"<h a='b' a='d'>",
|
||
|
"output":["ParseError", ["StartTag", "h", {"a":"b"}]]},
|
||
|
|
||
|
{"description":"Simple comment",
|
||
|
"input":"<!--comment-->",
|
||
|
"output":[["Comment", "comment"]]},
|
||
|
|
||
|
{"description":"Comment, Central dash no space",
|
||
|
"input":"<!----->",
|
||
|
"output":["ParseError", ["Comment", "-"]]},
|
||
|
|
||
|
{"description":"Comment, two central dashes",
|
||
|
"input":"<!-- --comment -->",
|
||
|
"output":["ParseError", ["Comment", " --comment "]]},
|
||
|
|
||
|
{"description":"Unfinished comment",
|
||
|
"input":"<!--comment",
|
||
|
"output":["ParseError", ["Comment", "comment"]]},
|
||
|
|
||
|
{"description":"Start of a comment",
|
||
|
"input":"<!-",
|
||
|
"output":["ParseError", ["Comment", "-"]]},
|
||
|
|
||
|
{"description":"Ampersand only",
|
||
|
"input":"&",
|
||
|
"output":["ParseError", ["Character", "&"]]},
|
||
|
|
||
|
{"description":"Unfinished entity",
|
||
|
"input":"&f",
|
||
|
"output":["ParseError", ["Character", "&"], ["Character", "f"]]},
|
||
|
|
||
|
{"description":"Ampersand, number sign",
|
||
|
"input":"&#",
|
||
|
"output":["ParseError", ["Character", "&"], ["Character", "#"]]},
|
||
|
|
||
|
{"description":"Unfinished numeric entity",
|
||
|
"input":"&#x",
|
||
|
"output":["ParseError", ["Character", "&#x"]]},
|
||
|
|
||
|
{"description":"Entity with trailing semicolon (1)",
|
||
|
"input":"I'm ¬it",
|
||
|
"output":[["Character","I'm ¬it"]]},
|
||
|
|
||
|
{"description":"Entity with trailing semicolon (2)",
|
||
|
"input":"I'm ∉",
|
||
|
"output":[["Character","I'm ∉"]]},
|
||
|
|
||
|
{"description":"Entity without trailing semicolon (1)",
|
||
|
"input":"I'm ¬it",
|
||
|
"output":[["Character","I'm "], "ParseError", ["Character", "¬"],
|
||
|
["Character", "it"]]},
|
||
|
|
||
|
{"description":"Entity without trailing semicolon (2)",
|
||
|
"input":"I'm ¬in",
|
||
|
"output":[["Character","I'm "], "ParseError", ["Character", "∉"]]},
|
||
|
|
||
|
{"description":"Partial entity match at end of file",
|
||
|
"input":"I'm &no",
|
||
|
"output":[["Character","I'm "], "ParseError", ["Character", "&no"]]},
|
||
|
|
||
|
{"description":"ASCII decimal entity",
|
||
|
"input":"$",
|
||
|
"output":[["Character","$"]]},
|
||
|
|
||
|
{"description":"ASCII hexadecimal entity",
|
||
|
"input":"?",
|
||
|
"output":[["Character","?"]]},
|
||
|
|
||
|
{"description":"Hexadecimal entity in attribute",
|
||
|
"input":"<h a='?'></h>",
|
||
|
"output":[["StartTag", "h", {"a":"?"}], ["EndTag", "h"]]}
|
||
|
|
||
|
]}
|