This tests that the querySelector, querySelectorAll and matchesSelector (webkitMatchesSelector) correctly stringify null and undefined to "null" and "undefined".

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


PASS document.querySelector(null) is nullNode
PASS document.querySelector(undefined) is undefinedNode
PASS document.querySelectorAll(null).length is 1
PASS document.querySelectorAll(null).item(0) is nullNode
PASS document.querySelectorAll(undefined).length is 1
PASS document.querySelectorAll(undefined).item(0) is undefinedNode
PASS nullNode.webkitMatchesSelector(null) is true
PASS undefinedNode.webkitMatchesSelector(undefined) is true
PASS successfullyParsed is true

TEST COMPLETE

