A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
import { expect } from "chai"; |
|
import KeyQueue from '../../src/background/key-queue'; |
|
import * as actions from '../../src/shared/actions'; |
|
|
|
describe("keyQueue class", () => { |
|
const KEYMAP = [ |
|
{ keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }], |
|
action: [ actions.SCROLL_TOP ]}, |
|
{ keys: [{ code: KeyboardEvent.DOM_VK_J }], |
|
action: [ actions.SCROLL_DOWN ]}, |
|
] |
|
|
|
describe("#push", () => { |
|
it("returns matched action", () => { |
|
let queue = new KeyQueue(KEYMAP); |
|
queue.push({ code: KeyboardEvent.DOM_VK_G }); |
|
let action = queue.push({ code: KeyboardEvent.DOM_VK_G }); |
|
|
|
expect(action).to.deep.equal([ actions.SCROLL_TOP ]); |
|
}); |
|
|
|
it("returns null on no actions matched", () => { |
|
let queue = new KeyQueue(KEYMAP); |
|
queue.push({ code: KeyboardEvent.DOM_VK_G }); |
|
let action = queue.push({ code: KeyboardEvent.DOM_VK_X }); |
|
|
|
expect(action).to.be.null; |
|
}); |
|
}); |
|
|
|
describe("#queuedKeys", () => { |
|
it("queues keys on matched actions exist", () => { |
|
let queue = new KeyQueue(KEYMAP); |
|
queue.push({ code: KeyboardEvent.DOM_VK_G }); |
|
|
|
expect(queue.queuedKeys()).to.have.lengthOf(1); |
|
}); |
|
|
|
it("flushs keys on no actions matched", () => { |
|
let queue = new KeyQueue(KEYMAP); |
|
queue.push({ code: KeyboardEvent.DOM_VK_G }); |
|
queue.push({ code: KeyboardEvent.DOM_VK_Z }); |
|
|
|
expect(queue.queuedKeys()).to.be.empty; |
|
}); |
|
}); |
|
});
|
|
|