description(
"This test checks the behavior of the add() method on the select.options object.<br>" +
"It covers both the the one-argument (1.x) and two-argument (2.x) signatures of the add() method."
);

div = document.createElement("div");
sel = document.createElement("select");
sel.setAttribute("id", "select1");
div.appendChild(sel);
sel = document.createElement("select");
sel.setAttribute("id", "select2");
div.appendChild(sel);
document.body.insertBefore(div, document.getElementById("console").nextSibling);

debug("1.1 Add Option to empty Options");
var select1 = document.getElementById("select1");
var option1 = document.createElement("OPTION");
select1.options.add(option1);
option1.value = "1";
option1.textContent = "A";
shouldBe("select1.options.length", "1");
shouldBe("select1.selectedIndex", "0");
shouldBe("select1.options[0].value", "'1'");
shouldBe("select1.options[0].textContent", "'A'");
debug("");

debug("1.2 Add Option to non-empty Options");
option1 = document.createElement("OPTION");
select1.options.add(option1);
option1.value = "2";
option1.textContent = "B";
shouldBe("select1.options.length", "2");
shouldBe("select1.selectedIndex", "0");
shouldBe("select1.options[0].value", "'1'");
shouldBe("select1.options[0].textContent", "'A'");
shouldBe("select1.options[1].value", "'2'");
shouldBe("select1.options[1].textContent", "'B'");
debug("");

debug("1.3 Add Option after setting parameters");
option1 = document.createElement("OPTION");
option1.value = "3";
option1.textContent = "C";
select1.options.add(option1);
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
shouldBe("select1.options[0].value", "'1'");
shouldBe("select1.options[0].textContent", "'A'");
shouldBe("select1.options[1].value", "'2'");
shouldBe("select1.options[1].textContent", "'B'");
shouldBe("select1.options[2].value", "'3'");
shouldBe("select1.options[2].textContent", "'C'");
debug("");

debug("1.4 Add a non-Option element");
div = document.createElement("DIV");
shouldThrowErrorName("select1.options.add(div)", "TypeError");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.5 Add a non-element (string)");
option1 = "o";
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.6 Add a non-element (number)");
option1 = 3.14;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.7 Add a non-element (boolean)");
option1 = true;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.8 Add undefined");
option1 = undefined;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.9 Add null");
option1 = null;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.10 Add negative infinity");
option1 = -1/0;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.11 Add NaN");
option1 = 0/0;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("1.12 Add positive infinity");
option1 = 1/0;
shouldThrow("select1.options.add(option1)");
shouldBe("select1.options.length", "3");
shouldBe("select1.selectedIndex", "0");
debug("");

debug("2.1 Add Option to empty Options");
var select2 = document.getElementById("select2");
var option2 = document.createElement("OPTION");
select2.options.add(option2, 0);
option2.value = "1";
option2.textContent = "A";
shouldBe("select2.options.length", "1");
shouldBe("select2.selectedIndex", "0");
shouldBe("select2.options[0].value", "'1'");
shouldBe("select2.options[0].textContent", "'A'");
debug("");

debug("2.2 Add Option after setting parameters");
option2 = document.createElement("OPTION");
option2.value = "2";
option2.textContent = "B";
select2.options.add(option2, 1);
shouldBe("select2.options.length", "2");
shouldBe("select2.selectedIndex", "0");
shouldBe("select2.options[0].value", "'1'");
shouldBe("select2.options[0].textContent", "'A'");
shouldBe("select2.options[1].value", "'2'");
shouldBe("select2.options[1].textContent", "'B'");
debug("");

debug("2.3 Insert Option at beginning of Options");
option2 = document.createElement("OPTION");
select2.options.add(option2, 0);
option2.value = "0";
option2.textContent = "Z";
shouldBe("select2.options.length", "3");
shouldBe("select2.selectedIndex", "1");
shouldBe("select2.options[0].value", "'0'");
shouldBe("select2.options[0].textContent", "'Z'");
shouldBe("select2.options[1].value", "'1'");
shouldBe("select2.options[1].textContent", "'A'");
shouldBe("select2.options[2].value", "'2'");
shouldBe("select2.options[2].textContent", "'B'");
debug("");

debug("2.4 Insert Option in middle of Options");
option2 = document.createElement("OPTION");
select2.options.add(option2, 2);
option2.value = "1.5";
option2.textContent = "A.5";
shouldBe("select2.options.length", "4");
shouldBe("select2.selectedIndex", "1");
shouldBe("select2.options[0].value", "'0'");
shouldBe("select2.options[0].textContent", "'Z'");
shouldBe("select2.options[1].value", "'1'");
shouldBe("select2.options[1].textContent", "'A'");
shouldBe("select2.options[2].value", "'1.5'");
shouldBe("select2.options[2].textContent", "'A.5'");
shouldBe("select2.options[3].value", "'2'");
shouldBe("select2.options[3].textContent", "'B'");
debug("");

