https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 5305d2c694c54ec39d590a557184b9c3b89e1699 authored by Aryeh Gregor on 23 April 2014, 13:43:55 UTC
Add NodeIterator tests
Tip revision: 5305d2c
Document-getElementsByTagName.html
<!DOCTYPE html>
<meta charset=utf-8>
<title>Document.getElementsByTagName</title>
<link rel=help href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-document-getelementsbytagname">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<pre id="x"></pre>
<script>
// TODO: getElementsByTagName("*")
test(function() {
  assert_false(document.getElementsByTagName("html") instanceof NodeList,
               "Should not return a NodeList")
  assert_true(document.getElementsByTagName("html") instanceof HTMLCollection,
              "Should return an HTMLCollection")
}, "Interfaces")
test(function() {
  var firstCollection = document.getElementsByTagName("html"),
      secondCollection = document.getElementsByTagName("html")
  assert_true(firstCollection !== secondCollection ||
              firstCollection === secondCollection)
}, "Caching is allowed")

test(function() {
  var l = document.getElementsByTagName("nosuchtag")
  l[5] = "foopy"
  assert_equals(l[5], undefined)
  assert_equals(l.item(5), null)
}, "Shouldn't be able to set unsigned properties on a HTMLCollection (non-strict mode)")
test(function() {
  var l = document.getElementsByTagName("nosuchtag")
  assert_throws(new TypeError(), function() {
    "use strict";
    l[5] = "foopy"
  })
  assert_equals(l[5], undefined)
  assert_equals(l.item(5), null)
}, "Shouldn't be able to set unsigned properties on a HTMLCollection (strict mode)")
test(function() {
  var l = document.getElementsByTagName("nosuchtag")
  var fn = l.item;
  assert_equals(fn, HTMLCollection.prototype.item);
  l.item = "pass"
  assert_equals(l.item, "pass")
  assert_equals(HTMLCollection.prototype.item, fn);
}, "Should be able to set expando shadowing a proto prop (item)")
test(function() {
  var l = document.getElementsByTagName("nosuchtag")
  var fn = l.namedItem;
  assert_equals(fn, HTMLCollection.prototype.namedItem);
  l.namedItem = "pass"
  assert_equals(l.namedItem, "pass")
  assert_equals(HTMLCollection.prototype.namedItem, fn);
}, "Should be able to set expando shadowing a proto prop (namedItem)")

test(function() {
  var list = document.getElementsByTagName('pre');
  var pre = list[0];
  assert_equals(pre.id, "x");
  assert_equals(list['x'], pre);

  assert_true('x' in list, "'x' in list");
  assert_true(list.hasOwnProperty('x'), "list.hasOwnProperty('x')");

  assert_array_equals(Object.getOwnPropertyNames(list).sort(), ["0", "x"]);

  var desc = Object.getOwnPropertyDescriptor(list, '0');
  assert_equals(typeof desc, "object", "descriptor should be an object");
  assert_true(desc.enumerable, "desc.enumerable");
  assert_true(desc.configurable, "desc.configurable");

  desc = Object.getOwnPropertyDescriptor(list, 'x');
  assert_equals(typeof desc, "object", "descriptor should be an object");
  assert_false(desc.enumerable, "desc.enumerable");
  assert_true(desc.configurable, "desc.configurable");
}, "hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames")

test(function() {
  assert_equals(document.createElementNS("http://www.w3.org/1999/xhtml", "i").localName, "i") // Sanity
  var i = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "I"))
  assert_equals(i.localName, "I")
  assert_equals(i.tagName, "I")
  assert_equals(document.getElementsByTagName("I").length, 0)
  assert_equals(document.getElementsByTagName("i").length, 0)
  assert_equals(document.body.getElementsByTagName("I").length, 0)
  assert_equals(document.body.getElementsByTagName("i").length, 0)
  document.body.removeChild(i)
})
test(function() {
  var t = document.body.appendChild(document.createElementNS("test", "te:st"))
  assert_equals(document.getElementsByTagName("st").length, 1)
  assert_equals(document.getElementsByTagName("st")[0], t)
  assert_equals(document.getElementsByTagName("te:st").length, 0)
  document.body.removeChild(t)
})
test(function() {
  var h = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "te:st"))
  assert_equals(document.getElementsByTagName("st")[0], h)
  assert_equals(document.getElementsByTagName("TE:ST").length, 0)
  document.body.removeChild(h)
})
</script>
back to top