blob: 8fca79351d611c1cba8ecbb642b5b21ae97e9773 [file] [log] [blame]
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));
});
}