blob: a13c407e8d3f09a922c5750c900cae84eb278cf3 [file] [log] [blame]
<!DOCTYPE html>
<meta charset=utf-8>
<title>Document.createElementNS</title>
<link rel=help href="https://dom.spec.whatwg.org/#dom-document-createelementns">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="Document-createElementNS.js"></script>
<div id="log"></div>
<script>
test(function() {
var tests = createElementNS_tests.concat([
/* Arrays with three elements:
* the namespace argument
* the qualifiedName argument
* the expected exception, or null if none
*/
["", "", "INVALID_CHARACTER_ERR"],
[null, null, null],
[null, "", "INVALID_CHARACTER_ERR"],
[undefined, null, null],
[undefined, undefined, null],
[undefined, "", "INVALID_CHARACTER_ERR"],
["http://example.com/", null, null],
["http://example.com/", "", "INVALID_CHARACTER_ERR"],
["/", null, null],
["/", "", "INVALID_CHARACTER_ERR"],
["http://www.w3.org/XML/1998/namespace", null, null],
["http://www.w3.org/XML/1998/namespace", "", "INVALID_CHARACTER_ERR"],
["http://www.w3.org/2000/xmlns/", null, "NAMESPACE_ERR"],
["http://www.w3.org/2000/xmlns/", "", "INVALID_CHARACTER_ERR"],
["foo:", null, null],
["foo:", "", "INVALID_CHARACTER_ERR"],
])
tests.forEach(function(t, i) {
test(function() {
var namespace = t[0], qualifiedName = t[1], expected = t[2]
if (expected != null) {
assert_throws(expected, function() { document.createElementNS(namespace, qualifiedName) })
} else {
var element = document.createElementNS(namespace, qualifiedName)
assert_not_equals(element, null)
assert_equals(element.nodeType, Node.ELEMENT_NODE)
assert_equals(element.nodeType, element.ELEMENT_NODE)
assert_equals(element.nodeValue, null)
assert_equals(element.ownerDocument, document)
var qualified = String(qualifiedName), names = []
if (qualified.indexOf(":") >= 0) {
names = qualified.split(":", 2)
} else {
names = [null, qualified]
}
assert_equals(element.prefix, names[0])
assert_equals(element.localName, names[1])
assert_equals(element.tagName, qualified)
assert_equals(element.nodeName, qualified)
assert_equals(element.namespaceURI, namespace === undefined ? null : namespace)
}
}, "createElementNS test " + i + ": " + t.map(function(el) { return format_value(el) }))
})
})
test(function() {
var HTMLNS = "http://www.w3.org/1999/xhtml";
var element = document.createElementNS(HTMLNS, "span");
assert_equals(element.namespaceURI, HTMLNS);
assert_equals(element.prefix, null);
assert_equals(element.localName, "span");
assert_equals(element.tagName, "SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement");
}, "Lower-case HTML element without a prefix");
test(function() {
var HTMLNS = "http://www.w3.org/1999/xhtml";
var element = document.createElementNS(HTMLNS, "html:span");
assert_equals(element.namespaceURI, HTMLNS);
assert_equals(element.prefix, "html");
assert_equals(element.localName, "span");
assert_equals(element.tagName, "HTML:SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
assert_true(element instanceof HTMLSpanElement, "Should be an HTMLSpanElement");
}, "Lower-case HTML element with a prefix");
test(function() {
var element = document.createElementNS("test", "span");
assert_equals(element.namespaceURI, "test");
assert_equals(element.prefix, null);
assert_equals(element.localName, "span");
assert_equals(element.tagName, "span");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Lower-case non-HTML element without a prefix");
test(function() {
var element = document.createElementNS("test", "html:span");
assert_equals(element.namespaceURI, "test");
assert_equals(element.prefix, "html");
assert_equals(element.localName, "span");
assert_equals(element.tagName, "html:span");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Lower-case non-HTML element with a prefix");
test(function() {
var HTMLNS = "http://www.w3.org/1999/xhtml";
var element = document.createElementNS(HTMLNS, "SPAN");
assert_equals(element.namespaceURI, HTMLNS);
assert_equals(element.prefix, null);
assert_equals(element.localName, "SPAN");
assert_equals(element.tagName, "SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
assert_true(element instanceof HTMLUnknownElement, "Should be an HTMLUnknownElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Upper-case HTML element without a prefix");
test(function() {
var HTMLNS = "http://www.w3.org/1999/xhtml";
var element = document.createElementNS(HTMLNS, "html:SPAN");
assert_equals(element.namespaceURI, HTMLNS);
assert_equals(element.prefix, "html");
assert_equals(element.localName, "SPAN");
assert_equals(element.tagName, "HTML:SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_true(element instanceof HTMLElement, "Should be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Upper-case HTML element with a prefix");
test(function() {
var element = document.createElementNS("test", "SPAN");
assert_equals(element.namespaceURI, "test");
assert_equals(element.prefix, null);
assert_equals(element.localName, "SPAN");
assert_equals(element.tagName, "SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Upper-case non-HTML element without a prefix");
test(function() {
var element = document.createElementNS("test", "html:SPAN");
assert_equals(element.namespaceURI, "test");
assert_equals(element.prefix, "html");
assert_equals(element.localName, "SPAN");
assert_equals(element.tagName, "html:SPAN");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "Upper-case non-HTML element with a prefix");
test(function() {
var element = document.createElementNS(null, "span");
assert_equals(element.namespaceURI, null);
assert_equals(element.prefix, null);
assert_equals(element.localName, "span");
assert_equals(element.tagName, "span");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "null namespace");
test(function() {
var element = document.createElementNS(undefined, "span");
assert_equals(element.namespaceURI, null);
assert_equals(element.prefix, null);
assert_equals(element.localName, "span");
assert_equals(element.tagName, "span");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "undefined namespace");
test(function() {
var element = document.createElementNS("", "span");
assert_equals(element.namespaceURI, null);
assert_equals(element.prefix, null);
assert_equals(element.localName, "span");
assert_equals(element.tagName, "span");
assert_true(element instanceof Node, "Should be a Node");
assert_true(element instanceof Element, "Should be an Element");
assert_false(element instanceof HTMLElement, "Should not be an HTMLElement");
assert_false(element instanceof HTMLSpanElement, "Should not be an HTMLSpanElement");
}, "empty string namespace");
</script>