This test checks if setSelectionRange(), selectionStart, and selectionEnd on a textarea and input work as expected. This includes checking edge cases such as out-of-bound values.

If this test passed you'll see a bunch of correct selection ranges below. Check the expected file for the correct ranges.

    
===textarea===
setSelectionRange():
3, 7
0, 5
42, 48
2, 2

selectionStart:
3, 3
7, 7
0, 7
48, 48
3, 48

selectionEnd:
3, 5
2, 2
0, 0
0, 48
7, 7

===input===
setSelectionRange():
3, 7
0, 5
42, 48
2, 2

selectionStart:
3, 3
7, 7
0, 7
48, 48
3, 48

selectionEnd:
3, 5
2, 2
0, 0
0, 48
7, 7

===button===
button.selectionStart threw exception
button.selectionStart = 0 threw exception
button.selectionEnd threw exception
button.selectionEnd = 0 threw exception
button.setSelectionRange defined
button.setSelectionRange(0,0) threw exception
