Spaces:
Runtime error
Runtime error
| const test = require('tap').test; | |
| const Keyboard = require('../../src/io/keyboard'); | |
| const Runtime = require('../../src/engine/runtime'); | |
| test('spec', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| t.type(k, 'object'); | |
| t.type(k.postData, 'function'); | |
| t.type(k.getKeyIsDown, 'function'); | |
| t.end(); | |
| }); | |
| test('space key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: ' ', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, ['space']); | |
| t.strictEquals(k.getKeyIsDown('space'), true); | |
| t.strictEquals(k.getKeyIsDown('any'), true); | |
| t.end(); | |
| }); | |
| test('letter key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: 'a', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, ['A']); | |
| t.strictEquals(k.getKeyIsDown(65), true); | |
| t.strictEquals(k.getKeyIsDown('a'), true); | |
| t.strictEquals(k.getKeyIsDown('A'), true); | |
| t.strictEquals(k.getKeyIsDown('any'), true); | |
| t.end(); | |
| }); | |
| test('number key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: '1', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, ['1']); | |
| t.strictEquals(k.getKeyIsDown(49), true); | |
| t.strictEquals(k.getKeyIsDown('1'), true); | |
| t.strictEquals(k.getKeyIsDown('any'), true); | |
| t.end(); | |
| }); | |
| test('non-english key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: '日', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, ['日']); | |
| t.strictEquals(k.getKeyIsDown('日'), true); | |
| t.strictEquals(k.getKeyIsDown('any'), true); | |
| t.end(); | |
| }); | |
| /* TW: This test is disabled because we intentionally add support for modifier keys. | |
| test('ignore modifier key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: 'Shift', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, []); | |
| t.strictEquals(k.getKeyIsDown('any'), false); | |
| t.end(); | |
| }); | |
| */ | |
| test('keyup', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: 'ArrowLeft', | |
| isDown: true | |
| }); | |
| k.postData({ | |
| key: 'ArrowLeft', | |
| isDown: false | |
| }); | |
| t.strictDeepEquals(k._keysPressed, []); | |
| t.strictEquals(k.getKeyIsDown('left arrow'), false); | |
| t.strictEquals(k.getKeyIsDown('any'), false); | |
| t.end(); | |
| }); | |