blob: 33c4469dea0ed779e452a09757550ebb779e8ddb [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<div id="testDiv">
<p name="toString" id="toStringP"></p>
<p name="length" id="lengthP"></p>
<p name="foo" id="fooP"></p>
<p name="0" id="0P"></p>
</div>
<script>
description("Tests that the behavior of HTMLCollection's [[GetOwnProperty]] conforms to Web IDL");
var testDiv = document.getElementById("testDiv");
var htmlCollection = testDiv.children;
debug("* Named properties should not mask properties on the prototype");
shouldBe("htmlCollection.namedItem('toString')", "document.getElementById('toStringP')");
shouldBe("htmlCollection.toString", "HTMLCollection.prototype.toString");
debug("");
debug("* Named properties should not mask static properties on HTMLCollection");
shouldBe("htmlCollection.namedItem('length')", "document.getElementById('lengthP')");
shouldBe("htmlCollection.length", "4");
debug("");
debug("* Named properties should not mask own properties on HTMLCollection");
evalAndLog("htmlCollection.foo = 'foo'");
shouldBe("htmlCollection.namedItem('foo')", "document.getElementById('fooP')")
shouldBeEqualToString("htmlCollection.foo", "foo");
debug("");
debug("* Named properties should not mask indexed properties");
shouldBe("htmlCollection.item(0)", "testDiv.firstElementChild");
shouldBe("htmlCollection[0]", "testDiv.firstElementChild");
shouldBe("htmlCollection.namedItem('0')", "document.getElementById('0P')");
shouldBe("htmlCollection['0']", "testDiv.firstElementChild");
debug("");
debug("* Own properties on HTMLCollection should mask properties on prototype");
evalAndLog("htmlCollection.toString = 'InstanceToString'");
shouldBeEqualToString("htmlCollection.toString", "InstanceToString");
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>