This test checks whether passing wrong types to setAttributeNode causes a crash.

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

PASS element.setAttributeNode("style"); threw exception TypeError: Failed to execute 'setAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNode(null); threw exception TypeError: Failed to execute 'setAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNode(undefined); threw exception TypeError: Failed to execute 'setAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNode(new Object); threw exception TypeError: Failed to execute 'setAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.removeAttributeNode("style"); threw exception TypeError: Failed to execute 'removeAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.removeAttributeNode(null); threw exception TypeError: Failed to execute 'removeAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.removeAttributeNode(undefined); threw exception TypeError: Failed to execute 'removeAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.removeAttributeNode(new Object); threw exception TypeError: Failed to execute 'removeAttributeNode' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNodeNS("style"); threw exception TypeError: Failed to execute 'setAttributeNodeNS' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNodeNS(null); threw exception TypeError: Failed to execute 'setAttributeNodeNS' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNodeNS(undefined); threw exception TypeError: Failed to execute 'setAttributeNodeNS' on 'Element': parameter 1 is not of type 'Attr'..
PASS element.setAttributeNodeNS(new Object); threw exception TypeError: Failed to execute 'setAttributeNodeNS' on 'Element': parameter 1 is not of type 'Attr'..
PASS successfullyParsed is true

TEST COMPLETE

