Index: test/codegen/lib/html/keyboard_event_test.dart |
diff --git a/test/codegen/lib/html/keyboard_event_test.dart b/test/codegen/lib/html/keyboard_event_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8fca79351d611c1cba8ecbb642b5b21ae97e9773 |
--- /dev/null |
+++ b/test/codegen/lib/html/keyboard_event_test.dart |
@@ -0,0 +1,95 @@ |
+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)); |
+ }); |
+} |
+ |
+ |