Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / dom / Element / script-tests / getAttribute-check-case-sensitivity.js
1 description(
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>"
3 );
4
5 function testGetAttributeCaseInsensitive()
6 {
7     var div = document.createElement('div');
8     div.setAttribute("mixedCaseAttrib", "x");
9
10     // Do original case lookup, and lowercase lookup.
11     return div.getAttribute("mixedcaseattrib");
12 }
13
14 shouldBe("testGetAttributeCaseInsensitive()", '"x"');
15
16 function testGetAttributeNodeMixedCase()
17 {
18     var div = document.createElement('div');
19     var a = div.ownerDocument.createAttribute("mixedCaseAttrib");
20     a.value = "x";
21     div.setAttributeNode(a);
22     return div.getAttribute("mixedCaseAttrib");
23 }
24
25 shouldBe("testGetAttributeNodeMixedCase()", '"x"');
26     
27 function testGetAttributeNodeLowerCase(div)
28 {
29     var div = document.createElement('div');
30     var a = div.ownerDocument.createAttribute("lowercaseattrib");
31     a.value = "x";
32     div.setAttributeNode(a);
33     return div.getAttribute("lowerCaseAttrib");
34 }
35
36 shouldBe("testGetAttributeNodeLowerCase()", '"x"');
37
38 function testSetAttributeNodeKeepsRef(div)
39 {
40     var div = document.createElement('div');
41     var a = div.ownerDocument.createAttribute("attrib_name");
42     a.value = "0";
43     div.setAttributeNode(a);
44
45     // Mutate the attribute node.
46     a.value = "1";
47     
48     return div.getAttribute("attrib_name");
49 }
50
51 shouldBe("testSetAttributeNodeKeepsRef()", '"1"');
52
53 function testAttribNodeNamePreservesCase()
54 {
55     var div = document.createElement('div');
56     var a = div.ownerDocument.createAttribute("A");
57     a.value = "x";
58     div.setAttributeNode(a);
59       
60     var result = [ a.name, a.nodeName ];
61     return result.join(",");
62 }
63
64 shouldBe("testAttribNodeNamePreservesCase()", '"A,A"');
65
66     
67 function testAttribNodeNamePreservesCaseGetNode()
68 {
69     // getAttributeNode doesnt work on DIVs, use body element
70     var body = document.body;
71
72     var a = body.ownerDocument.createAttribute("A");
73     a.value = "x";
74
75     body.setAttributeNode(a);
76
77     a = document.body.getAttributeNode("A");
78     if (!a)
79         return "FAIL";
80
81     var result = [ a.name, a.nodeName ];
82     return result.join(",");
83 }
84
85 shouldBe("testAttribNodeNamePreservesCaseGetNode()", '"A,A"');
86
87 function testAttribNodeNamePreservesCaseGetNode2()
88 {
89     // getAttributeNode doesnt work on DIVs, use body element
90     var body = document.body;
91
92     var a = body.ownerDocument.createAttribute("B");
93     a.value = "x";
94
95     body.setAttributeNode(a);
96
97     a = document.body.getAttributeNode("B");
98     if (!a)
99         return "FAIL";
100
101     // Now create node second time -- this time case is preserved in FF!
102     a = body.ownerDocument.createAttribute("B");
103     a.value = "x";
104     body.setAttributeNode(a);
105
106     a = document.body.getAttributeNode("B");
107       
108     var result = [ a.name, a.nodeName ];
109     return result.join(",");
110 }
111
112 shouldBe("testAttribNodeNamePreservesCaseGetNode2()", '"B,B"');
113
114 function testAttribNodeNameGetMutate()
115 {
116     // getAttributeNode doesnt work on DIVs, use body element.
117     var body = document.body;
118
119     var a = body.ownerDocument.createAttribute("c");
120     a.value = "0";
121     body.setAttributeNode(a);
122
123     a = document.body.getAttributeNode("c");
124     a.value = "1";
125
126     a = document.body.getAttributeNode("c");
127
128     return a.value;
129 }
130
131 shouldBe("testAttribNodeNameGetMutate()", '"1"');
132
133 var node = document.createElement("div");
134 var attrib = document.createAttribute("myAttrib");
135 attrib.value = "XXX";
136 node.setAttributeNode(attrib);
137
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"');