debug("2.5 Insert Option at end of Options");
option2 = document.createElement("OPTION");
select2.options.add(option2, 4);
option2.value = "3";
option2.textContent = "C";
shouldBe("select2.options.length", "5");
shouldBe("select2.selectedIndex", "1");
shouldBe("select2.options[0].value", "'0'");
shouldBe("select2.options[0].textContent", "'Z'");
shouldBe("select2.options[1].value", "'1'");
shouldBe("select2.options[1].textContent", "'A'");
shouldBe("select2.options[2].value", "'1.5'");
shouldBe("select2.options[2].textContent", "'A.5'");
shouldBe("select2.options[3].value", "'2'");
shouldBe("select2.options[3].textContent", "'B'");
shouldBe("select2.options[4].value", "'3'");
shouldBe("select2.options[4].textContent", "'C'");
debug("");

debug("2.6 Insert Option beyond the end of Options");
option2 = document.createElement("OPTION");
select2.options.add(option2, 6);
option2.value = "4";
option2.textContent = "D";
shouldBe("select2.options.length", "6");
shouldBe("select2.selectedIndex", "1");
shouldBe("select2.options[0].value", "'0'");
shouldBe("select2.options[0].textContent", "'Z'");
shouldBe("select2.options[1].value", "'1'");
shouldBe("select2.options[1].textContent", "'A'");
shouldBe("select2.options[2].value", "'1.5'");
shouldBe("select2.options[2].textContent", "'A.5'");
shouldBe("select2.options[3].value", "'2'");
shouldBe("select2.options[3].textContent", "'B'");
shouldBe("select2.options[4].value", "'3'");
shouldBe("select2.options[4].textContent", "'C'");
shouldBe("select2.options[5].value", "'4'");
shouldBe("select2.options[5].textContent", "'D'");
debug("");

debug("2.7 Add an Option at index -1");
option2 = document.createElement("OPTION");
select2.options.add(option2, -1);
option2.value = "5";
option2.textContent = "E";
shouldBe("select2.options.length", "7");
shouldBe("select2.selectedIndex", "1");
shouldBe("select2.options[0].value", "'0'");
shouldBe("select2.options[0].textContent", "'Z'");
shouldBe("select2.options[1].value", "'1'");
shouldBe("select2.options[1].textContent", "'A'");
shouldBe("select2.options[2].value", "'1.5'");
shouldBe("select2.options[2].textContent", "'A.5'");
shouldBe("select2.options[3].value", "'2'");
shouldBe("select2.options[3].textContent", "'B'");
shouldBe("select2.options[4].value", "'3'");
shouldBe("select2.options[4].textContent", "'C'");
shouldBe("select2.options[5].value", "'4'");
shouldBe("select2.options[5].textContent", "'D'");
shouldBe("select2.options[6].value", "'5'");
shouldBe("select2.options[6].textContent", "'E'");
debug("");

debug("2.8 Add an Option at index -2");
option2 = document.createElement("OPTION");
shouldNotThrow("select2.options.add(option2, -2)");
shouldBe("select2.options.length", "8");
shouldBe("select2.selectedIndex", "1");
debug("");

debug("2.9 Add an Option at index -Infinity");
option2 = document.createElement("OPTION");
shouldNotThrow("select2.options.add(option2, -1/0)");
shouldBe("select2.options.length", "9");
shouldBe("select2.selectedIndex", "2");
debug("");

debug("2.10 Add an Option at index NaN");
option2 = document.createElement("OPTION");
shouldNotThrow("select2.options.add(option2, 0/0)");
shouldBe("select2.options.length", "10");
shouldBe("select2.selectedIndex", "3");
debug("");

debug("2.11 Add an Option at index Infinity");
option2 = document.createElement("OPTION");
shouldNotThrow("select2.options.add(option2, 1/0)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.12 Add a non-Option element");
div = document.createElement("DIV");
shouldThrowErrorName("select2.options.add(div, 1)", "TypeError");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.13 Add a non-element (string)");
option2 = "o";
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.14 Add a non-element (number)");
option2 = 3.14;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.15 Add a non-element (boolean)");
option2 = true;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.16 Add undefined");
option2 = undefined;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.17 Add null");
option2 = null;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.18 Add negative infinity");
option2 = -1/0;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.19 Add NaN");
option2 = 0/0;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");

debug("2.20 Add positive infinity");
option2 = 1/0;
shouldThrow("select2.options.add(option2, 1)");
shouldBe("select2.options.length", "11");
shouldBe("select2.selectedIndex", "4");
debug("");
