The pseudo class :any

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


simple :any selector list matched.
PASS getComputedStyle(document.getElementById("target1")).backgroundColor is "rgb(1, 2, 3)"
simple :any selector list matched.
PASS getComputedStyle(document.getElementById("target2")).backgroundColor is "rgb(1, 2, 3)"
simple :any selector unmatched.
PASS getComputedStyle(document.getElementById("target3")).backgroundColor is "rgb(0, 0, 0)"
multiple :any selector list matched.
PASS getComputedStyle(document.getElementById("target4")).backgroundColor is "rgb(2, 3, 4)"
multiple :any selector list matched.
PASS getComputedStyle(document.getElementById("target5")).backgroundColor is "rgb(2, 3, 4)"
multiple :any selector list unmatched.
PASS getComputedStyle(document.getElementById("target6")).backgroundColor is "rgb(0, 0, 0)"
multiple :any selector list unmatched.
PASS getComputedStyle(document.getElementById("target7")).backgroundColor is "rgb(0, 0, 0)"
multiple :any selector list unmatched.
PASS getComputedStyle(document.getElementById("target8")).backgroundColor is "rgb(0, 0, 0)"
simple :any selector list including :not matched.
PASS getComputedStyle(document.getElementById("target9")).backgroundColor is "rgb(3, 4, 5)"
simple :any selector list including :not matched.
PASS getComputedStyle(document.getElementById("target10")).backgroundColor is "rgb(3, 4, 5)"
simple :any selector list including :not matched.
PASS getComputedStyle(document.getElementById("target11")).backgroundColor is "rgb(3, 4, 5)"
simple :any selector list including :not unmatched.
PASS getComputedStyle(document.getElementById("target12")).backgroundColor is "rgb(0, 0, 0)"
simple :any selector list including :not unmatched.
PASS getComputedStyle(document.getElementById("target13")).backgroundColor is "rgb(0, 0, 0)"
:any selector including attributes matched.
PASS getComputedStyle(document.getElementById("target14")).backgroundColor is "rgb(4, 5, 6)"
:any selector including attributes matched.
PASS getComputedStyle(document.getElementById("target15")).backgroundColor is "rgb(4, 5, 6)"
:any selector including attributes unmatched.
PASS getComputedStyle(document.getElementById("target16")).backgroundColor is "rgb(0, 0, 0)"
PASS successfullyParsed is true

TEST COMPLETE

