Test constructors for classes in Window

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

PASS Audio.prototype.toString.call(new Audio) is '[object HTMLAudioElement]'
PASS Image.prototype.toString.call(new Image) is '[object HTMLImageElement]'
PASS Option.prototype.toString.call(new Option) is '[object HTMLOptionElement]'
PASS WebKitPoint.prototype.toString.call(new WebKitPoint) is '[object WebKitPoint]'
PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix) is 'matrix(1, 0, 0, 1, 0, 0)'
PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix()) is 'matrix(1, 0, 0, 1, 0, 0)'
PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(undefined)) is 'matrix(1, 0, 0, 1, 0, 0)'
PASS new WebKitCSSMatrix(null) threw exception SyntaxError: The string did not match the expected pattern..
PASS XMLHttpRequest.prototype.toString.call(new XMLHttpRequest) is '[object XMLHttpRequest]'
PASS XSLTProcessor.prototype.toString.call(new XSLTProcessor) is '[object XSLTProcessor]'
PASS successfullyParsed is true

TEST COMPLETE

