UNPKG

aframe-extras

Version:

Add-ons and examples for A-Frame VR.

57 lines (49 loc) 2.45 kB
const entityFactory = require('../helpers').entityFactory; const KeyboardEvent = window.KeyboardEvent; suite('keyboard-controls', () => { let el, keyboardControls; setup((done) => { el = entityFactory(); el.setAttribute('keyboard-controls', ''); el.addEventListener('loaded', () => { keyboardControls = el.components['keyboard-controls']; done(); }); }); suite('isVelocityActive', () => { test('not active by default', () => { expect(keyboardControls.isVelocityActive()).to.be.false; }); test('active when target key is pressed', () => { window.dispatchEvent(new KeyboardEvent('keydown', {code: 'KeyW'})); expect(keyboardControls.isVelocityActive()).to.be.true; window.dispatchEvent(new KeyboardEvent('keyup', {code: 'KeyW'})); expect(keyboardControls.isVelocityActive()).to.be.false; }); test('inactive when disabled', () => { el.setAttribute('keyboard-controls', {enabled: false}); window.dispatchEvent(new KeyboardEvent('keydown', {code: 'KeyW'})); expect(keyboardControls.isVelocityActive()).to.be.false; }); }); suite('getVelocityDelta', () => { test('updates position with WASD keys', () => { window.dispatchEvent(new KeyboardEvent('keydown', {code: 'KeyW'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: 0, y: 0, z: -1}); window.dispatchEvent(new KeyboardEvent('keydown', {code: 'KeyA'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: -1, y: 0, z: -1}); window.dispatchEvent(new KeyboardEvent('keyup', {code: 'KeyW'})); window.dispatchEvent(new KeyboardEvent('keyup', {code: 'KeyA'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: 0, y: 0, z: 0}); }); test('updates position with arrow keys', () => { window.dispatchEvent(new KeyboardEvent('keydown', {code: 'ArrowUp'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: 0, y: 0, z: -1}); window.dispatchEvent(new KeyboardEvent('keydown', {code: 'ArrowLeft'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: -1, y: 0, z: -1}); window.dispatchEvent(new KeyboardEvent('keyup', {code: 'ArrowUp'})); window.dispatchEvent(new KeyboardEvent('keyup', {code: 'ArrowLeft'})); expect(keyboardControls.getVelocityDelta()).to.shallowDeepEqual({x: 0, y: 0, z: 0}); }); }); });