malwoden
Version:
   
136 lines • 5.57 kB
JavaScript
;
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