-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeyboard.test.js
58 lines (49 loc) · 1.71 KB
/
keyboard.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const every = require("lodash/every");
const values = require("lodash/values");
const negate = require("lodash/negate");
const identity = require("lodash/identity");
const c = require("../src/consts");
const keyboard = require("../src/keyboard");
describe("keyboard", () => {
beforeEach(() => {
keyboard.init();
});
it("every button should be initialized to false", () => {
expect(every(values(keyboard.getKeys()), negate(identity))).toEqual(true);
});
it("should call _onKeyDown on key pressed", () => {
const _onKeyDownSpy = jest.spyOn(keyboard, "_onKeyDown");
window.dispatchEvent(new KeyboardEvent("keydown"));
expect(_onKeyDownSpy).toHaveBeenCalledWith("");
});
it("should call _onKeyUp on key released", () => {
const _onKeyUpSpy = jest.spyOn(keyboard, "_onKeyUp");
window.dispatchEvent(new KeyboardEvent("keyup"));
expect(_onKeyUpSpy).toHaveBeenCalledWith("");
});
describe("setKey", () => {
it("should set the key to true", () => {
keyboard.setKey("1", true);
expect(keyboard.getKeys()["1"]).toEqual(true);
});
it("should set the key to false", () => {
keyboard.setKey("1", true);
keyboard.setKey("1", false);
expect(keyboard.getKeys()["1"]).toEqual(false);
});
});
Object.keys(c.keys).forEach(k => {
const v = c.keys[k];
describe(`Key ${k}`, () => {
it("pressed", () => {
window.dispatchEvent(new KeyboardEvent("keydown", { key: v }));
expect(keyboard.getKeys()[k]).toEqual(true);
});
it("released", () => {
keyboard.setKey(k, true);
window.dispatchEvent(new KeyboardEvent("keyup", { key: v }));
expect(keyboard.getKeys()[k]).toEqual(false);
});
});
});
});