<!doctype html>
<meta charset=utf-8>
<link rel=help href=https://dom.spec.whatwg.org/#interface-htmlcollection>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>

<div id=log></div>

<!-- with no attribute -->
<span></span>

<!-- with `id` attribute -->
<span id=''></span>
<span id='some-id'></span>
<span id='some-id'></span><!-- to ensure no duplicates -->

<!-- with `name` attribute -->
<span name=''></span>
<span name='some-name'></span>
<span name='some-name'></span><!-- to ensure no duplicates -->

<!-- with `name` and `id` attribute -->
<span id='another-id' name='another-name'></span>

<script>
test(function () {
  var elements = document.getElementsByTagName("span");
  assert_array_equals(
    Object.getOwnPropertyNames(elements),
    ['0', '1', '2', '3', '4', '5', '6', '7', 'some-id', 'some-name', 'another-id', 'another-name']
  );
}, 'Object.getOwnPropertyNames on HTMLCollection');

test(function () {
  var elem = document.createElementNS('some-random-namespace', 'foo');
  this.add_cleanup(function () {elem.remove();});
  elem.setAttribute("name", "some-name");
  document.body.appendChild(elem);

  var elements = document.getElementsByTagName("foo");
  assert_array_equals(Object.getOwnPropertyNames(elements), ['0']);
}, 'Object.getOwnPropertyNames on HTMLCollection with non-HTML namespace');

test(function () {
  var elem = document.createElement('foo');
  this.add_cleanup(function () {elem.remove();});
  document.body.appendChild(elem);

  var elements = document.getElementsByTagName("foo");
  elements.someProperty = "some value";

  assert_array_equals(Object.getOwnPropertyNames(elements), ['0', 'someProperty']);
}, 'Object.getOwnPropertyNames on HTMLCollection with expando object');
</script>
