UNPKG

wonder.js

Version:
131 lines (127 loc) 14 kB
'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_option = require("bs-platform/lib/js/caml_option.js"); var Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js"); var GLBTool$Wonderjs = require("../../asset/tool/GLBTool.js"); var NodeTool$Wonderjs = require("../../../../tool/NodeTool.js"); var TestTool$Wonderjs = require("../../../../tool/TestTool.js"); var ScriptAPI$Wonderjs = require("../../../../../src/api/script/ScriptAPI.js"); var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js"); var ScriptTool$Wonderjs = require("../../../../tool/service/script/ScriptTool.js"); var SettingTool$Wonderjs = require("../../../../tool/service/setting/SettingTool.js"); var DirectorTool$Wonderjs = require("../../../../tool/core/DirectorTool.js"); var LoadDataTool$Wonderjs = require("../../../tool/asset/load/LoadDataTool.js"); var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js"); var RenderJobsTool$Wonderjs = require("../../../../tool/job/no_worker/loop/RenderJobsTool.js"); var InitScriptJobTool$Wonderjs = require("../../../../tool/job/no_worker/init/InitScriptJobTool.js"); var LoadStreamWDBTool$Wonderjs = require("../../../tool/asset/load/LoadStreamWDBTool.js"); var NoWorkerJobConfigTool$Wonderjs = require("../../../../tool/service/noWorkerJob/NoWorkerJobConfigTool.js"); var CreateStateMainService$Wonderjs = require("../../../../../src/service/state/main/state/CreateStateMainService.js"); Wonder_jest.describe("test init_script job", (function (param) { var sandbox = Sinon.getSandboxDefaultVal(/* () */0); var state = /* record */[/* contents */CreateStateMainService$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("shouldn't exec before load done", (function (param) { Wonder_jest.test("init_script job shouldn't exec all actived scripts' init event functions before load done", (function (param) { var match = ScriptTool$Wonderjs.createGameObject(state[0]); var initStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var state$1 = ScriptTool$Wonderjs.TestCaseWithOneEventFuncStub[/* buildScriptData */1](match[2], match[0], sandbox, Caml_option.some(initStub), undefined, undefined, /* () */0); var state$2 = LoadDataTool$Wonderjs.markCanExecScriptAllEventFunction(false, state$1); InitScriptJobTool$Wonderjs.exec(state$2); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(initStub)), 0); })); return Wonder_jest.describe("test load stream wdb", (function (param) { var boxTexturedWDBArrayBuffer = /* record */[/* contents */-1]; beforeAll((function () { boxTexturedWDBArrayBuffer[0] = NodeTool$Wonderjs.convertGLBToWDB("BoxTextured"); return /* () */0; })); beforeEach((function () { state[0] = RenderJobsTool$Wonderjs.initWithJobConfigAndBufferConfigWithoutBuildFakeDom(sandbox, NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, NoWorkerJobConfigTool$Wonderjs.buildNoWorkerInitPipelineConfigWithoutInitMain(/* () */0), "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"update_script\"\n }\n ]\n }\n ]\n ", NoWorkerJobConfigTool$Wonderjs.buildNoWorkerInitJobConfigWithoutInitMain(/* () */0), NoWorkerJobConfigTool$Wonderjs.buildNoWorkerLoopJobConfig(/* () */0), /* () */0), SettingTool$Wonderjs.buildBufferConfigStr(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0)); TestTool$Wonderjs.closeContractCheck(/* () */0); GLBTool$Wonderjs.prepare(sandbox[0]); state[0] = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$Wonderjs.buildFakeGl(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state[0]); return /* () */0; })); Wonder_jest.testPromise("should exec all actived scripts' init event functions when load done", undefined, (function (param) { var _prepare = function (sandbox, state) { var readStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var readStub$1 = Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(undefined, true, /* () */0), Sinon.onCall(1, Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(Caml_option.some(boxTexturedWDBArrayBuffer[0]), undefined, /* () */0), Sinon.onCall(0, readStub)))); return LoadStreamWDBTool$Wonderjs.prepareWithReadStub(sandbox, readStub$1, state); }; var match = _prepare(sandbox, state[0]); var handleBeforeStartLoop = match[2]; var match$1 = ScriptTool$Wonderjs.createGameObject(match[4]); var initStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var state$1 = ScriptTool$Wonderjs.TestCaseWithOneEventFuncStub[/* buildScriptData */1](match$1[2], match$1[0], sandbox, Caml_option.some(initStub), undefined, undefined, /* () */0); MainStateTool$Wonderjs.setState(state$1); var handleBeforeStartLoop$1 = function (state, rootGameObject) { return DirectorTool$Wonderjs.runWithDefaultTime(Curry._2(handleBeforeStartLoop, state, rootGameObject)); }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), handleBeforeStartLoop$1, match[3] ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(initStub)), 1)); })); })); return Wonder_jest.testPromise("should exec all actived scripts' init event functions before exec all actived scripts' update event functions when load done", undefined, (function (param) { var _prepare = function (sandbox, state) { var readStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var readStub$1 = Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(undefined, true, /* () */0), Sinon.onCall(1, Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(Caml_option.some(boxTexturedWDBArrayBuffer[0]), undefined, /* () */0), Sinon.onCall(0, readStub)))); return LoadStreamWDBTool$Wonderjs.prepareWithReadStub(sandbox, readStub$1, state); }; var match = _prepare(sandbox, state[0]); var handleBeforeStartLoop = match[2]; var match$1 = ScriptTool$Wonderjs.createGameObject(match[4]); var initStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var updateStub = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var state$1 = ScriptTool$Wonderjs.TestCaseWithOneEventFuncStub[/* buildScriptData */1](match$1[2], match$1[0], sandbox, Caml_option.some(initStub), Caml_option.some(updateStub), undefined, /* () */0); MainStateTool$Wonderjs.setState(state$1); var handleBeforeStartLoop$1 = function (state, rootGameObject) { return DirectorTool$Wonderjs.runWithDefaultTime(Curry._2(handleBeforeStartLoop, state, rootGameObject)); }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), handleBeforeStartLoop$1, match[3] ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = MainStateTool$Wonderjs.unsafeGetState(/* () */0); var state$1 = DirectorTool$Wonderjs.runWithDefaultTime(state); MainStateTool$Wonderjs.setState(state$1); return Promise.resolve(Sinon.toCalledBefore(Sinon.getCall(0, updateStub), Wonder_jest.Expect[/* expect */0](Sinon.getCall(0, initStub)))); })); })); })); })); return Wonder_jest.test("exec all actived scripts' init event functions", (function (param) { var match = ScriptTool$Wonderjs.createGameObject(state[0]); var script1 = match[2]; var match$1 = ScriptTool$Wonderjs.createGameObject(match[0]); var script2 = match$1[2]; var state$1 = ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* buildScriptData */11](script1, match$1[0], undefined, undefined, undefined, /* () */0); var state$2 = ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* buildScriptData */11](script2, state$1, undefined, undefined, undefined, /* () */0); var state$3 = ScriptAPI$Wonderjs.setScriptIsActive(script2, false, state$2); var state$4 = InitScriptJobTool$Wonderjs.exec(state$3); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* getAttributeFieldAValue */12](script1, state$4), ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* getAttributeFieldAValue */12](script2, state$4) ]), /* tuple */[ ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* getAttributeFieldAValueAfterExecInitEventFunc */15](/* () */0), ScriptTool$Wonderjs.TestCaseWithOneEventFuncAndOneAttribute[/* getAttributeFieldAValueBeforeExecInitEventFunc */14](/* () */0) ]); })); })); /* Not a pure module */