Index: LayoutTests/fast/forms/select/select-add.html |
diff --git a/LayoutTests/fast/forms/select/select-add.html b/LayoutTests/fast/forms/select/select-add.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6c83f888ab78ddf74263222eba092a479e3511df |
--- /dev/null |
+++ b/LayoutTests/fast/forms/select/select-add.html |
@@ -0,0 +1,93 @@ |
+<!DOCTYPE html> |
+<html> |
+<head> |
+<script src="../../../resources/js-test.js"></script> |
+</head> |
+<body> |
+<script> |
+description('Test select.add() method'); |
+ |
+debug('Test select'); |
+test(false); |
+ |
+debug('Test select multiple'); |
+test(true); |
+ |
+var select; |
+ |
+function resetSelect(multiple) { |
+ select = document.createElement('select'); |
+ select.multiple = multiple; |
+ select.appendChild(new Option("0", "0", false, false)); |
+ select.appendChild(new Option("1", "1", false, false)); |
+ select.appendChild(new Option("2", "2", false, false)); |
+} |
+ |
+function addOption(index) { |
+ select.add(new Option('X', 'X', false, false), index); |
+ return getSelectOptions(); |
+} |
+ |
+function getSelectOptions() { |
+ var values = []; |
+ for (var i = 0; i < select.options.length; ++i) { |
+ values.push(select.options[i].value); |
+ } |
+ return values.join(","); |
+} |
+ |
+function test(multiple) { |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(0)', 'X,0,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(1)', '0,X,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(2)', '0,1,X,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(3)', '0,1,2,X'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(100)', '0,1,2,X'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(-100)', '0,1,2,X'); |
+ |
+ resetSelect(multiple); |
+ select.add(new Option('X', 'X', false, false)); |
+ shouldBeEqualToString('getSelectOptions()', '0,1,2,X'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(null)', '0,1,2,X'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(NaN)', 'X,0,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(Infinity)', 'X,0,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption(-Infinity)', 'X,0,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldBeEqualToString('addOption("foo")', 'X,0,1,2'); |
+ |
+ resetSelect(multiple); |
+ shouldThrow('select.add()'); |
+ shouldThrow('select.add("foo")'); |
+ shouldThrow('select.add("foo", 0)'); |
+ shouldThrow('select.add(null)'); |
+ shouldThrow('select.add(null, 0)'); |
+ |
+ resetSelect(multiple); |
+ var group = document.createElement('optgroup'); |
+ group.appendChild(new Option('X', 'X', false, false)); |
+ group.appendChild(new Option('Y', 'Y', false, false)); |
+ select.add(group, 1); |
+ shouldBeEqualToString('getSelectOptions()', '0,X,Y,1,2'); |
+} |
+</script> |
+</body> |
+</html> |