wonder.js
Version:
459 lines (457 loc) • 175 kB
JavaScript
'use strict';
var Curry = require("bs-platform/lib/js/curry.js");
var Sinon = require("wonder-bs-sinon/lib/js/src/sinon.js");
var Sinon$1 = require("sinon");
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js");
var EventTool$Wonderjs = require("./tool/EventTool.js");
var ArrayService$Wonderjs = require("../../../../src/service/atom/ArrayService.js");
var MainStateTool$Wonderjs = require("../../../tool/service/state/MainStateTool.js");
var OptionService$Wonderjs = require("../../../../src/service/atom/OptionService.js");
var ManageEventAPI$Wonderjs = require("../../../../src/api/event/ManageEventAPI.js");
var MouseEventTool$Wonderjs = require("./tool/MouseEventTool.js");
var TouchEventTool$Wonderjs = require("./tool/TouchEventTool.js");
var CustomEventTool$Wonderjs = require("./tool/CustomEventTool.js");
var NoWorkerJobTool$Wonderjs = require("../../../tool/service/job/no_worker/NoWorkerJobTool.js");
var BrowserDetectTool$Wonderjs = require("../../../tool/service/browserDetect/BrowserDetectTool.js");
var KeyboardEventTool$Wonderjs = require("./tool/KeyboardEventTool.js");
var EventCameraControllerTool$Wonderjs = require("../../../tool/service/camera_controller/EventCameraControllerTool.js");
Wonder_jest.describe("InitEventJob", (function (param) {
var sandbox = Sinon.getSandboxDefaultVal(/* () */0);
MainStateTool$Wonderjs.createState(/* () */0);
beforeEach((function () {
sandbox[0] = Sinon$1.sandbox.create();
return /* () */0;
}));
afterEach((function () {
return Curry._1(Sinon.restoreSandbox, sandbox[0]);
}));
Wonder_jest.describe("bind dom event", (function (param) {
Wonder_jest.describe("bind mouse event", (function (param) {
var _testMouseEvent = function (mouseEventName, mouseDomEventName) {
Wonder_jest.test("test bind", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(mouseEventName, 0, (function ($$event, state) {
value[0] = 1;
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("" + (String(mouseDomEventName) + ""), EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 1);
}));
return Wonder_jest.describe("test unbind by handleFunc", (function (param) {
Wonder_jest.test("test", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var handleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
};
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(mouseEventName, 0, handleFunc, state$1);
var state$3 = ManageEventAPI$Wonderjs.offMouseEventByHandleFunc(mouseEventName, handleFunc, state$2);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("" + (String(mouseDomEventName) + ""), EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 0);
}));
return Wonder_jest.test("test unbind one handleFunc of the eventName", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var handleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
};
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(mouseEventName, 0, handleFunc, state$1);
var state$3 = ManageEventAPI$Wonderjs.onMouseEvent(mouseEventName, 0, (function ($$event, state) {
value[0] = value[0] + 10 | 0;
return state;
}), state$2);
var state$4 = ManageEventAPI$Wonderjs.offMouseEventByHandleFunc(mouseEventName, handleFunc, state$3);
var state$5 = MainStateTool$Wonderjs.setState(state$4);
EventTool$Wonderjs.triggerDomEvent("" + (String(mouseDomEventName) + ""), EventTool$Wonderjs.getPointEventBindedDom(state$5), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$5);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 10);
}));
}));
};
Wonder_jest.describe("bind contextmenu event", (function (param) {
return Wonder_jest.test("preventDefault", (function (param) {
var state = EventCameraControllerTool$Wonderjs.prepareMouseEvent(sandbox);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var preventDefaultFunc = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var stopPropagationFunc = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var state$2 = MainStateTool$Wonderjs.setState(state$1);
EventTool$Wonderjs.triggerDomEvent("contextmenu", EventTool$Wonderjs.getBody(state$2), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, preventDefaultFunc, stopPropagationFunc, /* () */0));
EventTool$Wonderjs.restore(state$2);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
Sinon.getCallCount(preventDefaultFunc),
Sinon.getCallCount(stopPropagationFunc)
]), /* tuple */[
1,
1
]);
}));
}));
Wonder_jest.describe("bind mousedown event", (function (param) {
_testMouseEvent(/* MouseDown */2, "mousedown");
Wonder_jest.describe("test mouse event", (function (param) {
Wonder_jest.describe("test locationInView", (function (param) {
Wonder_jest.test("test view has no offsetParent", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, 1, 2, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
var match = $$event[/* locationInView */2];
valueX[0] = match[0];
valueY[0] = match[1];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(10, 20, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
valueX[0],
valueY[0]
]), /* tuple */[
9,
18
]);
}));
return Wonder_jest.test("test view has offsetParent", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, 1, 2, {
offsetLeft: 11,
offsetTop: 12,
offsetParent: undefined
}, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
var match = $$event[/* locationInView */2];
valueX[0] = match[0];
valueY[0] = match[1];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(10, 20, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
valueX[0],
valueY[0]
]), /* tuple */[
-2,
6
]);
}));
}));
Wonder_jest.describe("test button", (function (param) {
var _test = function (eventButton, targetButton) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var button = /* record */[/* contents : Right */2];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
button[0] = $$event[/* button */3];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, eventButton, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](button[0]), targetButton);
};
Wonder_jest.test("test NoButton", (function (param) {
return _test(0, /* NoButton */0);
}));
Wonder_jest.test("test Left", (function (param) {
return _test(1, /* Left */1);
}));
Wonder_jest.test("test Center", (function (param) {
return _test(2, /* Center */3);
}));
return Wonder_jest.test("test Right", (function (param) {
return _test(3, /* Right */2);
}));
}));
Wonder_jest.describe("test movementDelta", (function (param) {
Wonder_jest.describe("if is pointer locked", (function (param) {
return Wonder_jest.test("get data from event.movementX/movementY", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
MouseEventTool$Wonderjs.setPointerLocked();
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
var match = $$event[/* movementDelta */5];
valueX[0] = match[0];
valueY[0] = match[1];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, 1, 2, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
valueX[0],
valueY[0]
]), /* tuple */[
1,
2
]);
}));
}));
return Wonder_jest.describe("else, compute", (function (param) {
var _test = function (param, param$1, param$2) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
MouseEventTool$Wonderjs.setNotPointerLocked();
var state$1 = MouseEventTool$Wonderjs.setLastXY(param[0], param[1], state);
var state$2 = NoWorkerJobTool$Wonderjs.execInitJobs(state$1);
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$3 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
var match = $$event[/* movementDelta */5];
valueX[0] = match[0];
valueY[0] = match[1];
return state;
}), state$2);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(param$1[0], param$1[1], undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
valueX[0],
valueY[0]
]), /* tuple */[
param$2[0],
param$2[1]
]);
};
Wonder_jest.test("test has no lastX, lastY", (function (param) {
return _test(/* tuple */[
undefined,
undefined
], /* tuple */[
0,
0
], /* tuple */[
0,
0
]);
}));
return Wonder_jest.test("test has lastX, lastY", (function (param) {
return _test(/* tuple */[
1,
2
], /* tuple */[
10,
11
], /* tuple */[
9,
9
]);
}));
}));
}));
Wonder_jest.describe("test wheel", (function (param) {
var _test = function (mouseEvent, targetWheel) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var wheel = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
wheel[0] = $$event[/* wheel */4];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), mouseEvent);
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](wheel[0]), targetWheel);
};
Wonder_jest.describe("if event.detail exist", (function (param) {
Wonder_jest.test("if event.detail !== 0, use it", (function (param) {
return _test(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, 2, undefined, undefined, undefined, /* () */0), -2);
}));
return Wonder_jest.test("else, use event.wheelDelta", (function (param) {
return _test(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, 0, 120, undefined, undefined, /* () */0), 1);
}));
}));
Wonder_jest.test("else, use event.wheelDelta", (function (param) {
return _test(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, Caml_option.some(undefined), 120, undefined, undefined, /* () */0), 1);
}));
return Wonder_jest.test("else, return 0", (function (param) {
return _test(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, Caml_option.some(undefined), Caml_option.some(undefined), undefined, undefined, /* () */0), 0);
}));
}));
return Wonder_jest.describe("test other data", (function (param) {
return Wonder_jest.test("test name, location", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var name = /* record */[/* contents : MouseUp */3];
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
var match = $$event[/* location */1];
valueX[0] = match[0];
valueY[0] = match[1];
name[0] = $$event[/* name */0];
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(10, 20, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
name[0],
valueX[0],
valueY[0]
]), /* tuple */[
/* MouseDown */2,
10,
20
]);
}));
}));
}));
Wonder_jest.describe("test priority", (function (param) {
return Wonder_jest.test("the higher priority handleFunc is executed first", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */2];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 0, (function ($$event, state) {
value[0] = value[0] - 2 | 0;
return state;
}), state$1);
var state$3 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDown */2, 1, (function ($$event, state) {
value[0] = (value[0] << 1);
return state;
}), state$2);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 2);
}));
}));
return Wonder_jest.test("if browser is unknown, fatal", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, BrowserDetectTool$Wonderjs.setUnknown, /* () */0);
return Wonder_jest.Expect[/* toThrowMessage */21]("unknown browser", Wonder_jest.Expect[/* expect */0]((function (param) {
NoWorkerJobTool$Wonderjs.execInitJobs(state);
return /* () */0;
})));
}));
}));
Wonder_jest.describe("bind mouseup event", (function (param) {
return _testMouseEvent(/* MouseUp */3, "mouseup");
}));
Wonder_jest.describe("bind click event", (function (param) {
return _testMouseEvent(/* Click */1, "click");
}));
Wonder_jest.describe("bind mousewheel event", (function (param) {
return _testMouseEvent(/* MouseWheel */5, "mousewheel");
}));
Wonder_jest.describe("bind mousemove event", (function (param) {
_testMouseEvent(/* MouseMove */4, "mousemove");
return Wonder_jest.describe("test mouse event", (function (param) {
return Wonder_jest.describe("test movementDelta", (function (param) {
return Wonder_jest.test("set lastX, lastY after handle", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
MouseEventTool$Wonderjs.setNotPointerLocked();
var state$1 = MouseEventTool$Wonderjs.setLastXY(undefined, undefined, state);
var state$2 = NoWorkerJobTool$Wonderjs.execInitJobs(state$1);
var valueX = /* record */[/* contents */0];
var valueY = /* record */[/* contents */0];
var state$3 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseMove */4, 0, (function ($$event, state) {
var match = $$event[/* movementDelta */5];
valueX[0] = valueX[0] + match[0] | 0;
valueY[0] = valueY[0] + match[1] | 0;
return state;
}), state$2);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(10, 20, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(30, 50, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
valueX[0],
valueY[0]
]), /* tuple */[
20,
30
]);
}));
}));
}));
}));
return Wonder_jest.describe("bind mousedrag event", (function (param) {
Wonder_jest.test("trigger mousedragstart event when mousedown", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDragStart */6, 0, (function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 1);
}));
Wonder_jest.test("trigger mousedragover event when mousemove after mousedown", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDragOver */7, 0, (function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerFirstMouseDragOverEvent(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$3);
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 2);
}));
Wonder_jest.test("trigger mousedragdrop event when mouseup", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDragDrop */8, 0, (function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
}), state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mouseup", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 1);
}));
Wonder_jest.describe("test unbind by handleFunc", (function (param) {
return Wonder_jest.test("test", (function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var value = /* record */[/* contents */0];
var handleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return state;
};
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDragOver */7, 0, handleFunc, state$1);
var state$3 = ManageEventAPI$Wonderjs.offMouseEventByHandleFunc(/* MouseDragOver */7, handleFunc, state$2);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](value[0]), 0);
}));
}));
Wonder_jest.describe("test movement", (function (param) {
var _prepare = function (param) {
var state = MouseEventTool$Wonderjs.prepare(sandbox, undefined, undefined, undefined, undefined, /* () */0);
MouseEventTool$Wonderjs.setNotPointerLocked();
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(state);
var movementX = /* record */[/* contents */0];
var movementY = /* record */[/* contents */0];
var state$2 = ManageEventAPI$Wonderjs.onMouseEvent(/* MouseDragOver */7, 0, (function ($$event, state) {
var match = $$event[/* movementDelta */5];
movementX[0] = match[0];
movementY[0] = match