143 lines
4.9 KiB
HTML
143 lines
4.9 KiB
HTML
<select id="test" size="3">
|
|
</select>
|
|
<div id="console"></div>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
function reset(mySelect) {
|
|
mySelect.length = 0;
|
|
mySelect.options[mySelect.length] = new Option("one", "value", true, true);
|
|
mySelect.options[mySelect.length] = new Option("two", "value", true, true);
|
|
}
|
|
|
|
var mySelect = document.getElementById("test");
|
|
reset(mySelect);
|
|
var i = 0;
|
|
|
|
debug((++i) + ") setting length to a negative length");
|
|
mySelect.options.length = -1;
|
|
shouldBe("mySelect.options.length", "2");
|
|
shouldBe("mySelect.selectedIndex", "1");
|
|
|
|
debug((++i) + ") setting length to a larger length");
|
|
mySelect.options.length = 5;
|
|
shouldBe("mySelect.options.length", "5");
|
|
shouldBe("mySelect.selectedIndex", "1");
|
|
|
|
debug((++i) + ") setting length to a smaller length");
|
|
mySelect.options.length = 2;
|
|
shouldBe("mySelect.options.length", "2");
|
|
shouldBe("mySelect.selectedIndex", "1");
|
|
|
|
mySelect.options.length = 1;
|
|
shouldBe("mySelect.options.length", "1");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to the same length");
|
|
mySelect.options.length = 2;
|
|
shouldBe("mySelect.options.length", "2");
|
|
shouldBe("mySelect.selectedIndex", "1");
|
|
|
|
debug((++i) + ") setting length to non-integer value: null");
|
|
mySelect.options.length = null;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: undefined");
|
|
mySelect.options.length = undefined;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: true");
|
|
mySelect.options.length = true;
|
|
shouldBe("mySelect.options.length", "1");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: false");
|
|
mySelect.options.length = false;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: non-numeric string");
|
|
mySelect.options.length = "apple";
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: object");
|
|
mySelect.options.length = new Object();
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: negative infinity");
|
|
mySelect.options.length = -1/0;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: NaN");
|
|
mySelect.options.length = 0/0;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: positive infinity");
|
|
mySelect.options.length = 1/0;
|
|
shouldBe("mySelect.options.length", "0");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
reset(mySelect);
|
|
|
|
debug((++i) + ") setting length to non-integer value: floating point number");
|
|
mySelect.options.length = 2.1;
|
|
shouldBe("mySelect.options.length", "2");
|
|
shouldBe("mySelect.selectedIndex", "1");
|
|
|
|
debug((++i) + ") setting an element by index past the end of the current list");
|
|
mySelect.options[10] = new Option("ten", "value", true, true);
|
|
shouldBe("mySelect.options.length", "11");
|
|
shouldBe("mySelect.selectedIndex", "10");
|
|
|
|
debug((++i) + ") setting an existing element by index");
|
|
mySelect.options[10] = mySelect.options[10];
|
|
shouldBe("mySelect.options.length", "11");
|
|
shouldBe("mySelect.selectedIndex", "10");
|
|
|
|
debug((++i) + ") trying to set an element that's not an option: null");
|
|
mySelect.options[10] = null;
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug((++i) + ") trying to set an element that's not an option: undefined");
|
|
mySelect.options[10] = undefined;
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug((++i) + ") trying to set an element that's not an option: select element");
|
|
shouldThrow("mySelect.options[10] = mySelect;");
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug((++i) + ") trying to set a option element using an invalid index: negative infinity");
|
|
mySelect.options[-1/0] = document.createElement("option");
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug((++i) + ") trying to set a option element using an invalid index: NaN");
|
|
mySelect.options[0/0] = document.createElement("option");
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug((++i) + ") trying to set a option element using an invalid index: positive infinity");
|
|
mySelect.options[1/0] = document.createElement("option");
|
|
shouldBe("mySelect.options.length", "10");
|
|
shouldBe("mySelect.selectedIndex", "-1");
|
|
|
|
debug("");
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|