| <html xmlns="http://www.w3.org/1999/xhtml"> | |
| <head> | |
| <title>Node.isEqualNode</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <div id="log"/> | |
| <script> | |
| function testNullHandling(node) { | |
| test(function() { | |
| assert_false(node.isEqualNode(null)) | |
| assert_false(node.isEqualNode(undefined)) | |
| }) | |
| } | |
| [ | |
| document.createElement("foo"), | |
| document.createTextNode("foo"), | |
| document.createProcessingInstruction("foo", "bar"), | |
| document.createComment("foo"), | |
| document, | |
| document.implementation.createDocumentType("html", "", ""), | |
| document.createDocumentFragment() | |
| ].forEach(testNullHandling) | |
| test(function() { | |
| var a = document.createElement("foo") | |
| a.setAttribute("a", "bar") | |
| a.setAttribute("b", "baz") | |
| var b = document.createElement("foo") | |
| b.setAttribute("b", "baz") | |
| b.setAttribute("a", "bar") | |
| assert_true(a.isEqualNode(b)) | |
| }, "isEqualNode should return true when the attributes are in a different order") | |
| test(function() { | |
| var a = document.createElementNS("ns", "prefix:foo") | |
| var b = document.createElementNS("ns", "prefix:foo") | |
| assert_true(a.isEqualNode(b)) | |
| }, "isEqualNode should return true if elements have same namespace, prefix, and local name") | |
| test(function() { | |
| var a = document.createElementNS("ns1", "prefix:foo") | |
| var b = document.createElementNS("ns2", "prefix:foo") | |
| assert_false(a.isEqualNode(b)) | |
| }, "isEqualNode should return false if elements have different namespace") | |
| test(function() { | |
| var a = document.createElementNS("ns", "prefix1:foo") | |
| var b = document.createElementNS("ns", "prefix2:foo") | |
| assert_false(a.isEqualNode(b)) | |
| }, "isEqualNode should return false if elements have different prefix") | |
| test(function() { | |
| var a = document.createElementNS("ns", "prefix:foo1") | |
| var b = document.createElementNS("ns", "prefix:foo2") | |
| assert_false(a.isEqualNode(b)) | |
| }, "isEqualNode should return false if elements have different local name") | |
| test(function() { | |
| var a = document.createElement("foo") | |
| a.setAttributeNS("ns", "x:a", "bar") | |
| var b = document.createElement("foo") | |
| b.setAttributeNS("ns", "y:a", "bar") | |
| assert_true(a.isEqualNode(b)) | |
| }, "isEqualNode should return true when the attributes have different prefixes") | |
| var internalSubset = async_test("isEqualNode should return true when only the internal subsets of DocumentTypes differ.") | |
| var wait = 2; | |
| function iframeLoaded() { | |
| if (!--wait) { | |
| internalSubset.step(function() { | |
| var doc1 = document.getElementById("subset1").contentDocument | |
| var doc2 = document.getElementById("subset2").contentDocument | |
| assert_true(doc1.doctype.isEqualNode(doc2.doctype), "doc1.doctype.isEqualNode(doc2.doctype)") | |
| assert_true(doc1.isEqualNode(doc2), "doc1.isEqualNode(doc2)") | |
| }) | |
| internalSubset.done() | |
| } | |
| } | |
| </script> | |
| <iframe id="subset1" onload="iframeLoaded()" src="Node-isEqualNode-iframe1.xml" /> | |
| <iframe id="subset2" onload="iframeLoaded()" src="Node-isEqualNode-iframe2.xml" /> | |
| </body> | |
| </html> |