This tests parsing and re-serialization of some CSS selectors.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS parseThenSerializeRule('* { }') is '* { }'
PASS parseThenSerializeRule('a { }') is 'a { }'
PASS parseThenSerializeRule('#a { }') is '#a { }'
PASS parseThenSerializeRule('.a { }') is '.a { }'
PASS parseThenSerializeRule(':active { }') is ':active { }'
PASS parseThenSerializeRule('[a] { }') is '[a] { }'
PASS parseThenSerializeRule('[a="b"] { }') is '[a="b"] { }'
PASS parseThenSerializeRule('[a~="b"] { }') is '[a~="b"] { }'
PASS parseThenSerializeRule('[a|="b"] { }') is '[a|="b"] { }'
PASS parseThenSerializeRule('[a^="b"] { }') is '[a^="b"] { }'
PASS parseThenSerializeRule('[a$="b"] { }') is '[a$="b"] { }'
PASS parseThenSerializeRule('[a*="b"] { }') is '[a*="b"] { }'

PASS parseThenSerializeRule('*|a { }') is '*|a { }'
PASS parseThenSerializeRule('n|a { }') is 'n|a { }'
PASS parseThenSerializeRule('*|* { }') is '*|* { }'
PASS parseThenSerializeRule('n|* { }') is 'n|* { }'
PASS parseThenSerializeRule('[*|a] { }') is '[*|a] { }'
PASS parseThenSerializeRule('[n|a] { }') is '[n|a] { }'

PASS parseThenSerializeRule('a:active { }') is 'a:active { }'
PASS parseThenSerializeRule('a b { }') is 'a b { }'
PASS parseThenSerializeRule('a + b { }') is 'a + b { }'
PASS parseThenSerializeRule('a ~ b { }') is 'a ~ b { }'
PASS parseThenSerializeRule('a > b { }') is 'a > b { }'

PASS parseThenSerializeRule(':active { }') is ':active { }'
PASS parseThenSerializeRule(':checked { }') is ':checked { }'
PASS parseThenSerializeRule(':disabled { }') is ':disabled { }'
PASS parseThenSerializeRule(':empty { }') is ':empty { }'
PASS parseThenSerializeRule(':enabled { }') is ':enabled { }'
PASS parseThenSerializeRule(':first-child { }') is ':first-child { }'
PASS parseThenSerializeRule(':first-of-type { }') is ':first-of-type { }'
PASS parseThenSerializeRule(':focus { }') is ':focus { }'
PASS parseThenSerializeRule(':hover { }') is ':hover { }'
PASS parseThenSerializeRule(':indeterminate { }') is ':indeterminate { }'
PASS parseThenSerializeRule(':link { }') is ':link { }'
PASS parseThenSerializeRule(':root { }') is ':root { }'
PASS parseThenSerializeRule(':target { }') is ':target { }'
PASS parseThenSerializeRule(':visited { }') is ':visited { }'

PASS parseThenSerializeRule(':lang(a) { }') is ':lang(a) { }'
PASS parseThenSerializeRule(':not(a) { }') is ':not(a) { }'

PASS parseThenSerializeRule('::after { }') is '::after { }'
PASS parseThenSerializeRule('::before { }') is '::before { }'
PASS parseThenSerializeRule('::first-letter { }') is '::first-letter { }'
PASS parseThenSerializeRule('::first-line { }') is '::first-line { }'
PASS parseThenSerializeRule('::selection { }') is '::selection { }'

PASS parseThenSerializeRule(':-webkit-any-link { }') is ':-webkit-any-link { }'
PASS parseThenSerializeRule(':-webkit-autofill { }') is ':-webkit-autofill { }'
PASS parseThenSerializeRule(':-webkit-drag { }') is ':-webkit-drag { }'

PASS parseThenSerializeRule('::-webkit-file-upload-button { }') is '::-webkit-file-upload-button { }'
PASS parseThenSerializeRule('::-webkit-search-cancel-button { }') is '::-webkit-search-cancel-button { }'
PASS parseThenSerializeRule('::-webkit-search-decoration { }') is '::-webkit-search-decoration { }'
PASS parseThenSerializeRule('::-webkit-search-results-button { }') is '::-webkit-search-results-button { }'
PASS parseThenSerializeRule('::-webkit-search-results-decoration { }') is '::-webkit-search-results-decoration { }'
PASS parseThenSerializeRule('::-webkit-slider-thumb { }') is '::-webkit-slider-thumb { }'

PASS parseThenSerializeRule('input:not([type="file"]):focus { }') is 'input:not([type="file"]):focus { }'

PASS parseThenSerializeRule('*:active { }') is ':active { }'
PASS parseThenSerializeRule('|a { }') is 'a { }'

PASS parseThenSerializeRule('input[type=file]:focus { }') is 'input[type="file"]:focus { }'

PASS parseThenSerializeRule('a+b { }') is 'a + b { }'
PASS parseThenSerializeRule('a~b { }') is 'a ~ b { }'
PASS parseThenSerializeRule('a>b { }') is 'a > b { }'

PASS parseThenSerializeRule(':after { }') is '::after { }'
PASS parseThenSerializeRule(':before { }') is '::before { }'
PASS parseThenSerializeRule(':first-letter { }') is '::first-letter { }'
PASS parseThenSerializeRule(':first-line { }') is '::first-line { }'

PASS successfullyParsed is true

TEST COMPLETE

