4 <script src="../../../resources/js-test.js"></script>
8 description('Test select.add() method');
13 debug('Test select multiple');
18 function resetSelect(multiple) {
19 select = document.createElement('select');
20 select.multiple = multiple;
21 select.appendChild(new Option("0", "0", false, false));
22 select.appendChild(new Option("1", "1", false, false));
23 select.appendChild(new Option("2", "2", false, false));
26 function addOption(index) {
27 select.add(new Option('X', 'X', false, false), index);
28 return getSelectOptions();
31 function getSelectOptions() {
33 for (var i = 0; i < select.options.length; ++i) {
34 values.push(select.options[i].value);
36 return values.join(",");
39 function test(multiple) {
40 resetSelect(multiple);
41 shouldBeEqualToString('addOption(0)', 'X,0,1,2');
43 resetSelect(multiple);
44 shouldBeEqualToString('addOption(1)', '0,X,1,2');
46 resetSelect(multiple);
47 shouldBeEqualToString('addOption(2)', '0,1,X,2');
49 resetSelect(multiple);
50 shouldBeEqualToString('addOption(3)', '0,1,2,X');
52 resetSelect(multiple);
53 shouldBeEqualToString('addOption(100)', '0,1,2,X');
55 resetSelect(multiple);
56 shouldBeEqualToString('addOption(-100)', '0,1,2,X');
58 resetSelect(multiple);
59 select.add(new Option('X', 'X', false, false));
60 shouldBeEqualToString('getSelectOptions()', '0,1,2,X');
62 resetSelect(multiple);
63 shouldBeEqualToString('addOption(null)', '0,1,2,X');
65 resetSelect(multiple);
66 shouldBeEqualToString('addOption(NaN)', 'X,0,1,2');
68 resetSelect(multiple);
69 shouldBeEqualToString('addOption(Infinity)', 'X,0,1,2');
71 resetSelect(multiple);
72 shouldBeEqualToString('addOption(-Infinity)', 'X,0,1,2');
74 resetSelect(multiple);
75 shouldBeEqualToString('addOption("foo")', 'X,0,1,2');
77 resetSelect(multiple);
78 shouldThrow('select.add()');
79 shouldThrow('select.add("foo")');
80 shouldThrow('select.add("foo", 0)');
81 shouldThrow('select.add(null)');
82 shouldThrow('select.add(null, 0)');
84 resetSelect(multiple);
85 var group = document.createElement('optgroup');
86 group.appendChild(new Option('X', 'X', false, false));
87 group.appendChild(new Option('Y', 'Y', false, false));
89 shouldBeEqualToString('getSelectOptions()', '0,X,Y,1,2');