catberry
Version:
Catberry is an isomorphic framework for building universal front-end apps using components, Flux architecture and progressive rendering.
1,034 lines • 18.1 kB
JSON
{
"cases": [
{
"description": "should return ILLEGAL on empty string",
"html": "",
"expected": [
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL on wrong beginning",
"html": "f",
"expected": [
{
"name": "ILLEGAL",
"value": "f"
}
]
},
{
"description": "should return ILLEGAL on wrong tag name",
"html": "<>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "ILLEGAL",
"value": ">"
}
]
},
{
"description": "should return ILLEGAL on null symbol after tag name",
"html": "<tag\u0000>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "ILLEGAL",
"value": "\u0000"
}
]
},
{
"description": "should return ILLEGAL if wrong symbol instead attribute name",
"html": "<tag <>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ILLEGAL",
"value": "<"
}
]
},
{
"description": "should return ILLEGAL if end after attribute name",
"html": "<tag attr",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "attr"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL on wrong attribute name",
"html": "<name a\"=123>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "ILLEGAL",
"value": "\""
}
]
},
{
"description": "should return ILLEGAL on wrong double-quoted attribute value",
"html": "<name a=\"123\u0000\">",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "123"
},
{
"name": "ILLEGAL",
"value": "\u0000"
}
]
},
{
"description": "should return ILLEGAL on wrong single-quoted attribute value",
"html": "<name a='123\u0000'>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "='"
},
{
"name": "ATTRIBUTE_VALUE_SINGLE_QUOTED",
"value": "123"
},
{
"name": "ILLEGAL",
"value": "\u0000"
}
]
},
{
"description": "should return ILLEGAL if end after single-quoted attribute value",
"html": "<name a='123",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "='"
},
{
"name": "ATTRIBUTE_VALUE_SINGLE_QUOTED",
"value": "123"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL if end after unquoted attribute value",
"html": "<name a=123",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "123"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL if wrong symbol after unquoted attribute value",
"html": "<name a=123\u0000",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "123"
},
{
"name": "ILLEGAL",
"value": "\u0000"
}
]
},
{
"description": "should return ILLEGAL if tag ends after equals",
"html": "<name a=>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ILLEGAL",
"value": ">"
}
]
},
{
"description": "should return ILLEGAL if tag end is absent after tag name",
"html": "<name",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL if wrong tag end",
"html": "<name /",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL on absent closing quote",
"html": "<name a=\"123 b>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "123 b>"
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL on absent tag end after closing quote",
"html": "<name a=\"123 b\"",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "123 b"
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "\""
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should return ILLEGAL on absent tag end after equal",
"html": "<name a=",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "name"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "a"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ILLEGAL",
"value": ""
}
]
},
{
"description": "should correctly tokenize tag without attributes",
"html": "<tag>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize self-closing tag without attributes",
"html": "<tag />",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize self-closing tag with whitespaces and without attributes",
"html": "<tag\t\n />",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": "\t\n "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with quoted attributes",
"html": "<tag some1=\"attribute value\" some2='attribute value2'>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "attribute value"
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "\""
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "='"
},
{
"name": "ATTRIBUTE_VALUE_SINGLE_QUOTED",
"value": "attribute value2"
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "'"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with unquoted attributes",
"html": "<tag some1=value some2 = 123 >",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "value"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "= "
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "123"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize self-closing tag with unquoted attributes and spaces",
"html": "<tag some1 = value some2 = 123 />",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "= "
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "value"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "= "
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "123"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with unquoted attributes without whitespace",
"html": "<tag some1=value some2=123>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "value"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "="
},
{
"name": "ATTRIBUTE_VALUE_UNQUOTED",
"value": "123"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with boolean attributes",
"html": "<tag some1 some2 >",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize self-closing tag with boolean attributes",
"html": "<tag some1 some2 />",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with boolean attributes and whitespaces",
"html": "<tag\t\n some1\t\n some2\t\n />",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": "\t\n "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": "\t\n "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some2"
},
{
"name": "AFTER_ATTRIBUTE_NAME",
"value": "\t\n "
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize tag with end after boolean attribute",
"html": "<tag some1>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize self-closing tag with end after boolean attribute",
"html": "<tag some1/>",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "tag"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "some1"
},
{
"name": "SELF_CLOSING_START_TAG_STATE",
"value": "/"
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
},
{
"description": "should correctly tokenize real tag",
"html": "<div id=\"css-stamp\" style=\"position: absolute !important; visibility: hidden !important\" class=\"\">",
"expected": [
{
"name": "TAG_OPEN",
"value": "<"
},
{
"name": "TAG_NAME",
"value": "div"
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "id"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "css-stamp"
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "\""
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "style"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": "position: absolute !important; visibility: hidden !important"
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "\""
},
{
"name": "BEFORE_ATTRIBUTE_NAME",
"value": " "
},
{
"name": "ATTRIBUTE_NAME",
"value": "class"
},
{
"name": "BEFORE_ATTRIBUTE_VALUE",
"value": "=\""
},
{
"name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED",
"value": ""
},
{
"name": "AFTER_ATTRIBUTE_VALUE_QUOTED",
"value": "\""
},
{
"name": "TAG_CLOSE",
"value": ">"
}
]
}
]
}