<!DOCTYPE html>
<meta charset="utf-8">
<title>Test of interfaces</title>
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
<link rel="help" href="https://html.spec.whatwg.org/multipage/">
<link rel="help" href="https://webidl.spec.whatwg.org/#host-objects">
<link rel="help" href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf#page=96">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src=interfaces.js></script>
<div id="log"></div>
<script>
function do_test(local_name, iface, variant) {
  test(function() {
    var e;
    var i = "HTML" + iface + "Element";
    if (variant === "useNS") {
      // Use createElementNS here to preserve the case of local_name.
      e = document.createElementNS("http://www.w3.org/1999/xhtml", local_name);
    } else {
      e = document.createElement(local_name);
    }
    assert_class_string(e, i,
                        "Element " + local_name + " should have " + i +
                        " as its primary interface.");
    assert_true(e instanceof window[i],
                "Element " + local_name + " should implement " + i + ".");
    assert_true(e instanceof HTMLElement,
                "Element " + local_name + " should implement HTMLElement.");
    assert_true(e instanceof Element,
                "Element " + local_name + " should implement Element.");
    assert_true(e instanceof Node,
                "Element " + local_name + " should implement Node.");
  }, "Interfaces for " + local_name);
}

elements.forEach(function(a) {
  do_test(a[0], a[1], "useNS");

  // Only run the createElement variant if the input is all-lowercase, because createElement
  // case-folds to lowercase. Custom elements are required to use all-lowercase to implement
  // HTMLElement, otherwise they use HTMLUnknownElement per spec. Example: "foo-BAR".
  if (a[0] === a[0].toLowerCase()) {
    do_test(a[0].toUpperCase(), a[1]);
  }
})
</script>
