<!DOCTYPE html>
<title>Interfaces</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
function testInterfaceDeletable(iface) {
  test(function() {
    assert_true(!!window[iface], "Interface should exist.")
    assert_true(delete window[iface], "The delete operator should return true.")
    assert_equals(window[iface], undefined, "Interface should be gone.")
  }, "Should be able to delete " + iface + ".")
}
var interfaces = [
  "Event",
  "CustomEvent",
  "EventTarget",
  "Node",
  "Document",
  "DOMImplementation",
  "DocumentFragment",
  "ProcessingInstruction",
  "DocumentType",
  "Element",
  "Attr",
  "CharacterData",
  "Text",
  "Comment",
  "NodeIterator",
  "TreeWalker",
  "NodeFilter",
  "NodeList",
  "HTMLCollection",
  "DOMStringList",
  "DOMTokenList",
  "DOMSettableTokenList"
];
test(function() {
  for (var p in window) {
    interfaces.forEach(function(i) {
      assert_not_equals(p, i)
    })
  }
}, "Interface objects properties should not be Enumerable")
interfaces.forEach(testInterfaceDeletable);
</script>
