blob: 9aa80f52836e6725c1b5b26db1468166419097fb [file] [log] [blame]
This tests setting and re-serialization of some CSS selectors.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS setThenReadSelectorText('') is '_foo'
PASS setThenReadSelectorText('123') is '_foo'
PASS setThenReadSelectorText('-') is '_foo'
PASS setThenReadSelectorText('$') is '_foo'
PASS setThenReadSelectorText(':') is '_foo'
PASS setThenReadSelectorText('.') is '_foo'
PASS setThenReadSelectorText('#') is '_foo'
PASS setThenReadSelectorText('[]') is '_foo'
PASS setThenReadSelectorText('()') is '_foo'
PASS setThenReadSelectorText('*') is '*'
PASS setThenReadSelectorText('a') is 'a'
PASS setThenReadSelectorText('#a') is '#a'
PASS setThenReadSelectorText('.a') is '.a'
PASS setThenReadSelectorText(':active') is ':active'
PASS setThenReadSelectorText('[a]') is '[a]'
PASS setThenReadSelectorText('[a="b"]') is '[a="b"]'
PASS setThenReadSelectorText('[a~="b"]') is '[a~="b"]'
PASS setThenReadSelectorText('[a|="b"]') is '[a|="b"]'
PASS setThenReadSelectorText('[a^="b"]') is '[a^="b"]'
PASS setThenReadSelectorText('[a$="b"]') is '[a$="b"]'
PASS setThenReadSelectorText('[a*="b"]') is '[a*="b"]'
PASS setThenReadSelectorText('[a="b" i]') is '[a="b" i]'
PASS setThenReadSelectorText('[a~="b" i]') is '[a~="b" i]'
PASS setThenReadSelectorText('[a|="b" i]') is '[a|="b" i]'
PASS setThenReadSelectorText('[a^="b" i]') is '[a^="b" i]'
PASS setThenReadSelectorText('[a$="b" i]') is '[a$="b" i]'
PASS setThenReadSelectorText('[a*="b" i]') is '[a*="b" i]'
PASS setThenReadSelectorText('*|a') is 'a'
PASS setThenReadSelectorText('*|*') is '*'
PASS setThenReadSelectorText('[*|a]') is '[*|a]'
PASS setThenReadSelectorText('|*') is '|*'
PASS setThenReadSelectorText('[*|a]') is '[*|a]'
PASS setThenReadSelectorText('[|a]') is '[a]'
PASS setThenReadSelectorText('a:active') is 'a:active'
PASS setThenReadSelectorText('a b') is 'a b'
PASS setThenReadSelectorText('a + b') is 'a + b'
PASS setThenReadSelectorText('a ~ b') is 'a ~ b'
PASS setThenReadSelectorText('a > b') is 'a > b'
PASS setThenReadSelectorText(':active') is ':active'
PASS setThenReadSelectorText(':any-link') is ':any-link'
PASS setThenReadSelectorText(':checked') is ':checked'
PASS setThenReadSelectorText(':disabled') is ':disabled'
PASS setThenReadSelectorText(':empty') is ':empty'
PASS setThenReadSelectorText(':enabled') is ':enabled'
PASS setThenReadSelectorText(':first-child') is ':first-child'
PASS setThenReadSelectorText(':first-of-type') is ':first-of-type'
PASS setThenReadSelectorText(':focus') is ':focus'
PASS setThenReadSelectorText(':hover') is ':hover'
PASS setThenReadSelectorText(':indeterminate') is ':indeterminate'
PASS setThenReadSelectorText(':link') is ':link'
PASS setThenReadSelectorText(':not(:placeholder-shown)') is ':not(:placeholder-shown)'
PASS setThenReadSelectorText(':placeholder-shown') is ':placeholder-shown'
PASS setThenReadSelectorText(':root') is ':root'
PASS setThenReadSelectorText(':target') is ':target'
PASS setThenReadSelectorText(':visited') is ':visited'
PASS setThenReadSelectorText(':dir(a)') is ':dir(a)'
PASS setThenReadSelectorText(':lang("a")') is ':lang("a")'
PASS setThenReadSelectorText(':lang(a)') is ':lang("a")'
PASS setThenReadSelectorText(':not(a)') is ':not(a)'
PASS setThenReadSelectorText(':role(a)') is ':role(a)'
PASS setThenReadSelectorText(':-webkit-any(a, b, p)') is ':-webkit-any(a, b, p)'
PASS setThenReadSelectorText('::after') is '::after'
PASS setThenReadSelectorText('::before') is '::before'
PASS setThenReadSelectorText('::first-letter') is '::first-letter'
PASS setThenReadSelectorText('::first-line') is '::first-line'
PASS setThenReadSelectorText('::selection') is '::selection'
PASS setThenReadSelectorText(':-webkit-any-link') is ':-webkit-any-link'
PASS setThenReadSelectorText(':-webkit-autofill') is ':-webkit-autofill'
PASS setThenReadSelectorText(':-webkit-drag') is ':-webkit-drag'
PASS setThenReadSelectorText('a:any-link') is 'a:any-link'
PASS setThenReadSelectorText('a :any-link') is 'a :any-link'
PASS setThenReadSelectorText('div:any-link') is 'div:any-link'
PASS setThenReadSelectorText('div :any-link') is 'div :any-link'
PASS setThenReadSelectorText(':any-link > div') is ':any-link > div'
PASS setThenReadSelectorText(':any-link + div') is ':any-link + div'
PASS setThenReadSelectorText(':not(:any-link)') is ':not(:any-link)'
PASS setThenReadSelectorText(':nth-child(odd)') is ':nth-child(odd)'
PASS setThenReadSelectorText(':nth-child(even)') is ':nth-child(even)'
PASS setThenReadSelectorText(':nth-child(n)') is ':nth-child(n)'
PASS setThenReadSelectorText(':nth-child(-n)') is ':nth-child(-n)'
PASS setThenReadSelectorText(':nth-child(5)') is ':nth-child(5)'
PASS setThenReadSelectorText(':nth-child(-5)') is ':nth-child(-5)'
PASS setThenReadSelectorText(':nth-child(5n+7)') is ':nth-child(5n+7)'
PASS setThenReadSelectorText(':nth-child(-5n+7)') is ':nth-child(-5n+7)'
PASS setThenReadSelectorText(':nth-child(5n-7)') is ':nth-child(5n-7)'
PASS setThenReadSelectorText(':nth-child(-5n-7)') is ':nth-child(-5n-7)'
PASS setThenReadSelectorText(':nth-child(odd of .foo, :nth-child(odd))') is ':nth-child(odd of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(even of .foo, :nth-child(odd))') is ':nth-child(even of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(n of .foo, :nth-child(odd))') is ':nth-child(n of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(-n of .foo, :nth-child(odd))') is ':nth-child(-n of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(5 of .foo, :nth-child(odd))') is ':nth-child(5 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(-5 of .foo, :nth-child(odd))') is ':nth-child(-5 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(5n+7 of .foo, :nth-child(odd))') is ':nth-child(5n+7 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(-5n+7 of .foo, :nth-child(odd))') is ':nth-child(-5n+7 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(5n-7 of .foo, :nth-child(odd))') is ':nth-child(5n-7 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-child(-5n-7 of .foo, :nth-child(odd))') is ':nth-child(-5n-7 of .foo, :nth-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(odd of .foo, :nth-last-child(odd))') is ':nth-last-child(odd of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(even of .foo, :nth-last-child(odd))') is ':nth-last-child(even of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(n of .foo, :nth-last-child(odd))') is ':nth-last-child(n of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(-n of .foo, :nth-last-child(odd))') is ':nth-last-child(-n of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(5 of .foo, :nth-last-child(odd))') is ':nth-last-child(5 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(-5 of .foo, :nth-last-child(odd))') is ':nth-last-child(-5 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(5n+7 of .foo, :nth-last-child(odd))') is ':nth-last-child(5n+7 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(-5n+7 of .foo, :nth-last-child(odd))') is ':nth-last-child(-5n+7 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(5n-7 of .foo, :nth-last-child(odd))') is ':nth-last-child(5n-7 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':nth-last-child(-5n-7 of .foo, :nth-last-child(odd))') is ':nth-last-child(-5n-7 of .foo, :nth-last-child(odd))'
PASS setThenReadSelectorText(':matches(single)') is ':matches(single)'
PASS setThenReadSelectorText(':matches(a, b, p)') is ':matches(a, b, p)'
PASS setThenReadSelectorText(':matches(#alice, #bob, #chris)') is ':matches(#alice, #bob, #chris)'
PASS setThenReadSelectorText(':matches(.selector, #tama, #hanayo, #midoriko)') is ':matches(.selector, #tama, #hanayo, #midoriko)'
PASS setThenReadSelectorText(':matches(.name, #ok, :visited)') is ':matches(.name, #ok, :visited)'
PASS setThenReadSelectorText(':matches(.name, #ok, :visited, :link)') is ':matches(.name, #ok, :visited, :link)'
PASS setThenReadSelectorText(':matches(.name, #ok, :matches(:visited))') is ':matches(.name, #ok, :matches(:visited))'
PASS setThenReadSelectorText(':matches(.name, #ok, :not(:link))') is ':matches(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':matches(.name, #ok, :not(:link))') is ':matches(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':matches(.name, #ok, :-webkit-any(hello))') is ':matches(.name, #ok, :-webkit-any(hello))'
PASS setThenReadSelectorText(':matches(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))') is ':matches(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))'
PASS setThenReadSelectorText(':matches([type="file"])') is ':matches([type="file"])'
PASS setThenReadSelectorText(':matches(:hover)') is ':matches(:hover)'
PASS setThenReadSelectorText('input:matches([type="file"], :hover, :focus):enabled') is 'input:matches([type="file"], :hover, :focus):enabled'
PASS setThenReadSelectorText(':matches(input[type="file"], a:hover, button:focus)') is ':matches(input[type="file"], a:hover, button:focus)'
PASS setThenReadSelectorText(':matches(.class1.class2.class3)') is ':matches(.class1.class2.class3)'
PASS setThenReadSelectorText(':matches(.class1:hover)') is ':matches(.class1:hover)'
PASS setThenReadSelectorText(':matches(a.class1.class2.class3:hover)') is ':matches(a.class1.class2.class3:hover)'
PASS setThenReadSelectorText(':matches(::first-letter, ::first-line)') is ':matches(::first-letter, ::first-line)'
PASS setThenReadSelectorText(':matches(a > ::first-letter, b ~ ::first-line, c ::after, d + ::before)') is ':matches(a > ::first-letter, b ~ ::first-line, c ::after, d + ::before)'
PASS setThenReadSelectorText(':matches(.ok a > ::first-letter, .ok b ~ ::first-line, .ok c ::after, .ok d + ::before)') is ':matches(.ok a > ::first-letter, .ok b ~ ::first-line, .ok c ::after, .ok d + ::before)'
PASS setThenReadSelectorText(':matches(.ok a > .ok ::first-letter, .ok b ~ .ok ::first-line, .ok c .ok ::after, .ok d + .ok ::before)') is ':matches(.ok a > .ok ::first-letter, .ok b ~ .ok ::first-line, .ok c .ok ::after, .ok d + .ok ::before)'
PASS setThenReadSelectorText(':-webkit-any(:matches(single))') is ':-webkit-any(:matches(single))'
PASS setThenReadSelectorText(':-webkit-any(:matches(a, b, p))') is ':-webkit-any(:matches(a, b, p))'
PASS setThenReadSelectorText(':-webkit-any(:matches(#alice, #bob, #chris))') is ':-webkit-any(:matches(#alice, #bob, #chris))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.selector, #tama, #hanayo, #midoriko))') is ':-webkit-any(:matches(.selector, #tama, #hanayo, #midoriko))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :visited))') is ':-webkit-any(:matches(.name, #ok, :visited))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :visited, :link))') is ':-webkit-any(:matches(.name, #ok, :visited, :link))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :matches(:visited)))') is ':-webkit-any(:matches(.name, #ok, :matches(:visited)))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :not(:link)))') is ':-webkit-any(:matches(.name, #ok, :not(:link)))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :not(:link)))') is ':-webkit-any(:matches(.name, #ok, :not(:link)))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :-webkit-any(hello)))') is ':-webkit-any(:matches(.name, #ok, :-webkit-any(hello)))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko)))') is ':-webkit-any(:matches(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko)))'
PASS setThenReadSelectorText(':-webkit-any(:matches([type="file"]))') is ':-webkit-any(:matches([type="file"]))'
PASS setThenReadSelectorText(':-webkit-any(:matches(:hover))') is ':-webkit-any(:matches(:hover))'
PASS setThenReadSelectorText(':-webkit-any(input:matches([type="file"], :hover, :focus):enabled)') is ':-webkit-any(input:matches([type="file"], :hover, :focus):enabled)'
PASS setThenReadSelectorText(':-webkit-any(:matches(input[type="file"], a:hover, button:focus))') is ':-webkit-any(:matches(input[type="file"], a:hover, button:focus))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.class1.class2.class3))') is ':-webkit-any(:matches(.class1.class2.class3))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.class1:hover))') is ':-webkit-any(:matches(.class1:hover))'
PASS setThenReadSelectorText(':-webkit-any(:matches(a.class1.class2.class3:hover))') is ':-webkit-any(:matches(a.class1.class2.class3:hover))'
PASS setThenReadSelectorText(':-webkit-any(:matches(::first-letter, ::first-line))') is ':-webkit-any(:matches(::first-letter, ::first-line))'
PASS setThenReadSelectorText(':-webkit-any(:matches(a > ::first-letter, b ~ ::first-line, c ::after, d + ::before))') is ':-webkit-any(:matches(a > ::first-letter, b ~ ::first-line, c ::after, d + ::before))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.ok a > ::first-letter, .ok b ~ ::first-line, .ok c ::after, .ok d + ::before))') is ':-webkit-any(:matches(.ok a > ::first-letter, .ok b ~ ::first-line, .ok c ::after, .ok d + ::before))'
PASS setThenReadSelectorText(':-webkit-any(:matches(.ok a > .ok ::first-letter, .ok b ~ .ok ::first-line, .ok c .ok ::after, .ok d + .ok ::before))') is ':-webkit-any(:matches(.ok a > .ok ::first-letter, .ok b ~ .ok ::first-line, .ok c .ok ::after, .ok d + .ok ::before))'
PASS setThenReadSelectorText(':not(div)') is ':not(div)'
PASS setThenReadSelectorText(':not(.div)') is ':not(.div)'
PASS setThenReadSelectorText(':not(#div)') is ':not(#div)'
PASS setThenReadSelectorText(':not([div])') is ':not([div])'
PASS setThenReadSelectorText(':not(:empty)') is ':not(:empty)'
PASS setThenReadSelectorText(':not(div.div#div[div]:empty)') is ':not(div.div#div[div]:empty)'
PASS setThenReadSelectorText(':not(div.div:empty[div]#div)') is ':not(div.div:empty[div]#div)'
PASS setThenReadSelectorText(':not(div.div, #div[div], :empty)') is ':not(div.div, #div[div], :empty)'
PASS setThenReadSelectorText(':not(div, .div, #div, [div], :empty)') is ':not(div, .div, #div, [div], :empty)'
PASS setThenReadSelectorText(':not(:not(div))') is ':not(:not(div))'
PASS setThenReadSelectorText(':not(:not(div)):not(:not(foo)):not(:not(bar))') is ':not(:not(div)):not(:not(foo)):not(:not(bar))'
PASS setThenReadSelectorText(':not(:not(div, :not(foo, bar))):not(:not(foo)):not(:not(bar, baz))') is ':not(:not(div, :not(foo, bar))):not(:not(foo)):not(:not(bar, baz))'
PASS setThenReadSelectorText(':not(:matches(*))') is ':not(:matches(*))'
PASS setThenReadSelectorText(':not(:matches(foo, bar))') is ':not(:matches(foo, bar))'
PASS setThenReadSelectorText(':not(:matches(foo, bar), :matches(.foo, .bar), :matches(#foo, #bar), :matches([foo], [bar]))') is ':not(:matches(foo, bar), :matches(.foo, .bar), :matches(#foo, #bar), :matches([foo], [bar]))'
PASS setThenReadSelectorText(':not(:matches(foo, bar:not(:empty)), :matches(.foo, .bar:not(:not(.mosaic))), :matches(#foo, #bar), :matches([foo], [bar]))') is ':not(:matches(foo, bar:not(:empty)), :matches(.foo, .bar:not(:not(.mosaic))), :matches(#foo, #bar), :matches([foo], [bar]))'
PASS setThenReadSelectorText(':nth-child(2n of :not(a.b, c#d.e))') is ':nth-child(2n of :not(a.b, c#d.e))'
PASS setThenReadSelectorText(':not(:nth-child(2n of :not(a.b, c#d.e)))') is ':not(:nth-child(2n of :not(a.b, c#d.e)))'
PASS setThenReadSelectorText(':not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child)') is ':not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child)'
PASS setThenReadSelectorText('a:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) b + c:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) ~ d:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) > d:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child)') is 'a:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) b + c:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) ~ d:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child) > d:not(a .b, #c > [d], e + f:empty, .g ~ #h:first-child)'
PASS setThenReadSelectorText('::-webkit-file-upload-button') is '::-webkit-file-upload-button'
PASS setThenReadSelectorText('::-webkit-search-cancel-button') is '::-webkit-search-cancel-button'
PASS setThenReadSelectorText('::-webkit-search-decoration') is '::-webkit-search-decoration'
PASS setThenReadSelectorText('::-webkit-search-results-button') is '::-webkit-search-results-button'
PASS setThenReadSelectorText('::-webkit-search-results-decoration') is '::-webkit-search-results-decoration'
PASS setThenReadSelectorText('::-webkit-slider-thumb') is '::-webkit-slider-thumb'
PASS setThenReadSelectorText('a::-webkit-slider-thumb') is 'a::-webkit-slider-thumb'
PASS setThenReadSelectorText('a ::-webkit-slider-thumb') is 'a ::-webkit-slider-thumb'
PASS setThenReadSelectorText('[a]::-webkit-slider-thumb') is '[a]::-webkit-slider-thumb'
PASS setThenReadSelectorText('[a] ::-webkit-slider-thumb') is '[a] ::-webkit-slider-thumb'
PASS setThenReadSelectorText('.a::-webkit-slider-thumb') is '.a::-webkit-slider-thumb'
PASS setThenReadSelectorText('.a ::-webkit-slider-thumb') is '.a ::-webkit-slider-thumb'
PASS setThenReadSelectorText('#a::-webkit-slider-thumb') is '#a::-webkit-slider-thumb'
PASS setThenReadSelectorText('#a ::-webkit-slider-thumb') is '#a ::-webkit-slider-thumb'
PASS setThenReadSelectorText('* ::-webkit-slider-thumb') is '* ::-webkit-slider-thumb'
PASS setThenReadSelectorText('a[b]::-webkit-slider-thumb') is 'a[b]::-webkit-slider-thumb'
PASS setThenReadSelectorText('a.b::-webkit-slider-thumb') is 'a.b::-webkit-slider-thumb'
PASS setThenReadSelectorText('a#b::-webkit-slider-thumb') is 'a#b::-webkit-slider-thumb'
PASS setThenReadSelectorText('a[b].c#d::-webkit-slider-thumb') is 'a[b].c#d::-webkit-slider-thumb'
PASS setThenReadSelectorText('a[b]::placeholder') is 'a[b]::placeholder'
PASS setThenReadSelectorText('a.b::placeholder') is 'a.b::placeholder'
PASS setThenReadSelectorText('a#b::placeholder') is 'a#b::placeholder'
PASS setThenReadSelectorText('a[b].c#d::placeholder') is 'a[b].c#d::placeholder'
PASS setThenReadSelectorText('a[b]::-webkit-input-placeholder') is 'a[b]::-webkit-input-placeholder'
PASS setThenReadSelectorText('a.b::-webkit-input-placeholder') is 'a.b::-webkit-input-placeholder'
PASS setThenReadSelectorText('a#b::-webkit-input-placeholder') is 'a#b::-webkit-input-placeholder'
PASS setThenReadSelectorText('a[b].c#d::-webkit-input-placeholder') is 'a[b].c#d::-webkit-input-placeholder'
PASS setThenReadSelectorText('a[b]:default') is 'a[b]:default'
PASS setThenReadSelectorText('a.b:default') is 'a.b:default'
PASS setThenReadSelectorText('a#b:default') is 'a#b:default'
PASS setThenReadSelectorText('a[b].c#d:default') is 'a[b].c#d:default'
PASS setThenReadSelectorText('a[b]:in-range') is 'a[b]:in-range'
PASS setThenReadSelectorText('a.b:in-range') is 'a.b:in-range'
PASS setThenReadSelectorText('a#b:in-range') is 'a#b:in-range'
PASS setThenReadSelectorText('a[b].c#d:in-range') is 'a[b].c#d:in-range'
PASS setThenReadSelectorText('a[b]:out-of-range') is 'a[b]:out-of-range'
PASS setThenReadSelectorText('a.b:out-of-range') is 'a.b:out-of-range'
PASS setThenReadSelectorText('a#b:out-of-range') is 'a#b:out-of-range'
PASS setThenReadSelectorText('a[b].c#d:out-of-range') is 'a[b].c#d:out-of-range'
PASS setThenReadSelectorText('a[b]:focus-within') is 'a[b]:focus-within'
PASS setThenReadSelectorText('a.b:focus-within') is 'a.b:focus-within'
PASS setThenReadSelectorText('a#b:focus-within') is 'a#b:focus-within'
PASS setThenReadSelectorText('a[b].c#d:focus-within') is 'a[b].c#d:focus-within'
PASS setThenReadSelectorText('input:not([type="file"]):focus') is 'input:not([type="file"]):focus'
PASS setThenReadSelectorText(':-webkit-any([type="file"])') is ':-webkit-any([type="file"])'
PASS setThenReadSelectorText(':-webkit-any(:hover)') is ':-webkit-any(:hover)'
PASS setThenReadSelectorText('input:-webkit-any([type="file"], :hover, :focus):enabled') is 'input:-webkit-any([type="file"], :hover, :focus):enabled'
PASS setThenReadSelectorText(':-webkit-any(input[type="file"], a:hover, button:focus)') is ':-webkit-any(input[type="file"], a:hover, button:focus)'
PASS setThenReadSelectorText(':-webkit-any(.class1.class2.class3)') is ':-webkit-any(.class1.class2.class3)'
PASS setThenReadSelectorText(':-webkit-any(.class1:hover)') is ':-webkit-any(.class1:hover)'
PASS setThenReadSelectorText(':-webkit-any(a.class1.class2.class3:hover)') is ':-webkit-any(a.class1.class2.class3:hover)'
PASS setThenReadSelectorText('*:active') is ':active'
PASS setThenReadSelectorText('input[type=file]:focus') is 'input[type="file"]:focus'
PASS setThenReadSelectorText('a+b') is 'a + b'
PASS setThenReadSelectorText('a~b') is 'a ~ b'
PASS setThenReadSelectorText('a>b') is 'a > b'
PASS setThenReadSelectorText(':after') is '::after'
PASS setThenReadSelectorText(':before') is '::before'
PASS setThenReadSelectorText(':first-letter') is '::first-letter'
PASS setThenReadSelectorText(':first-line') is '::first-line'
PASS setThenReadSelectorText(':-webkit-any( a.class1 , #id,[attr] )') is ':-webkit-any(a.class1, #id, [attr])'
PASS setThenReadSelectorText(':matches(single )') is ':matches(single)'
PASS setThenReadSelectorText(':matches(a,b ,p)') is ':matches(a, b, p)'
PASS setThenReadSelectorText(':matches(#alice, #bob,#chris)') is ':matches(#alice, #bob, #chris)'
PASS setThenReadSelectorText(':matches( .selector,#tama, #hanayo,#midoriko)') is ':matches(.selector, #tama, #hanayo, #midoriko)'
PASS setThenReadSelectorText(':matches( .name,#ok,:visited )') is ':matches(.name, #ok, :visited)'
PASS setThenReadSelectorText(':matches( .name,#ok, :visited, :link)') is ':matches(.name, #ok, :visited, :link)'
PASS setThenReadSelectorText(':matches( .name,#ok, :matches(:visited ))') is ':matches(.name, #ok, :matches(:visited))'
PASS setThenReadSelectorText(':matches(.name, #ok,:not(:link))') is ':matches(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':matches(.name,#ok,:not(:link))') is ':matches(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':matches( .name,#ok,:-webkit-any( hello))') is ':matches(.name, #ok, :-webkit-any(hello))'
PASS setThenReadSelectorText(':matches( .name,#ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))') is ':matches(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))'
PASS setThenReadSelectorText(':matches( [type="file"])') is ':matches([type="file"])'
PASS setThenReadSelectorText(':matches( :hover )') is ':matches(:hover)'
PASS setThenReadSelectorText('input:matches([type="file"],:hover,:focus):enabled') is 'input:matches([type="file"], :hover, :focus):enabled'
PASS setThenReadSelectorText(':matches(input[type="file"], a:hover, button:focus)') is ':matches(input[type="file"], a:hover, button:focus)'
PASS setThenReadSelectorText(':matches( .class1.class2.class3 )') is ':matches(.class1.class2.class3)'
PASS setThenReadSelectorText(':matches(.class1:hover )') is ':matches(.class1:hover)'
PASS setThenReadSelectorText(':matches(a.class1.class2.class3:hover )') is ':matches(a.class1.class2.class3:hover)'
PASS setThenReadSelectorText(':matches(:first-letter,::first-line)') is ':matches(::first-letter, ::first-line)'
PASS setThenReadSelectorText(':matches(a>:first-letter,b ~ ::first-line, c :after, d+ :before)') is ':matches(a > ::first-letter, b ~ ::first-line, c ::after, d + ::before)'
PASS setThenReadSelectorText(':matches(.ok a > ::first-letter, .ok b~ ::first-line, .ok c :after, .ok d +:before)') is ':matches(.ok a > ::first-letter, .ok b ~ ::first-line, .ok c ::after, .ok d + ::before)'
PASS setThenReadSelectorText(':matches(.ok a> .ok ::first-letter, .ok b ~.ok :first-line, .ok c .ok ::after, .ok d + .ok ::before)') is ':matches(.ok a > .ok ::first-letter, .ok b ~ .ok ::first-line, .ok c .ok ::after, .ok d + .ok ::before)'
PASS setThenReadSelectorText(':not(single )') is ':not(single)'
PASS setThenReadSelectorText(':not(a,b ,p)') is ':not(a, b, p)'
PASS setThenReadSelectorText(':not(#alice, #bob,#chris)') is ':not(#alice, #bob, #chris)'
PASS setThenReadSelectorText(':not( .selector,#tama, #hanayo,#midoriko)') is ':not(.selector, #tama, #hanayo, #midoriko)'
PASS setThenReadSelectorText(':not( .name,#ok,:visited )') is ':not(.name, #ok, :visited)'
PASS setThenReadSelectorText(':not( .name,#ok, :visited, :link)') is ':not(.name, #ok, :visited, :link)'
PASS setThenReadSelectorText(':not( .name,#ok, :not(:visited ))') is ':not(.name, #ok, :not(:visited))'
PASS setThenReadSelectorText(':not(.name, #ok,:not(:link))') is ':not(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':not(.name,#ok,:not(:link))') is ':not(.name, #ok, :not(:link))'
PASS setThenReadSelectorText(':not( .name,#ok,:-webkit-any( hello))') is ':not(.name, #ok, :-webkit-any(hello))'
PASS setThenReadSelectorText(':not( .name,#ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))') is ':not(.name, #ok, :-webkit-any(.selector, #tama, #hanayo, #midoriko))'
PASS setThenReadSelectorText(':not( [type="file"])') is ':not([type="file"])'
PASS setThenReadSelectorText(':not( :hover )') is ':not(:hover)'
PASS setThenReadSelectorText('input:not([type="file"],:hover,:focus):enabled') is 'input:not([type="file"], :hover, :focus):enabled'
PASS setThenReadSelectorText(':not(input[type="file"], a:hover, button:focus)') is ':not(input[type="file"], a:hover, button:focus)'
PASS setThenReadSelectorText(':not( .class1.class2.class3 )') is ':not(.class1.class2.class3)'
PASS setThenReadSelectorText(':not(.class1:hover )') is ':not(.class1:hover)'
PASS setThenReadSelectorText(':not(a.class1.class2.class3:hover )') is ':not(a.class1.class2.class3:hover)'
PASS setThenReadSelectorText(':not(:matches(single ),:matches(a,b ,p),:matches(#alice, #bob,#chris))') is ':not(:matches(single), :matches(a, b, p), :matches(#alice, #bob, #chris))'
PASS successfullyParsed is true
TEST COMPLETE