Spaces:
Runtime error
Runtime error
| const test = require('tap').test; | |
| const Keyboard = require('../../src/io/keyboard'); | |
| const Runtime = require('../../src/engine/runtime'); | |
| test('extended spec', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| t.type(k.getLastKeyPressed, 'function'); | |
| t.end(); | |
| }); | |
| test('extended key support', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: 'Backspace', | |
| isDown: true | |
| }); | |
| t.strictDeepEquals(k._keysPressed, ['backspace']); | |
| t.strictEqual(k.getKeyIsDown('backspace'), true); | |
| t.end(); | |
| }); | |
| test('last key pressed', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| t.strictEqual(k.getLastKeyPressed(), ''); | |
| k.postData({ | |
| key: 'a', | |
| isDown: true | |
| }); | |
| t.strictEqual(k.getLastKeyPressed(), 'a'); | |
| k.postData({ | |
| key: 'b', | |
| isDown: true | |
| }); | |
| t.strictEqual(k.getLastKeyPressed(), 'b'); | |
| t.end(); | |
| }); | |
| test('holding shift and key, releasing shift, then releasing key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| // Press Shift+2 to produce @ | |
| k.postData({ | |
| key: '@', | |
| isDown: true, | |
| keyCode: 50 | |
| }); | |
| t.equal(k.getKeyIsDown('2'), false); | |
| t.equal(k.getKeyIsDown('@'), true); | |
| t.equal(k.getKeyIsDown('any'), true); | |
| // Release shift, then release 2 | |
| k.postData({ | |
| key: 'Shift', | |
| isDown: false, | |
| keyCode: 16 | |
| }); | |
| k.postData({ | |
| key: '2', | |
| isDown: false, | |
| keyCode: 50 | |
| }); | |
| t.equal(k.getKeyIsDown('@'), false); | |
| t.equal(k.getKeyIsDown('2'), false); | |
| t.equal(k.getKeyIsDown('any'), false); | |
| t.end(); | |
| }); | |
| test('holding shift and key, releasing shift, waiting, then releasing key', t => { | |
| const rt = new Runtime(); | |
| const k = new Keyboard(rt); | |
| k.postData({ | |
| key: '@', | |
| isDown: true, | |
| keyCode: 50 | |
| }); | |
| t.equal(k.getKeyIsDown('2'), false); | |
| t.equal(k.getKeyIsDown('@'), true); | |
| t.equal(k.getKeyIsDown('any'), true); | |
| k.postData({ | |
| key: 'Shift', | |
| isDown: false, | |
| keyCode: 16 | |
| }); | |
| // But 2 is still being held, so it will send a press event | |
| k.postData({ | |
| key: '2', | |
| isDown: true, | |
| keyCode: 50 | |
| }); | |
| t.equal(k.getKeyIsDown('@'), false); | |
| t.equal(k.getKeyIsDown('2'), true); | |
| t.equal(k.getKeyIsDown('any'), true); | |
| // And now we release 2 | |
| k.postData({ | |
| key: '2', | |
| isDown: false, | |
| keyCode: 50 | |
| }); | |
| t.equal(k.getKeyIsDown('@'), false); | |
| t.equal(k.getKeyIsDown('2'), false); | |
| t.equal(k.getKeyIsDown('any'), false); | |
| t.end(); | |
| }); | |