import Keyboard, { SHORTKEY, normalize } from '../../../modules/keyboard'; describe('Keyboard', function() { describe('match', function() { it('no modifiers', function() { const binding = normalize({ key: 'a', }); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, }, binding, ), ).toBe(true); expect( Keyboard.match( { key: 'A', shiftKey: false, metaKey: false, ctrlKey: false, altKey: true, }, binding, ), ).toBe(false); }); it('simple modifier', function() { const binding = normalize({ key: 'a', altKey: true, }); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, }, binding, ), ).toBe(false); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: true, }, binding, ), ).toBe(true); }); it('optional modifier', function() { const binding = normalize({ key: 'a', altKey: null, }); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, }, binding, ), ).toBe(true); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: true, }, binding, ), ).toBe(true); }); it('shortkey modifier', function() { const binding = normalize({ key: 'a', shortKey: true, }); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, }, binding, ), ).toBe(false); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, [SHORTKEY]: true, }, binding, ), ).toBe(true); }); it('native shortkey modifier', function() { const binding = normalize({ key: 'a', [SHORTKEY]: true, }); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, }, binding, ), ).toBe(false); expect( Keyboard.match( { key: 'a', shiftKey: false, metaKey: false, ctrlKey: false, altKey: false, [SHORTKEY]: true, }, binding, ), ).toBe(true); }); }); });