OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <meta charset=utf-8> | |
3 <title>Document.createElementNS</title> | |
4 <link rel=help href="https://dom.spec.whatwg.org/#dom-document-createelementns"> | |
5 <script src="../../../../resources/testharness.js"></script> | |
6 <script src="../../../../resources/testharnessreport.js"></script> | |
7 <script src="Document-createElementNS.js"></script> | |
8 <div id="log"></div> | |
9 <script> | |
10 test(function() { | |
11 var tests = createElementNS_tests.concat([ | |
12 /* Arrays with three elements: | |
13 * the namespace argument | |
14 * the qualifiedName argument | |
15 * the expected exception, or null if none | |
16 */ | |
17 ["", "", "INVALID_CHARACTER_ERR"], | |
18 [null, null, null], | |
19 [null, "", "INVALID_CHARACTER_ERR"], | |
20 [undefined, null, null], | |
21 [undefined, undefined, null], | |
22 [undefined, "", "INVALID_CHARACTER_ERR"], | |
23 ["http://example.com/", null, null], | |
24 ["http://example.com/", "", "INVALID_CHARACTER_ERR"], | |
25 ["/", null, null], | |
26 ["/", "", "INVALID_CHARACTER_ERR"], | |
27 ["http://www.w3.org/XML/1998/namespace", null, null], | |
28 ["http://www.w3.org/XML/1998/namespace", "", "INVALID_CHARACTER_ERR"], | |
29 ["http://www.w3.org/2000/xmlns/", null, "NAMESPACE_ERR"], | |
30 ["http://www.w3.org/2000/xmlns/", "", "INVALID_CHARACTER_ERR"], | |
31 ["foo:", null, null], | |
32 ["foo:", "", "INVALID_CHARACTER_ERR"], | |
33 ]) | |
34 | |
35 tests.forEach(function(t, i) { | |
36 test(function() { | |
37 var namespace = t[0], qualifiedName = t[1], expected = t[2] | |
38 if (expected != null) { | |
39 assert_throws(expected, function() { document.createElementNS(namespace,
qualifiedName) }) | |
40 } else { | |
41 var element = document.createElementNS(namespace, qualifiedName) | |
42 assert_not_equals(element, null) | |
43 assert_equals(element.nodeType, Node.ELEMENT_NODE) | |
44 assert_equals(element.nodeType, element.ELEMENT_NODE) | |
45 assert_equals(element.nodeValue, null) | |
46 assert_equals(element.ownerDocument, document) | |
47 var qualified = String(qualifiedName), names = [] | |
48 if (qualified.indexOf(":") >= 0) { | |
49 names = qualified.split(":", 2) | |
50 } else { | |
51 names = [null, qualified] | |
52 } | |
53 assert_equals(element.prefix, names[0]) | |
54 assert_equals(element.localName, names[1]) | |
55 assert_equals(element.tagName, qualified) | |
56 assert_equals(element.nodeName, qualified) | |
57 assert_equals(element.namespaceURI, namespace === undefined ? null : nam
espace) | |
58 } | |
59 }, "createElementNS test " + i + ": " + t.map(function(el) { return format_v
alue(el) })) | |
60 }) | |
61 }) | |
62 | |
63 test(function() { | |
64 var HTMLNS = "http://www.w3.org/1999/xhtml"; | |
65 var element = document.createElementNS(HTMLNS, "span"); | |
66 assert_equals(element.namespaceURI, HTMLNS); | |
67 assert_equals(element.prefix, null); | |
68 assert_equals(element.localName, "span"); | |
69 assert_equals(element.tagName, "SPAN"); | |
70 assert_true(element instanceof Node, "Should be a Node"); | |
71 assert_true(element instanceof Element, "Should be an Element"); | |
72 assert_true(element instanceof HTMLElement, "Should be an HTMLElement"); | |
73 assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement"
); | |
74 }, "Lower-case HTML element without a prefix"); | |
75 | |
76 test(function() { | |
77 var HTMLNS = "http://www.w3.org/1999/xhtml"; | |
78 var element = document.createElementNS(HTMLNS, "html:span"); | |
79 assert_equals(element.namespaceURI, HTMLNS); | |
80 assert_equals(element.prefix, "html"); | |
81 assert_equals(element.localName, "span"); | |
82 assert_equals(element.tagName, "HTML:SPAN"); | |
83 assert_true(element instanceof Node, "Should be a Node"); | |
84 assert_true(element instanceof Element, "Should be an Element"); | |
85 assert_true(element instanceof HTMLElement, "Should be an HTMLElement"); | |
86 assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement"
); | |
87 }, "Lower-case HTML element with a prefix"); | |
88 | |
89 test(function() { | |
90 var element = document.createElementNS("test", "span"); | |
91 assert_equals(element.namespaceURI, "test"); | |
92 assert_equals(element.prefix, null); | |
93 assert_equals(element.localName, "span"); | |
94 assert_equals(element.tagName, "span"); | |
95 assert_true(element instanceof Node, "Should be a Node"); | |
96 assert_true(element instanceof Element, "Should be an Element"); | |
97 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
98 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
99 }, "Lower-case non-HTML element without a prefix"); | |
100 | |
101 test(function() { | |
102 var element = document.createElementNS("test", "html:span"); | |
103 assert_equals(element.namespaceURI, "test"); | |
104 assert_equals(element.prefix, "html"); | |
105 assert_equals(element.localName, "span"); | |
106 assert_equals(element.tagName, "html:span"); | |
107 assert_true(element instanceof Node, "Should be a Node"); | |
108 assert_true(element instanceof Element, "Should be an Element"); | |
109 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
110 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
111 }, "Lower-case non-HTML element with a prefix"); | |
112 | |
113 test(function() { | |
114 var HTMLNS = "http://www.w3.org/1999/xhtml"; | |
115 var element = document.createElementNS(HTMLNS, "SPAN"); | |
116 assert_equals(element.namespaceURI, HTMLNS); | |
117 assert_equals(element.prefix, null); | |
118 assert_equals(element.localName, "SPAN"); | |
119 assert_equals(element.tagName, "SPAN"); | |
120 assert_true(element instanceof Node, "Should be a Node"); | |
121 assert_true(element instanceof Element, "Should be an Element"); | |
122 assert_true(element instanceof HTMLElement, "Should be an HTMLElement"); | |
123 assert_true(element instanceof HTMLUnknownElement, "Should be an HTMLUnknownEl
ement"); | |
124 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
125 }, "Upper-case HTML element without a prefix"); | |
126 | |
127 test(function() { | |
128 var HTMLNS = "http://www.w3.org/1999/xhtml"; | |
129 var element = document.createElementNS(HTMLNS, "html:SPAN"); | |
130 assert_equals(element.namespaceURI, HTMLNS); | |
131 assert_equals(element.prefix, "html"); | |
132 assert_equals(element.localName, "SPAN"); | |
133 assert_equals(element.tagName, "HTML:SPAN"); | |
134 assert_true(element instanceof Node, "Should be a Node"); | |
135 assert_true(element instanceof Element, "Should be an Element"); | |
136 assert_true(element instanceof HTMLElement, "Should be an HTMLElement"); | |
137 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
138 }, "Upper-case HTML element with a prefix"); | |
139 | |
140 test(function() { | |
141 var element = document.createElementNS("test", "SPAN"); | |
142 assert_equals(element.namespaceURI, "test"); | |
143 assert_equals(element.prefix, null); | |
144 assert_equals(element.localName, "SPAN"); | |
145 assert_equals(element.tagName, "SPAN"); | |
146 assert_true(element instanceof Node, "Should be a Node"); | |
147 assert_true(element instanceof Element, "Should be an Element"); | |
148 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
149 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
150 }, "Upper-case non-HTML element without a prefix"); | |
151 | |
152 test(function() { | |
153 var element = document.createElementNS("test", "html:SPAN"); | |
154 assert_equals(element.namespaceURI, "test"); | |
155 assert_equals(element.prefix, "html"); | |
156 assert_equals(element.localName, "SPAN"); | |
157 assert_equals(element.tagName, "html:SPAN"); | |
158 assert_true(element instanceof Node, "Should be a Node"); | |
159 assert_true(element instanceof Element, "Should be an Element"); | |
160 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
161 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
162 }, "Upper-case non-HTML element with a prefix"); | |
163 | |
164 test(function() { | |
165 var element = document.createElementNS(null, "span"); | |
166 assert_equals(element.namespaceURI, null); | |
167 assert_equals(element.prefix, null); | |
168 assert_equals(element.localName, "span"); | |
169 assert_equals(element.tagName, "span"); | |
170 assert_true(element instanceof Node, "Should be a Node"); | |
171 assert_true(element instanceof Element, "Should be an Element"); | |
172 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
173 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
174 }, "null namespace"); | |
175 | |
176 test(function() { | |
177 var element = document.createElementNS(undefined, "span"); | |
178 assert_equals(element.namespaceURI, null); | |
179 assert_equals(element.prefix, null); | |
180 assert_equals(element.localName, "span"); | |
181 assert_equals(element.tagName, "span"); | |
182 assert_true(element instanceof Node, "Should be a Node"); | |
183 assert_true(element instanceof Element, "Should be an Element"); | |
184 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
185 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
186 }, "undefined namespace"); | |
187 | |
188 test(function() { | |
189 var element = document.createElementNS("", "span"); | |
190 assert_equals(element.namespaceURI, null); | |
191 assert_equals(element.prefix, null); | |
192 assert_equals(element.localName, "span"); | |
193 assert_equals(element.tagName, "span"); | |
194 assert_true(element instanceof Node, "Should be a Node"); | |
195 assert_true(element instanceof Element, "Should be an Element"); | |
196 assert_false(element instanceof HTMLElement, "Should not be an HTMLElement"); | |
197 assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanEle
ment"); | |
198 }, "empty string namespace"); | |
199 </script> | |
OLD | NEW |