This test checks the constants on the XMLHttpRequst object, as well as its prototype and constructor.

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


Test the constants on the XMLHttpRequest object itself.
PASS new XMLHttpRequest().UNSENT is 0
PASS new XMLHttpRequest().OPENED is 1
PASS new XMLHttpRequest().HEADERS_RECEIVED is 2
PASS new XMLHttpRequest().LOADING is 3
PASS new XMLHttpRequest().DONE is 4
Test the constants on the XMLHttpRequest prototype object.
PASS XMLHttpRequest.prototype.UNSENT is 0
PASS XMLHttpRequest.prototype.OPENED is 1
PASS XMLHttpRequest.prototype.HEADERS_RECEIVED is 2
PASS XMLHttpRequest.prototype.LOADING is 3
PASS XMLHttpRequest.prototype.DONE is 4
Test the constants on the XMLHttpRequest constructor object.
PASS XMLHttpRequest.UNSENT is 0
PASS XMLHttpRequest.OPENED is 1
PASS XMLHttpRequest.HEADERS_RECEIVED is 2
PASS XMLHttpRequest.LOADING is 3
PASS XMLHttpRequest.DONE is 4
PASS successfullyParsed is true

TEST COMPLETE

