<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<div id="playground">
    <!-- 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>
</div>
<script>
description("Tests that HTMLCollection's named properties returned by Object.getOwnPropertyNames() but not enumerable.");

var playground = document.getElementById("playground");
var elements = playground.getElementsByTagName("span");

debug("* Own properties");
var ownProperties = Object.getOwnPropertyNames(elements);
var result = "[";
var isFirst = true;
for (var i = 0; i < ownProperties.length; i++) {
    if (isFirst)
        isFirst = false;
    else
       result += ", ";
    result += "'" + ownProperties[i] + "'";
}
result += "]";
debug("Actual:   " + result);
debug("Expected: ['0', '1', '2', '3', '4', '5', '6', '7', 'some-id', 'some-name', 'another-id', 'another-name']");

debug("");
debug("* Enumerated properties");
result = "[";
isFirst = true;
for (var property in elements) {
    if (isFirst)
        isFirst = false;
    else
       result += ", ";
    result += "'" + property + "'";
}
result += "]";
debug("Actual:   " + result);
debug("Expected: ['0', '1', '2', '3', '4', '5', '6', '7', 'length', 'item', 'namedItem']");

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
