mirror of
https://github.com/servo/servo.git
synced 2025-07-12 18:03:49 +01:00
198 lines
8.9 KiB
HTML
198 lines
8.9 KiB
HTML
<!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, "", "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: " + t.map(format_value))
|
|
})
|
|
})
|
|
|
|
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>
|