| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Document.createElement</title> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-document-createelement"> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-element-localname"> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-element-tagname"> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-element-prefix"> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-element-namespaceuri"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| function toASCIIUppercase(str) { |
| var diff = "a".charCodeAt(0) - "A".charCodeAt(0); |
| var res = ""; |
| for (var i = 0; i < str.length; ++i) { |
| if ("a" <= str[i] && str[i] <= "z") { |
| res += String.fromCharCode(str.charCodeAt(i) - diff); |
| } else { |
| res += str[i]; |
| } |
| } |
| return res; |
| } |
| test(function() { |
| var HTMLNS = "http://www.w3.org/1999/xhtml", |
| valid = [ |
| //[input, localName], |
| [undefined, "undefined"], |
| [null, "null"], |
| ["foo", "foo"], |
| ["f1oo", "f1oo"], |
| ["foo1", "foo1"], |
| ["f\u0300oo", "f\u0300oo"], |
| ["foo\u0300", "foo\u0300"], |
| [":foo", ":foo"], |
| ["f:oo", "f:oo"], |
| ["foo:", "foo:"], |
| ["xml", "xml"], |
| ["xmlns", "xmlns"], |
| ["xmlfoo", "xmlfoo"], |
| ["xml:foo", "xml:foo"], |
| ["xmlns:foo", "xmlns:foo"], |
| ["xmlfoo:bar", "xmlfoo:bar"], |
| ["svg", "svg"], |
| ["math", "math"], |
| ["FOO", "foo"], |
| ["mar\u212a", "mar\u212a"], |
| ["\u0130nput", "\u0130nput"], |
| ["\u0131nput", "\u0131nput"] |
| ], |
| invalid = [ |
| "", |
| "1foo", |
| "\u0300foo", |
| "}foo", |
| "f}oo", |
| "foo}", |
| "\ufffffoo", |
| "f\uffffoo", |
| "foo\uffff", |
| "<foo", |
| "foo>", |
| "<foo>", |
| "f<oo" |
| ] |
| |
| valid.forEach(function(t) { |
| test(function() { |
| var elt = document.createElement(t[0]) |
| assert_true(elt instanceof Element) |
| assert_true(elt instanceof Node) |
| assert_equals(elt.localName, t[1]) |
| assert_equals(elt.tagName, toASCIIUppercase(t[1])) |
| assert_equals(elt.prefix, null) |
| assert_equals(elt.namespaceURI, HTMLNS) |
| }, "createElement(" + format_value(t[0]) + ")"); |
| }); |
| invalid.forEach(function(arg) { |
| test(function() { |
| assert_throws("INVALID_CHARACTER_ERR", function() { document.createElement(arg) }) |
| }, "createElement(" + format_value(arg) + ")"); |
| }); |
| }) |
| </script> |