| library KeyboardEventTest; |
| import 'package:unittest/unittest.dart'; |
| import 'package:unittest/html_config.dart'; |
| import 'dart:html'; |
| |
| // Test that we are correctly determining keyCode and charCode uniformly across |
| // browsers. |
| |
| main() { |
| |
| useHtmlConfiguration(); |
| |
| keydownHandlerTest(KeyEvent e) { |
| expect(e.charCode, 0); |
| } |
| |
| test('keyboardEvent constructor', () { |
| var event = new KeyboardEvent('keyup'); |
| }); |
| test('keys', () { |
| var subscription = KeyboardEventStream.onKeyDown(document.body).listen( |
| keydownHandlerTest); |
| var subscription2 = KeyEvent.keyDownEvent.forTarget(document.body).listen( |
| keydownHandlerTest); |
| var subscription3 = document.body.onKeyDown.listen( |
| (e) => print('regular listener')); |
| subscription.cancel(); |
| subscription2.cancel(); |
| subscription3.cancel(); |
| }); |
| |
| test('constructKeyEvent', () { |
| var stream = KeyEvent.keyPressEvent.forTarget(document.body); |
| var subscription = stream.listen(expectAsync((keyEvent) { |
| expect(keyEvent.charCode, 97); |
| expect(keyEvent.keyCode, 65); |
| })); |
| var k = new KeyEvent('keypress', keyCode: 65, charCode: 97); |
| stream.add(k); |
| subscription.cancel(); |
| // Capital "A": |
| stream.add(new KeyEvent('keydown', keyCode: 16, charCode: 0)); |
| |
| subscription = stream.listen(expectAsync((keyEvent) { |
| expect(keyEvent.charCode, 65); |
| expect(keyEvent.keyCode, 65); |
| })); |
| stream.add(new KeyEvent('keypress', keyCode: 65, charCode: 65)); |
| subscription.cancel(); |
| }); |
| |
| test('KeyEventSequence', () { |
| // Press "?" by simulating "shift" and then the key that has "/" and "?" on |
| // it. |
| var streamDown = KeyEvent.keyDownEvent.forTarget(document.body); |
| var streamPress = KeyEvent.keyPressEvent.forTarget(document.body); |
| var streamUp = KeyEvent.keyUpEvent.forTarget(document.body); |
| |
| var subscription = streamDown.listen(expectAsync((keyEvent) { |
| expect(keyEvent.keyCode, isIn([16, 191])); |
| expect(keyEvent.charCode, 0); |
| }, count: 2)); |
| |
| var subscription2 = streamPress.listen(expectAsync((keyEvent) { |
| expect(keyEvent.keyCode, 23); |
| expect(keyEvent.charCode, 63); |
| })); |
| |
| var subscription3 = streamUp.listen(expectAsync((keyEvent) { |
| expect(keyEvent.keyCode, isIn([16, 191])); |
| expect(keyEvent.charCode, 0); |
| }, count: 2)); |
| |
| streamDown.add(new KeyEvent('keydown', keyCode: 16, charCode: 0)); |
| streamDown.add(new KeyEvent('keydown', keyCode: 191, charCode: 0)); |
| |
| streamPress.add(new KeyEvent('keypress', keyCode: 23, charCode: 63)); |
| |
| streamUp.add(new KeyEvent('keyup', keyCode: 191, charCode: 0)); |
| streamUp.add(new KeyEvent('keyup', keyCode: 16, charCode: 0)); |
| subscription.cancel(); |
| subscription2.cancel(); |
| subscription3.cancel(); |
| }); |
| |
| test('KeyEventKeyboardEvent', () { |
| window.onKeyDown.listen(expectAsync((KeyboardEvent event) { |
| expect(event.keyCode, 16); |
| })); |
| var streamDown = KeyEvent.keyDownEvent.forTarget(document.body); |
| streamDown.add(new KeyEvent('keydown', keyCode: 16, charCode: 0)); |
| }); |
| } |
| |
| |