Tests the properties of the RangeException object.

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


PASS e.toString() is "Error: INVALID_NODE_TYPE_ERR: DOM Range Exception 2"
PASS Object.prototype.toString.call(e) is "[object RangeException]"
PASS Object.prototype.toString.call(e.__proto__) is "[object RangeExceptionPrototype]"
PASS e.constructor.toString() is "[object RangeExceptionConstructor]"
PASS e.constructor is window.RangeException
PASS e.INVALID_NODE_TYPE_ERR is e.constructor.INVALID_NODE_TYPE_ERR
PASS e.BAD_BOUNDARYPOINTS_ERR is 1
PASS e.INVALID_NODE_TYPE_ERR is 2
PASS successfullyParsed is true

TEST COMPLETE

