6c83f888ab78ddf74263222eba092a479e3511df
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / forms / select / select-add.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../../resources/js-test.js"></script>
5 </head>
6 <body>
7 <script>
8 description('Test select.add() method');
9
10 debug('Test select');
11 test(false);
12
13 debug('Test select multiple');
14 test(true);
15
16 var select;
17
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));
24 }
25
26 function addOption(index) {
27     select.add(new Option('X', 'X', false, false), index);
28     return getSelectOptions();
29 }
30
31 function getSelectOptions() {
32     var values = [];
33     for (var i = 0; i < select.options.length; ++i) {
34         values.push(select.options[i].value);
35     }
36     return values.join(",");
37 }
38
39 function test(multiple) {
40     resetSelect(multiple);
41     shouldBeEqualToString('addOption(0)', 'X,0,1,2');
42
43     resetSelect(multiple);
44     shouldBeEqualToString('addOption(1)', '0,X,1,2');
45
46     resetSelect(multiple);
47     shouldBeEqualToString('addOption(2)', '0,1,X,2');
48
49     resetSelect(multiple);
50     shouldBeEqualToString('addOption(3)', '0,1,2,X');
51
52     resetSelect(multiple);
53     shouldBeEqualToString('addOption(100)', '0,1,2,X');
54
55     resetSelect(multiple);
56     shouldBeEqualToString('addOption(-100)', '0,1,2,X');
57
58     resetSelect(multiple);
59     select.add(new Option('X', 'X', false, false));
60     shouldBeEqualToString('getSelectOptions()', '0,1,2,X');
61
62     resetSelect(multiple);
63     shouldBeEqualToString('addOption(null)', '0,1,2,X');
64
65     resetSelect(multiple);
66     shouldBeEqualToString('addOption(NaN)', 'X,0,1,2');
67
68     resetSelect(multiple);
69     shouldBeEqualToString('addOption(Infinity)', 'X,0,1,2');
70
71     resetSelect(multiple);
72     shouldBeEqualToString('addOption(-Infinity)', 'X,0,1,2');
73
74     resetSelect(multiple);
75     shouldBeEqualToString('addOption("foo")', 'X,0,1,2');
76
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)');
83
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));
88     select.add(group, 1);
89     shouldBeEqualToString('getSelectOptions()', '0,X,Y,1,2');
90 }
91 </script>
92 </body>
93 </html>