2 "<p>This file test the behaviour of getAttribute with regard to case.</p><p>See Bug 20247: setAttributeNode() does not work when attribute name has a capital letter in it</p>"
5 function testGetAttributeCaseInsensitive()
7 var div
= document
.createElement('div');
8 div
.setAttribute("mixedCaseAttrib", "x");
10 // Do original case lookup, and lowercase lookup.
11 return div
.getAttribute("mixedcaseattrib");
14 shouldBe("testGetAttributeCaseInsensitive()", '"x"');
16 function testGetAttributeNodeMixedCase()
18 var div
= document
.createElement('div');
19 var a
= div
.ownerDocument
.createAttribute("mixedCaseAttrib");
21 div
.setAttributeNode(a
);
22 return div
.getAttribute("mixedCaseAttrib");
25 shouldBe("testGetAttributeNodeMixedCase()", '"x"');
27 function testGetAttributeNodeLowerCase(div
)
29 var div
= document
.createElement('div');
30 var a
= div
.ownerDocument
.createAttribute("lowercaseattrib");
32 div
.setAttributeNode(a
);
33 return div
.getAttribute("lowerCaseAttrib");
36 shouldBe("testGetAttributeNodeLowerCase()", '"x"');
38 function testSetAttributeNodeKeepsRef(div
)
40 var div
= document
.createElement('div');
41 var a
= div
.ownerDocument
.createAttribute("attrib_name");
43 div
.setAttributeNode(a
);
45 // Mutate the attribute node.
48 return div
.getAttribute("attrib_name");
51 shouldBe("testSetAttributeNodeKeepsRef()", '"1"');
53 function testAttribNodeNamePreservesCase()
55 var div
= document
.createElement('div');
56 var a
= div
.ownerDocument
.createAttribute("A");
58 div
.setAttributeNode(a
);
60 var result
= [ a
.name
, a
.nodeName
];
61 return result
.join(",");
64 shouldBe("testAttribNodeNamePreservesCase()", '"A,A"');
67 function testAttribNodeNamePreservesCaseGetNode()
69 // getAttributeNode doesnt work on DIVs, use body element
70 var body
= document
.body
;
72 var a
= body
.ownerDocument
.createAttribute("A");
75 body
.setAttributeNode(a
);
77 a
= document
.body
.getAttributeNode("A");
81 var result
= [ a
.name
, a
.nodeName
];
82 return result
.join(",");
85 shouldBe("testAttribNodeNamePreservesCaseGetNode()", '"A,A"');
87 function testAttribNodeNamePreservesCaseGetNode2()
89 // getAttributeNode doesnt work on DIVs, use body element
90 var body
= document
.body
;
92 var a
= body
.ownerDocument
.createAttribute("B");
95 body
.setAttributeNode(a
);
97 a
= document
.body
.getAttributeNode("B");
101 // Now create node second time -- this time case is preserved in FF!
102 a
= body
.ownerDocument
.createAttribute("B");
104 body
.setAttributeNode(a
);
106 a
= document
.body
.getAttributeNode("B");
108 var result
= [ a
.name
, a
.nodeName
];
109 return result
.join(",");
112 shouldBe("testAttribNodeNamePreservesCaseGetNode2()", '"B,B"');
114 function testAttribNodeNameGetMutate()
116 // getAttributeNode doesnt work on DIVs, use body element.
117 var body
= document
.body
;
119 var a
= body
.ownerDocument
.createAttribute("c");
121 body
.setAttributeNode(a
);
123 a
= document
.body
.getAttributeNode("c");
126 a
= document
.body
.getAttributeNode("c");
131 shouldBe("testAttribNodeNameGetMutate()", '"1"');
133 var node
= document
.createElement("div");
134 var attrib
= document
.createAttribute("myAttrib");
135 attrib
.value
= "XXX";
136 node
.setAttributeNode(attrib
);
138 shouldBe("(new XMLSerializer).serializeToString(node)", '"<div xmlns=\\"http://www.w3.org/1999/xhtml\\" myAttrib=\\"XXX\\"></div>"');
139 shouldBe("node.getAttributeNode('myAttrib').name", '"myAttrib"');
140 shouldBe("node.getAttributeNode('myattrib').name", '"myAttrib"');
141 shouldBe("attrib.name", '"myAttrib"');