<!DOCTYPE html>
<html>
<body>
<div id="testElements">
<form>
<input type="text" name="some">
<input type="text" name="length">
</form>
<form>
<select>
<option name="length">
<option name="some">
</select>
</form>
<table>
<tbody>
<tr id="another"><td></td></tr>
<tr id="length"><td></td></tr>
</tbody>
</table>
</div>
<script>

// We need to pre-fetch these values since including the script element inserts new elements.
documentAllLength = document.all.length;
documentAllSome = document.all['some'];
documentAll5 = document.all[5];
documentAll6 = document.all[6];

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

description("This test ensures the builtin length property of HTMLCollection's subclasses is not overridden by a named getter of the same name.");

var form = document.forms[0];
var select = document.querySelector('select');
var table = document.querySelector('table');
shouldBe("documentAllLength", "18");
shouldBe("documentAll5", "documentAllSome");
shouldBe("documentAll6.name", "'length'");

shouldBe("form.length", "form.elements[1]");
shouldBe("form.elements.length", "2");
shouldBe("form.elements[0]", "form.elements['some']");
shouldBe("form.elements[1].name", "'length'");

shouldBe("select.options.length", "2");
shouldBe("select.options[0].getAttribute('name')", "'length'");
shouldBe("select.options[1]", "select.options['some']");

shouldBe("table.rows.length", "2");
shouldBe("table.rows[0]", "table.rows['another']");
shouldBe("table.rows[1].id", "'length'");

document.getElementById('testElements').style.display = 'none';

var successfullyParsed = true;

</script>
</body>
</html>
