<!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://heycam.github.io/webidl/#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>
