This test checks the behavior of the add() method on the select.options object.
It covers both the the one-argument (1.x) and two-argument (2.x) signatures of the add() method.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


1.1 Add Option to empty Options
PASS select1.options.length is 1
PASS select1.selectedIndex is 0
PASS select1.options[0].value is '1'
PASS select1.options[0].textContent is 'A'

1.2 Add Option to non-empty Options
PASS select1.options.length is 2
PASS select1.selectedIndex is 0
PASS select1.options[0].value is '1'
PASS select1.options[0].textContent is 'A'
PASS select1.options[1].value is '2'
PASS select1.options[1].textContent is 'B'

1.3 Add Option after setting parameters
PASS select1.options.length is 3
PASS select1.selectedIndex is 0
PASS select1.options[0].value is '1'
PASS select1.options[0].textContent is 'A'
PASS select1.options[1].value is '2'
PASS select1.options[1].textContent is 'B'
PASS select1.options[2].value is '3'
PASS select1.options[2].textContent is 'C'

1.4 Add a non-Option element
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.5 Add a non-element (string)
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.6 Add a non-element (number)
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.7 Add a non-element (boolean)
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.8 Add undefined
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.9 Add null
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.10 Add negative infinity
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.11 Add NaN
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

1.12 Add positive infinity
PASS select1.options.add(option1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select1.options.length is 3
PASS select1.selectedIndex is 0

2.1 Add Option to empty Options
PASS select2.options.length is 1
PASS select2.selectedIndex is 0
PASS select2.options[0].value is '1'
PASS select2.options[0].textContent is 'A'

2.2 Add Option after setting parameters
PASS select2.options.length is 2
PASS select2.selectedIndex is 0
PASS select2.options[0].value is '1'
PASS select2.options[0].textContent is 'A'
PASS select2.options[1].value is '2'
PASS select2.options[1].textContent is 'B'

2.3 Insert Option at beginning of Options
PASS select2.options.length is 3
PASS select2.selectedIndex is 1
PASS select2.options[0].value is '0'
PASS select2.options[0].textContent is 'Z'
PASS select2.options[1].value is '1'
PASS select2.options[1].textContent is 'A'
PASS select2.options[2].value is '2'
PASS select2.options[2].textContent is 'B'

2.4 Insert Option in middle of Options
PASS select2.options.length is 4
PASS select2.selectedIndex is 1
PASS select2.options[0].value is '0'
PASS select2.options[0].textContent is 'Z'
PASS select2.options[1].value is '1'
PASS select2.options[1].textContent is 'A'
PASS select2.options[2].value is '1.5'
PASS select2.options[2].textContent is 'A.5'
PASS select2.options[3].value is '2'
PASS select2.options[3].textContent is 'B'

2.5 Insert Option at end of Options
PASS select2.options.length is 5
PASS select2.selectedIndex is 1
PASS select2.options[0].value is '0'
PASS select2.options[0].textContent is 'Z'
PASS select2.options[1].value is '1'
PASS select2.options[1].textContent is 'A'
PASS select2.options[2].value is '1.5'
PASS select2.options[2].textContent is 'A.5'
PASS select2.options[3].value is '2'
PASS select2.options[3].textContent is 'B'
PASS select2.options[4].value is '3'
PASS select2.options[4].textContent is 'C'

2.6 Insert Option beyond the end of Options
PASS select2.options.length is 6
PASS select2.selectedIndex is 1
PASS select2.options[0].value is '0'
PASS select2.options[0].textContent is 'Z'
PASS select2.options[1].value is '1'
PASS select2.options[1].textContent is 'A'
PASS select2.options[2].value is '1.5'
PASS select2.options[2].textContent is 'A.5'
PASS select2.options[3].value is '2'
PASS select2.options[3].textContent is 'B'
PASS select2.options[4].value is '3'
PASS select2.options[4].textContent is 'C'
PASS select2.options[5].value is '4'
PASS select2.options[5].textContent is 'D'

2.7 Add an Option at index -1
PASS select2.options.length is 7
PASS select2.selectedIndex is 1
PASS select2.options[0].value is '0'
PASS select2.options[0].textContent is 'Z'
PASS select2.options[1].value is '1'
PASS select2.options[1].textContent is 'A'
PASS select2.options[2].value is '1.5'
PASS select2.options[2].textContent is 'A.5'
PASS select2.options[3].value is '2'
PASS select2.options[3].textContent is 'B'
PASS select2.options[4].value is '3'
PASS select2.options[4].textContent is 'C'
PASS select2.options[5].value is '4'
PASS select2.options[5].textContent is 'D'
PASS select2.options[6].value is '5'
PASS select2.options[6].textContent is 'E'

2.8 Add an Option at index -2
PASS select2.options.add(option2, -2) threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.9 Add an Option at index -Infinity
PASS select2.options.add(option2, -1/0) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.10 Add an Option at index NaN
PASS select2.options.add(option2, 0/0) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.11 Add an Option at index Infinity
PASS select2.options.add(option2, 1/0) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.12 Add a non-Option element
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.13 Add a non-element (string)
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.14 Add a non-element (number)
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.15 Add a non-element (boolean)
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.16 Add undefined
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.17 Add null
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.18 Add negative infinity
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.19 Add NaN
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

2.20 Add positive infinity
PASS select2.options.add(option2, 1) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
PASS select2.options.length is 7
PASS select2.selectedIndex is 1

PASS successfullyParsed is true

TEST COMPLETE

