<!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>
