wonder.js
Version:
287 lines (283 loc) • 25.3 kB
JavaScript
;
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 Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js");
var TestTool$Wonderjs = require("../../../../../tool/TestTool.js");
var EventTool$Wonderjs = require("../../../../job/no_worker/tool/EventTool.js");
var GameObjectAPI$Wonderjs = require("../../../../../../src/api/GameObjectAPI.js");
var MainStateTool$Wonderjs = require("../../../../../tool/service/state/MainStateTool.js");
var DisposeJobTool$Wonderjs = require("../../../../../integration/no_worker/job/loop/tool/DisposeJobTool.js");
var GameObjectTool$Wonderjs = require("../../../../../tool/service/gameObject/GameObjectTool.js");
var MouseEventTool$Wonderjs = require("../../../../job/no_worker/tool/MouseEventTool.js");
var NoWorkerJobTool$Wonderjs = require("../../../../../tool/service/job/no_worker/NoWorkerJobTool.js");
var FlyCameraControllerAPI$Wonderjs = require("../../../../../../src/api/camera_controller/FlyCameraControllerAPI.js");
var FlyCameraControllerTool$Wonderjs = require("../../../../../tool/service/camera_controller/FlyCameraControllerTool.js");
var EventCameraControllerTool$Wonderjs = require("../../../../../tool/service/camera_controller/EventCameraControllerTool.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
Wonder_jest.describe("FlyCameraController", (function (param) {
var sandbox = Sinon.getSandboxDefaultVal(/* () */0);
var state = /* record */[/* contents */MainStateTool$Wonderjs.createState(/* () */0)];
beforeEach((function () {
sandbox[0] = Sinon$1.sandbox.create();
state[0] = TestTool$Wonderjs.init(sandbox, undefined, undefined, /* () */0);
return /* () */0;
}));
afterEach((function () {
return Curry._1(Sinon.restoreSandbox, sandbox[0]);
}));
Wonder_jest.describe("createFlyCameraController", (function (param) {
Wonder_jest.test("create a new camera contoller which is just index(int)", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](match[1]), 0);
}));
return Wonder_jest.describe("change state", (function (param) {
return Wonder_jest.test("state->index + 1", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var record = match[0][/* flyCameraControllerRecord */26];
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](record[/* index */0]), 1);
}));
}));
}));
Wonder_jest.describe("unsafeGetFlyCameraControllerGameObject", (function (param) {
return Wonder_jest.test("get cameraController's gameObject", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]);
var gameObject = match$1[1];
var state$1 = GameObjectAPI$Wonderjs.addGameObjectFlyCameraControllerComponent(gameObject, cameraController, match$1[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerAPI$Wonderjs.unsafeGetFlyCameraControllerGameObject(cameraController, state$1)), gameObject);
}));
}));
Wonder_jest.describe("bind/unbind FlyCameraController event", (function (param) {
var _prepareMouseEvent = function (sandbox) {
var state = EventCameraControllerTool$Wonderjs.prepareMouseEvent(sandbox);
var match = FlyCameraControllerTool$Wonderjs.createGameObject(state);
var cameraController = match[3][0];
var state$1 = NoWorkerJobTool$Wonderjs.execInitJobs(match[0]);
var eulerAngleDiff = /* record */[
/* diffX */1.45,
/* diffY */0
];
var translationDiff = /* tuple */[
0,
0,
2
];
var state$2 = FlyCameraControllerTool$Wonderjs.setTranslationDiff(cameraController, translationDiff, FlyCameraControllerTool$Wonderjs.setEulerAngleDiff(cameraController, eulerAngleDiff, FlyCameraControllerAPI$Wonderjs.setFlyCameraControllerRotateSpeed(cameraController, 2.5, state$1)));
return /* tuple */[
state$2,
cameraController,
eulerAngleDiff,
translationDiff
];
};
var _triggerEvent = function (state) {
var state$1 = MainStateTool$Wonderjs.setState(state);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$1), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerFirstMouseDragOverEvent(MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, 1, 2, undefined, undefined, undefined, undefined, /* () */0), state$1);
return EventTool$Wonderjs.restore(state$1);
};
Wonder_jest.describe("if unbind event, FlyCameraController event shouldn't work", (function (param) {
return Wonder_jest.test("test point drag event", (function (param) {
var match = _prepareMouseEvent(sandbox);
var cameraController = match[1];
var state = FlyCameraControllerAPI$Wonderjs.unbindFlyCameraControllerEvent(cameraController, match[0]);
var state$1 = _triggerEvent(state);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
FlyCameraControllerTool$Wonderjs.unsafeGetEulerAngleDiff(cameraController, state$1),
FlyCameraControllerTool$Wonderjs.unsafeGetTranslationDiff(cameraController, state$1)
]), /* tuple */[
match[2],
match[3]
]);
}));
}));
return Wonder_jest.describe("if bind event after unbind event, FlyCameraController event should work", (function (param) {
return Wonder_jest.test("test point drag event", (function (param) {
var match = _prepareMouseEvent(sandbox);
var cameraController = match[1];
var match$1 = MouseEventTool$Wonderjs.prepareForPointerLock(sandbox, match[0]);
var state = FlyCameraControllerAPI$Wonderjs.unbindFlyCameraControllerEvent(cameraController, match$1[0]);
var state$1 = FlyCameraControllerAPI$Wonderjs.bindFlyCameraControllerEvent(cameraController, state);
var state$2 = _triggerEvent(state$1);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* <> */6], Wonder_jest.Expect[/* expect */0](/* tuple */[
FlyCameraControllerTool$Wonderjs.unsafeGetEulerAngleDiff(cameraController, state$2),
FlyCameraControllerTool$Wonderjs.unsafeGetTranslationDiff(cameraController, state$2)
]), /* tuple */[
match[2],
match[3]
]);
}));
}));
}));
Wonder_jest.describe("dispose", (function (param) {
var _prepareTwo = function (state) {
var match = FlyCameraControllerTool$Wonderjs.createGameObject(state[0]);
var match$1 = FlyCameraControllerTool$Wonderjs.createGameObject(match[0]);
return /* tuple */[
match$1[0],
match[1],
match[3][0],
match$1[1],
match$1[3][0]
];
};
Wonder_jest.describe("dispose component", (function (param) {
return Wonder_jest.describe("dispose data", (function (param) {
Wonder_jest.test("remove from eulerAngleDiffMap, translationDiffMap, moveSpeedMap, rotateSpeedMap, wheelSpeedMap, gameObjectMap, directionArrayMap", (function (param) {
var match = _prepareTwo(state);
var cameraController1 = match[2];
var state$1 = GameObjectTool$Wonderjs.disposeGameObjectFlyCameraControllerComponent(match[1], cameraController1, match[0]);
var match$1 = state$1[/* flyCameraControllerRecord */26];
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* moveSpeedMap */7]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* eulerAngleDiffMap */10]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* translationDiffMap */11]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* wheelSpeedMap */8]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* gameObjectMap */12]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* directionArrayMap */14])
]), /* tuple */[
false,
false,
false,
false,
false,
false
]);
}));
return Wonder_jest.describe("remove from eventHandleFunc map", (function (param) {
return Wonder_jest.test("remove from map", (function (param) {
var match = FlyCameraControllerTool$Wonderjs.createGameObject(state[0]);
var cameraController1 = match[3][0];
var value = /* record */[/* contents */0];
var pointDragStartHandleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return /* tuple */[
state,
$$event
];
};
var pointDragDropHandleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return /* tuple */[
state,
$$event
];
};
var pointDragOverHandleFunc = function ($$event, state) {
value[0] = value[0] + 1 | 0;
return /* tuple */[
state,
$$event
];
};
var pointScaleHandleFunc = function ($$event, state) {
value[0] = value[0] + 2 | 0;
return /* tuple */[
state,
$$event
];
};
var keydownHandleFunc = function ($$event, state) {
value[0] = value[0] + 3 | 0;
return state;
};
var keyupHandleFunc = function ($$event, state) {
value[0] = value[0] + 3 | 0;
return state;
};
var state$1 = FlyCameraControllerTool$Wonderjs.addKeyupEventHandleFunc(cameraController1, keyupHandleFunc, FlyCameraControllerTool$Wonderjs.addKeydownEventHandleFunc(cameraController1, keydownHandleFunc, FlyCameraControllerTool$Wonderjs.addPointScaleEventHandleFunc(cameraController1, pointScaleHandleFunc, FlyCameraControllerTool$Wonderjs.addPointDragOverEventHandleFunc(cameraController1, pointDragOverHandleFunc, FlyCameraControllerTool$Wonderjs.addPointDragDropEventHandleFunc(cameraController1, pointDragDropHandleFunc, FlyCameraControllerTool$Wonderjs.addPointDragStartEventHandleFunc(cameraController1, pointDragStartHandleFunc, match[0]))))));
var state$2 = GameObjectTool$Wonderjs.disposeGameObjectFlyCameraControllerComponent(match[1], cameraController1, state$1);
var match$1 = state$2[/* flyCameraControllerRecord */26];
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* pointDragStartEventHandleFuncListMap */1]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* pointDragDropEventHandleFuncListMap */2]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* pointDragOverEventHandleFuncListMap */3]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* pointScaleEventHandleFuncListMap */4]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* keydownEventHandleFuncListMap */5]),
MutableSparseMapService$WonderCommonlib.has(cameraController1, match$1[/* keyupEventHandleFuncListMap */6])
]), /* tuple */[
false,
false,
false,
false,
false,
false
]);
}));
}));
}));
}));
return Wonder_jest.describe("dispose component's gameObject", (function (param) {
return Wonder_jest.test("should dispose component", (function (param) {
var match = _prepareTwo(state);
var state$1 = DisposeJobTool$Wonderjs.disposeAndReallocate(GameObjectTool$Wonderjs.disposeGameObject(match[1], match[0]));
var match$1 = state$1[/* flyCameraControllerRecord */26];
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](MutableSparseMapService$WonderCommonlib.has(match[2], match$1[/* moveSpeedMap */7])), false);
}));
}));
}));
Wonder_jest.describe("unsafeGetWheelSpeed", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var state$1 = FlyCameraControllerAPI$Wonderjs.setFlyCameraControllerWheelSpeed(cameraController, 65, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerAPI$Wonderjs.unsafeGetFlyCameraControllerWheelSpeed(cameraController, state$1)), 65);
}));
}));
Wonder_jest.describe("unsafeGetRotateSpeed", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var state$1 = FlyCameraControllerAPI$Wonderjs.setFlyCameraControllerRotateSpeed(cameraController, 65, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerAPI$Wonderjs.unsafeGetFlyCameraControllerRotateSpeed(cameraController, state$1)), 65);
}));
}));
Wonder_jest.describe("unsafeGetMoveSpeed", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var state$1 = FlyCameraControllerAPI$Wonderjs.setFlyCameraControllerMoveSpeed(cameraController, 65, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerAPI$Wonderjs.unsafeGetFlyCameraControllerMoveSpeed(cameraController, state$1)), 65);
}));
}));
Wonder_jest.describe("unsafeGetEulerAngleDiff", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var value = /* record */[
/* diffX */2.0,
/* diffY */1.0
];
var state$1 = FlyCameraControllerTool$Wonderjs.setEulerAngleDiff(cameraController, value, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerTool$Wonderjs.unsafeGetEulerAngleDiff(cameraController, state$1)), value);
}));
}));
Wonder_jest.describe("unsafeGetDirectionArray", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var directionArray = /* array */[
/* Left */0,
/* Up */2
];
var state$1 = FlyCameraControllerAPI$Wonderjs.setFlyCameraControllerDirectionArray(cameraController, directionArray, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerAPI$Wonderjs.unsafeGetFlyCameraControllerDirectionArray(cameraController, state$1)), directionArray);
}));
}));
return Wonder_jest.describe("unsafeGetTranslationDiff", (function (param) {
return Wonder_jest.test("test", (function (param) {
var match = FlyCameraControllerAPI$Wonderjs.createFlyCameraController(state[0]);
var cameraController = match[1];
var value = /* tuple */[
1.0,
2.0,
3.0
];
var state$1 = FlyCameraControllerTool$Wonderjs.setTranslationDiff(cameraController, value, match[0]);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](FlyCameraControllerTool$Wonderjs.unsafeGetTranslationDiff(cameraController, state$1)), value);
}));
}));
}));
/* Not a pure module */