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 Error: NotFoundError: DOM Exception 8.
PASS aNode.appendChild('knort') threw exception Error: NotFoundError: DOM Exception 8.
PASS aNode.appendChild(void 0) threw exception Error: NotFoundError: DOM Exception 8.
PASS aNode.isSameNode(aDOMImplementation) is false
PASS aNode.isSameNode('foo') is false
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) is undefined.
PASS aSelect.add(aDOMImplementation, anOption) is undefined.
PASS aSelect.add(anOption, aDOMImplementation) is undefined.
PASS aSelect.add(void 0, void 0) is undefined.
PASS aSelect.add(void 0, anOption) is undefined.
PASS aSelect.add(anOption, void 0) is undefined.
PASS successfullyParsed is true

TEST COMPLETE

