| <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> |