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 |