Test element prefix for element equality

This commit is contained in:
David Zbarsky 2015-07-04 17:52:33 -04:00
parent 52e857dd7b
commit 0fa8e51432
3 changed files with 29 additions and 2 deletions

View file

@ -2368,8 +2368,8 @@ impl<'a> NodeMethods for &'a Node {
fn is_equal_element(node: &Node, other: &Node) -> bool {
let element: &Element = ElementCast::to_ref(node).unwrap();
let other_element: &Element = ElementCast::to_ref(other).unwrap();
// FIXME: namespace prefix
(*element.namespace() == *other_element.namespace()) &&
(*element.prefix() == *other_element.prefix()) &&
(*element.local_name() == *other_element.local_name()) &&
(element.attrs().len() == other_element.attrs().len())
}

View file

@ -1,3 +1,6 @@
[Node-isEqualNode.xhtml]
type: testharness
disabled: xml
expected: TIMEOUT
[isEqualNode should return true when only the internal subsets of DocumentTypes differ.]
expected: NOTRUN

View file

@ -33,6 +33,30 @@ test(function() {
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")