UNPKG

malwoden

Version:

![alt text](./coverage/badge-lines.svg) ![alt text](./coverage/badge-statements.svg) ![alt text](./coverage/badge-functions.svg) ![alt text](./coverage/badge-branches.svg)

136 lines 5.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var mouse_1 = require("./mouse"); var test_utils_spec_1 = require("./test-utils.spec"); describe("MouseHandler", function () { beforeEach(test_utils_spec_1.setupTestDom); it("Can create a new mouse handler", function () { var m = new mouse_1.MouseHandler(); }); it("Can get the position", function () { var m = new mouse_1.MouseHandler(); expect(m.getPos()).toEqual({ x: 0, y: 0 }); m["x"] = 5; m["y"] = 10; expect(m.getPos()).toEqual({ x: 5, y: 10 }); }); it("Will update on mouse movement", function () { var m = new mouse_1.MouseHandler(); m["onMouseUpdateEvent"]({ clientX: 5, clientY: 10 }); expect(m.getPos()).toEqual({ x: 5, y: 10 }); }); it("Can set/unset a mouse context", function () { var h = new mouse_1.MouseHandler(); var c = new mouse_1.MouseContext(); expect(h["context"]).toBeUndefined(); h.setContext(c); expect(h["context"]).toBe(c); h.clearContext(); expect(h["context"]).toBeUndefined(); }); it("Will call a context on events", function () { var left = 0; var right = 0; var h = new mouse_1.MouseHandler(); var c = new mouse_1.MouseContext() .onMouseUp(function () { return left++; }) .onMouseDown(function () { return right++; }); h.setContext(c); expect(left).toEqual(0); expect(right).toEqual(0); window.document.dispatchEvent(new MouseEvent("mouseup")); expect(left).toEqual(1); expect(right).toEqual(0); window.document.dispatchEvent(new MouseEvent("mousedown", { button: 2 })); expect(left).toEqual(1); expect(right).toEqual(1); }); it("Will not call a context if not registered", function () { var down = 0; var up = 0; var h = new mouse_1.MouseHandler(); var c = new mouse_1.MouseContext(); c.onMouseDown(function () { return down++; }); c.onMouseUp(function () { return up++; }); // Nothing will happen, no context expect(down).toEqual(0); expect(up).toEqual(0); window.document.dispatchEvent(new MouseEvent("mousedown")); window.document.dispatchEvent(new MouseEvent("mouseup")); expect(down).toEqual(0); expect(up).toEqual(0); // Register the context now h.setContext(c); window.document.dispatchEvent(new MouseEvent("mousedown")); window.document.dispatchEvent(new MouseEvent("mouseup")); expect(down).toEqual(1); expect(up).toEqual(1); }); it("Can clear callbacks on a context", function () { var c = new mouse_1.MouseContext(); var onDown = 0; var onUp = 0; c.onMouseDown(function () { return onDown++; }); c.onMouseUp(function () { return onUp++; }); expect(c["_onDown"]).toHaveLength(1); expect(c["_onUp"]).toHaveLength(1); c.clearMouseDown(); c.clearMouseUp(); expect(c["_onDown"]).toHaveLength(0); expect(c["_onUp"]).toHaveLength(0); }); it("Won't error if context doesn't have a callback", function () { var c = new mouse_1.MouseContext(); c.callOnMouseDown({ x: 0, y: 0, button: 0, type: "mousedown" }); c.callOnMouseDown({ x: 0, y: 0, button: 0, type: "mouseup" }); }); it("Can call callbacks directly", function () { var count = 0; var c = new mouse_1.MouseContext() .onMouseUp(function () { return (count = count + 1); }) .onMouseDown(function () { return (count = count - 1); }); c.callOnMouseUp({ x: 0, y: 0, button: 0, type: "mouseup" }); expect(count).toEqual(1); c.callOnMouseDown({ x: 0, y: 0, button: 0, type: "mousedown" }); expect(count).toEqual(0); }); it("Can tell if a mouse button is held down", function () { var h = new mouse_1.MouseHandler(); expect(h.isMouseDown()).toBeFalsy(); expect(h.isMouseDown(2)).toBeFalsy(); h["onMouseDownEvent"](new MouseEvent("mousedown", { button: 0 })); expect(h.isMouseDown()).toBeTruthy(); expect(h.isMouseDown(2)).toBeFalsy(); h["onMouseDownEvent"](new MouseEvent("mousedown", { button: 2 })); expect(h.isMouseDown()).toBeTruthy(); expect(h.isMouseDown(2)).toBeTruthy(); h["onMouseUpEvent"](new MouseEvent("mouseup", { button: 0 })); expect(h.isMouseDown()).toBeFalsy(); expect(h.isMouseDown(2)).toBeTruthy(); h["onMouseUpEvent"](new MouseEvent("mouseup", { button: 2 })); expect(h.isMouseDown()).toBeFalsy(); expect(h.isMouseDown(2)).toBeFalsy(); }); it("can clear callbacks", function () { var c = new mouse_1.MouseContext(); var f1 = function () { }; var f2 = function () { }; var f3 = function () { }; var f4 = function () { }; c.onMouseDown(f1); c.onMouseDown(f2); c.onMouseUp(f3); c.onMouseUp(f4); expect(c["_onDown"]).toEqual([f1, f2]); expect(c["_onUp"]).toEqual([f3, f4]); c.clearMouseDown(f1); c.clearMouseUp(f3); expect(c["_onDown"]).toEqual([f2]); expect(c["_onUp"]).toEqual([f4]); c.clearMouseDown(); c.clearMouseUp(); expect(c["_onDown"]).toEqual([]); expect(c["_onUp"]).toEqual([]); }); }); //# sourceMappingURL=mouse.spec.js.map