Index: tests/html/keyboard_event_test.dart |
diff --git a/tests/html/keyboard_event_test.dart b/tests/html/keyboard_event_test.dart |
index f7427351fda8d0cc4e5e40d7ceafd66b322f7534..b84ef68389d76567ec930246a1bd569215566dd5 100644 |
--- a/tests/html/keyboard_event_test.dart |
+++ b/tests/html/keyboard_event_test.dart |
@@ -23,10 +23,69 @@ main() { |
// values (a KeyboardEvent can be "init"-ed but not all the information can |
// be programmatically populated. It exists as an example for how to use |
// KeyboardEventController more than anything else. |
- KeyboardEventStream.onKeyDown(document.body).listen( |
+ var subscription = KeyboardEventStream.onKeyDown(document.body).listen( |
keydownHandlerTest); |
- KeyEvent.keyDownEvent.forTarget(document.body).listen(keydownHandlerTest); |
- document.body.onKeyDown.listen((e) => print('regular listener')); |
+ 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((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((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((keyEvent) { |
+ expect(keyEvent.keyCode, isIn([16, 191])); |
+ expect(keyEvent.charCode, 0); |
+ }); |
+ |
+ var subscription2 = streamPress.listen((keyEvent) { |
+ expect(keyEvent.keyCode, 23); |
+ expect(keyEvent.charCode, 63); |
+ }); |
+ |
+ var subscription3 = streamUp.listen((keyEvent) { |
+ expect(keyEvent.keyCode, isIn([16, 191])); |
+ expect(keyEvent.charCode, 0); |
+ }); |
+ |
+ 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(); |
}); |
} |