| <!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> |