This test checks the behavior of DOM operations when called on non-DOM or incompatible receivers with non-DOM or incompatible arguments.

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


PASS aNode.appendChild(aDOMImplementation) threw exception TypeError: Argument 1 ('node') to Node.appendChild must be an instance of Node.
PASS aNode.appendChild('knort') threw exception TypeError: Argument 1 ('node') to Node.appendChild must be an instance of Node.
PASS aNode.appendChild(void 0) threw exception TypeError: Argument 1 ('node') to Node.appendChild must be an instance of Node.
PASS aNode.isSameNode(aDOMImplementation) threw exception TypeError: Argument 1 ('other') to Node.isSameNode must be an instance of Node.
PASS aNode.isSameNode('foo') threw exception TypeError: Argument 1 ('other') to Node.isSameNode must be an instance of Node.
PASS aNode.isSameNode(void 0) is false
PASS aNode.lookupPrefix(aDOMImplementation) is null
PASS aNode.lookupPrefix(void 0) is null
PASS aNode.cloneNode(aDOMImplementation) instanceof HTMLDivElement is true
PASS aSelect.add(aDOMImplementation, aDOMImplementation) threw exception TypeError: Type error.
PASS aSelect.add(aDOMImplementation, anOption) threw exception TypeError: Type error.
PASS aSelect.add(anOption, aDOMImplementation) is undefined.
PASS aSelect.add(void 0, void 0) threw exception TypeError: Type error.
PASS aSelect.add(void 0, anOption) threw exception TypeError: Type error.
PASS aSelect.add(anOption, void 0) is undefined.
PASS successfullyParsed is true

TEST COMPLETE

