| description("This test checks the behavior of the remove() method on the select.options object."); |
| |
| var select1 = document.getElementById("select1"); |
| var value; |
| |
| debug("1.1 Remove (object) from empty Options"); |
| value = document.createElement("DIV"); |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.2 Remove (string) from empty Options"); |
| value = "o"; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.3 Remove (float) from empty Options"); |
| value = 3.14; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.4 Remove (boolean) from empty Options"); |
| value = true; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.5 Remove (undefined) from empty Options"); |
| value = undefined; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.6 Remove (null) from empty Options"); |
| value = null; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.7 Remove (negative infinity) from empty Options"); |
| value = -1/0; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.8 Remove (NaN) from empty Options"); |
| value = 0/0; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.9 Remove (positive infinity) from empty Options"); |
| value = 1/0; |
| shouldBe("select1.options.remove(value)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.10 Remove no args from empty Options"); |
| shouldThrowErrorName("select1.options.remove()", "TypeError"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.11 Remove too many args from empty Options"); |
| shouldBe("select1.options.remove(0, 'foo')", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.12 Remove invalid index -2 from empty Options"); |
| shouldBe("select1.options.remove(-2)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.13 Remove invalid index -1 from empty Options"); |
| shouldBe("select1.options.remove(-1)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.14 Remove index 0 from empty Options"); |
| shouldBe("select1.options.remove(0)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.15 Remove index 1 from empty Options"); |
| shouldBe("select1.options.remove(1)", "undefined"); |
| shouldBe("select1.options.length", "0"); |
| shouldBe("select1.selectedIndex", "-1"); |
| debug(""); |
| |
| debug("1.16 Detach select element"); |
| shouldNotBe("select1.parentNode", "null"); |
| shouldBe("select1.remove()", "undefined"); |
| shouldBeNull("select1.parentNode"); |
| debug(""); |
| |
| // ------------------------------------------------ |
| |
| i = 0; |
| var select2 = document.getElementById("select2"); |
| |
| debug("2.1 Remove (object) from non-empty Options"); |
| value = document.createElement("DIV"); |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "15"); |
| shouldBe("select2.selectedIndex", "13"); |
| shouldBe("select2.options[0].value", "'B'"); |
| debug(""); |
| |
| debug("2.2 Remove (string) from non-empty Options"); |
| value = "o"; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "14"); |
| shouldBe("select2.selectedIndex", "12"); |
| shouldBe("select2.options[0].value", "'C'"); |
| debug(""); |
| |
| debug("2.3 Remove (float) from non-empty Options"); |
| value = 3.14; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "13"); |
| shouldBe("select2.selectedIndex", "11"); |
| shouldBe("select2.options[3].value", "'G'"); |
| debug(""); |
| |
| debug("2.4 Remove (boolean true) from non-empty Options"); |
| value = true; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "12"); |
| shouldBe("select2.selectedIndex", "10"); |
| shouldBe("select2.options[1].value", "'E'"); |
| debug(""); |
| |
| debug("2.5 Remove (boolean false) from non-empty Options"); |
| value = false; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "11"); |
| shouldBe("select2.selectedIndex", "9"); |
| shouldBe("select2.options[1].value", "'G'"); |
| debug(""); |
| |
| debug("2.6 Remove (undefined) from non-empty Options"); |
| value = undefined; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "10"); |
| shouldBe("select2.selectedIndex", "8"); |
| shouldBe("select2.options[0].value", "'G'"); |
| debug(""); |
| |
| debug("2.7 Remove (null) from non-empty Options"); |
| value = null; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "9"); |
| shouldBe("select2.selectedIndex", "7"); |
| shouldBe("select2.options[0].value", "'H'"); |
| debug(""); |
| |
| debug("2.8 Remove (negative infinity) from non-empty Options"); |
| value = -1/0; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "8"); |
| shouldBe("select2.selectedIndex", "6"); |
| shouldBe("select2.options[0].value", "'I'"); |
| debug(""); |
| |
| debug("2.9 Remove (NaN) from non-empty Options"); |
| value = 0/0; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "7"); |
| shouldBe("select2.selectedIndex", "5"); |
| shouldBe("select2.options[0].value", "'J'"); |
| debug(""); |
| |
| debug("2.10 Remove (positive infinity) from non-empty Options"); |
| value = 1/0; |
| shouldBe("select2.options.remove(value)", "undefined"); |
| shouldBe("select2.options.length", "6"); |
| shouldBe("select2.selectedIndex", "4"); |
| shouldBe("select2.options[0].value", "'K'"); |
| debug(""); |
| |
| debug("2.11 Remove index 0 from non-empty Options"); |
| shouldBe("select2.options.remove(0)", "undefined"); |
| shouldBe("select2.options.length", "5"); |
| shouldBe("select2.selectedIndex", "3"); |
| shouldBe("select2.options[0].value", "'L'"); |
| debug(""); |
| |
| debug("2.12 Remove too many args from non-empty Options"); |
| shouldBe("select2.options.remove(0, 'foo')", "undefined"); |
| shouldBe("select2.options.length", "4"); |
| shouldBe("select2.selectedIndex", "2"); |
| shouldBe("select2.options[0].value", "'M'"); |
| debug(""); |
| |
| debug("2.13 Remove invalid index -2 from non-empty Options"); |
| shouldBe("select2.options.remove(-2)", "undefined"); |
| shouldBe("select2.options.length", "4"); |
| shouldBe("select2.selectedIndex", "2"); |
| shouldBe("select2.options[2].value", "'O'"); |
| debug(""); |
| |
| debug("2.14 Remove invalid index -1 from non-empty Options"); |
| shouldBe("select2.options.remove(-1)", "undefined"); |
| shouldBe("select2.options.length", "4"); |
| shouldBe("select2.selectedIndex", "2"); |
| shouldBe("select2.options[3].value", "'P'"); |
| debug(""); |
| |
| debug("2.15 Remove index 0 from non-empty Options"); |
| shouldBe("select2.options.remove(0)", "undefined"); |
| shouldBe("select2.options.length", "3"); |
| shouldBe("select2.selectedIndex", "1"); |
| shouldBe("select2.options[0].value", "'N'"); |
| debug(""); |
| |
| debug("2.16 Remove index 1 from non-empty Options"); |
| shouldBe("select2.options.remove(1)", "undefined"); |
| shouldBe("select2.options.length", "2"); |
| shouldBe("select2.selectedIndex", "0"); |
| shouldBe("select2.options[1].value", "'P'"); |
| debug(""); |
| |
| debug("2.17 Detach select element"); |
| shouldNotBe("select2.parentNode", "null"); |
| shouldBe("select2.remove()", "undefined"); |
| shouldBeNull("select2.parentNode"); |
| debug(""); |