| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script src="../../resources/js-test.js"></script> | |
| 5 </head> | |
| 6 <body> | |
| 7 <div id=container> | |
| 8 <input id="input" type="text" onchange="changeHandler()"> | |
| 9 <input id="number" type="number" onchange="changeHandler()"> | |
| 10 <textarea id="textarea" onchange="changeHandler()"></textarea> | |
| 11 </div> | |
| 12 <script> | |
| 13 description('This test verifies that the change event is fired, when value is ch
anged by JavaScript code.'); | |
| 14 var changeEventCounter = 0; | |
| 15 // shouldBe*() can refer to only global variables. | |
| 16 var element; | |
| 17 function changeHandler() | |
| 18 { | |
| 19 changeEventCounter++; | |
| 20 element.value = ''; | |
| 21 } | |
| 22 | |
| 23 function testValueUpdateOnChange(userInput) { | |
| 24 debug('Value is updated in change event handler.'); | |
| 25 changeEventCounter = 0; | |
| 26 element.focus(); | |
| 27 document.execCommand('InsertText', false, userInput); | |
| 28 shouldBeEqualToString('element.value', userInput); | |
| 29 element.blur(); | |
| 30 shouldBe('changeEventCounter', '1'); | |
| 31 shouldBeEqualToString('element.value', ''); | |
| 32 | |
| 33 element.focus(); | |
| 34 document.execCommand('InsertText', false, userInput); | |
| 35 shouldBeEqualToString('element.value', userInput); | |
| 36 element.blur(); | |
| 37 shouldBe('changeEventCounter', '2'); | |
| 38 } | |
| 39 | |
| 40 function testValueUpdateWithoutUserEdit(jsInput) { | |
| 41 debug('Value is updated while element is focused.'); | |
| 42 changeEventCounter = 0; | |
| 43 element.value = ''; | |
| 44 element.focus(); | |
| 45 element.value = jsInput; | |
| 46 element.blur(); | |
| 47 shouldBe('changeEventCounter', '0'); | |
| 48 } | |
| 49 | |
| 50 function testValueUpdateAfterUserEdit(userInput, jsInput) { | |
| 51 debug('Value is updated after a user edit.'); | |
| 52 changeEventCounter = 0; | |
| 53 element.value = '0'; | |
| 54 element.focus(); | |
| 55 document.execCommand('InsertText', false, userInput); | |
| 56 element.value = jsInput; | |
| 57 element.blur(); | |
| 58 shouldBe('changeEventCounter', '1'); | |
| 59 } | |
| 60 | |
| 61 debug('===> Tests for INPUT[type=text]'); | |
| 62 element = document.getElementById('input'); | |
| 63 testValueUpdateOnChange('foo bar'); | |
| 64 testValueUpdateWithoutUserEdit('FOO BAR'); | |
| 65 testValueUpdateAfterUserEdit('foo bar', 'FOO BAR'); | |
| 66 | |
| 67 debug('===> Tests for INPUT[type=number]'); | |
| 68 element = document.getElementById('number'); | |
| 69 testValueUpdateOnChange('123'); | |
| 70 testValueUpdateWithoutUserEdit('999'); | |
| 71 testValueUpdateAfterUserEdit('123', '999'); | |
| 72 | |
| 73 debug('===> Tests for TEXTAREA'); | |
| 74 element = document.getElementById('textarea'); | |
| 75 testValueUpdateOnChange('foo bar'); | |
| 76 testValueUpdateWithoutUserEdit('FOO BAR'); | |
| 77 testValueUpdateAfterUserEdit('foo bar', 'FOO BAR'); | |
| 78 | |
| 79 document.querySelector('#container').remove(); | |
| 80 </script> | |
| 81 </body> | |
| 82 </html> | |
| OLD | NEW |