68 lines
3.5 KiB
HTML
68 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<script src="resources/html-select-and-options-collection-utilities.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description("Test that HTMLSelectElement.add() works when passing an index or an HTML option element as its second argument.");
|
|
|
|
var mySelect = createSelectElementWithTestData();
|
|
|
|
function testAdd()
|
|
{
|
|
HTMLSelectElement.prototype.add.apply(mySelect, arguments);
|
|
var result = deepCopy(mySelect);
|
|
mySelect = createSelectElementWithTestData(); // Reset
|
|
return result;
|
|
}
|
|
|
|
debug("<br>Call HTMLSelectElement.add() with zero arguments:");
|
|
shouldThrow("testAdd()");
|
|
|
|
debug("<br>Call HTMLSelectElement.add() with one argument:");
|
|
shouldBeEqualToString('testAdd(createOption("Y1"))', "0,1,2,Y1");
|
|
shouldThrowErrorName('testAdd("foo")', "TypeError");
|
|
shouldThrowErrorName("testAdd(undefined)", "TypeError");
|
|
shouldThrowErrorName("testAdd(null)", "TypeError");
|
|
|
|
debug("<br>Call HTMLSelectElement.add() with two arguments:");
|
|
shouldBeEqualToString('testAdd(createOption("Y2"), null)', "0,1,2,Y2");
|
|
shouldBeEqualToString('testAdd(createOption("Y3"), 0)', "Y3,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y4"), 1)', "0,Y4,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y5"), 2)', "0,1,Y5,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y6"), 3)', "0,1,2,Y6");
|
|
shouldBeEqualToString('testAdd(createOption("Y7"), 100)', "0,1,2,Y7");
|
|
shouldBeEqualToString('testAdd(createOption("Y8"), -100)', "0,1,2,Y8");
|
|
shouldBeEqualToString('testAdd(createOption("Y9"), "0")', "Y9,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y10"), "1")', "0,Y10,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y11"), "2")', "0,1,Y11,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y12"), true)', "0,Y12,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y13"), false)', "Y13,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y14"), 2147483647)', "0,1,2,Y14");
|
|
shouldBeEqualToString('testAdd(createOption("Y15"), 2147483648)', "0,1,2,Y15");
|
|
shouldBeEqualToString('testAdd(createOption("Y16"), -2147483647)', "0,1,2,Y16");
|
|
shouldBeEqualToString('testAdd(createOption("Y17"), -2147483648)', "0,1,2,Y17");
|
|
shouldBeEqualToString('testAdd(createOption("Y18"), -2147483649)', "0,1,2,Y18");
|
|
shouldBeEqualToString('testAdd(createOption("Y19"), Infinity)', "Y19,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y20"), -Infinity)', "Y20,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y21"), "foo")', "Y21,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y22"), NaN)', "Y22,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("Y23"), undefined)', "0,1,2,Y23");
|
|
shouldBeEqualToString('testAdd(createOption("Y24"), -2)', "0,1,2,Y24");
|
|
shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[0])', "X,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1])', "0,X,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[2])', "0,1,X,2");
|
|
shouldThrowErrorName('testAdd("foo", 0)', "TypeError");
|
|
shouldThrowErrorName('testAdd(undefined, 0)', "TypeError");
|
|
shouldThrowErrorName('testAdd(null, 0)', "TypeError");
|
|
|
|
debug("<br>Call HTMLSelectElement.add() with three arguments (when it only takes two arguments):");
|
|
shouldBeEqualToString('testAdd(createOption("X"), 0, "unnecessary extra argument - should be ignored")', "X,0,1,2");
|
|
shouldBeEqualToString('testAdd(createOption("X"), mySelect.options[1], "unnecessary extra argument - should be ignored")', "0,X,1,2");
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|