import { expect } from "chai"; import KeyQueue from '../../src/background/key-queue'; describe("keyQueue class", () => { const KEYMAP = { 'gGG': [], 'gg': [ 'scroll.top' ], }; const g = 'g'.charCodeAt(0); const G = 'G'.charCodeAt(0); const x = 'x'.charCodeAt(0); describe("#push", () => { it("returns matched action", () => { let queue = new KeyQueue(KEYMAP); queue.push({ code: g }); let action = queue.push({ code: g }); expect(action).to.deep.equal([ 'scroll.top' ]); }); it("returns null on no actions matched", () => { let queue = new KeyQueue(KEYMAP); queue.push({ code: g }); let action = queue.push({ code: G }); expect(action).to.be.null; expect(queue.asKeymapChars()).to.be.empty; }); }); describe('#asKeymapChars', () => { let queue = new KeyQueue(KEYMAP); queue.push({ code: g }); queue.push({ code: x, ctrl: true }); queue.push({ code: G }); expect(queue.asKeymapChars()).to.equal('gG'); }); describe('#asCaretChars', () => { let queue = new KeyQueue(KEYMAP); queue.push({ code: g }); queue.push({ code: x, ctrl: true }); queue.push({ code: G }); expect(queue.asCaretChars()).to.equal('g^XG'); }); });