aboutsummaryrefslogtreecommitdiff
path: root/test/content/InputDriver.test.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-10-07 12:54:32 +0000
committerGitHub <noreply@github.com>2019-10-07 12:54:32 +0000
commit8eddcc1785a85bbe74be254d1055ebe5125dad10 (patch)
treef3f51320d12a90a1b421ed8b1f811c576996ea8e /test/content/InputDriver.test.ts
parent7fc2bb615f530fc6adfade54b9553568f5d50ceb (diff)
parentb77a4734985722e96066e713f3b1b9e81a6e1811 (diff)
Merge pull request #654 from ueokande/settings-as-a-class
Refactor settings on shared logics
Diffstat (limited to 'test/content/InputDriver.test.ts')
-rw-r--r--test/content/InputDriver.test.ts69
1 files changed, 58 insertions, 11 deletions
diff --git a/test/content/InputDriver.test.ts b/test/content/InputDriver.test.ts
index b9f2c28..441d107 100644
--- a/test/content/InputDriver.test.ts
+++ b/test/content/InputDriver.test.ts
@@ -1,6 +1,6 @@
-import InputDriver from '../../src/content/InputDriver';
+import InputDriver, {keyFromKeyboardEvent} from '../../src/content/InputDriver';
import { expect } from 'chai';
-import Key from '../../src/content/domains/Key';
+import Key from '../../src/shared/settings/Key';
describe('InputDriver', () => {
let target: HTMLElement;
@@ -21,10 +21,10 @@ describe('InputDriver', () => {
it('register callbacks', (done) => {
driver.onKey((key: Key): boolean => {
expect(key.key).to.equal('a');
- expect(key.ctrlKey).to.be.true;
- expect(key.shiftKey).to.be.false;
- expect(key.altKey).to.be.false;
- expect(key.metaKey).to.be.false;
+ expect(key.ctrl).to.be.true;
+ expect(key.shift).to.be.false;
+ expect(key.alt).to.be.false;
+ expect(key.meta).to.be.false;
done();
return true;
});
@@ -68,15 +68,15 @@ describe('InputDriver', () => {
it('propagates and stop handler chain', () => {
let a = 0, b = 0, c = 0;
- driver.onKey((key: Key): boolean => {
+ driver.onKey((_key: Key): boolean => {
a++;
return false;
});
- driver.onKey((key: Key): boolean => {
+ driver.onKey((_key: Key): boolean => {
b++;
return true;
});
- driver.onKey((key: Key): boolean => {
+ driver.onKey((_key: Key): boolean => {
c++;
return true;
});
@@ -89,7 +89,7 @@ describe('InputDriver', () => {
})
it('does not invoke only meta keys', () => {
- driver.onKey((key: Key): boolean=> {
+ driver.onKey((_key: Key): boolean=> {
expect.fail();
return false;
});
@@ -115,7 +115,7 @@ describe('InputDriver', () => {
it('ignores events from contenteditable elements', () => {
let div = window.document.createElement('div');
let driver = new InputDriver(div);
- driver.onKey((key: Key): boolean => {
+ driver.onKey((_key: Key): boolean => {
expect.fail();
return false;
});
@@ -127,3 +127,50 @@ describe('InputDriver', () => {
div.dispatchEvent(new KeyboardEvent('keydown', { key: 'x' }));
});
});
+
+describe("#keyFromKeyboardEvent", () => {
+ it('returns from keyboard input Ctrl+X', () => {
+ let k = keyFromKeyboardEvent(new KeyboardEvent('keydown', {
+ key: 'x', shiftKey: false, ctrlKey: true, altKey: false, metaKey: true,
+ }));
+ expect(k.key).to.equal('x');
+ expect(k.shift).to.be.false;
+ expect(k.ctrl).to.be.true;
+ expect(k.alt).to.be.false;
+ expect(k.meta).to.be.true;
+ });
+
+ it('returns from keyboard input Shift+Esc', () => {
+ let k = keyFromKeyboardEvent(new KeyboardEvent('keydown', {
+ key: 'Escape', shiftKey: true, ctrlKey: false, altKey: false, metaKey: true
+ }));
+ expect(k.key).to.equal('Esc');
+ expect(k.shift).to.be.true;
+ expect(k.ctrl).to.be.false;
+ expect(k.alt).to.be.false;
+ expect(k.meta).to.be.true;
+ });
+
+ it('returns from keyboard input Ctrl+$', () => {
+ // $ required shift pressing on most keyboards
+ let k = keyFromKeyboardEvent(new KeyboardEvent('keydown', {
+ key: '$', shiftKey: true, ctrlKey: true, altKey: false, metaKey: false
+ }));
+ expect(k.key).to.equal('$');
+ expect(k.shift).to.be.false;
+ expect(k.ctrl).to.be.true;
+ expect(k.alt).to.be.false;
+ expect(k.meta).to.be.false;
+ });
+
+ it('returns from keyboard input Crtl+Space', () => {
+ let k = keyFromKeyboardEvent(new KeyboardEvent('keydown', {
+ key: ' ', shiftKey: false, ctrlKey: true, altKey: false, metaKey: false
+ }));
+ expect(k.key).to.equal('Space');
+ expect(k.shift).to.be.false;
+ expect(k.ctrl).to.be.true;
+ expect(k.alt).to.be.false;
+ expect(k.meta).to.be.false;
+ });
+});