UNPKG

wonder.js

Version:
451 lines (447 loc) 172 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_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 GLBTool$Wonderjs = require("../tool/GLBTool.js"); var WDBTool$Wonderjs = require("../tool/WDBTool.js"); var GLTFTool$Wonderjs = require("../tool/GLTFTool.js"); var NodeTool$Wonderjs = require("../../../../tool/NodeTool.js"); var SceneAPI$Wonderjs = require("../../../../../src/api/SceneAPI.js"); var StateAPI$Wonderjs = require("../../../../../src/api/StateAPI.js"); var TestTool$Wonderjs = require("../../../../tool/TestTool.js"); var ArrayTool$Wonderjs = require("../../../../tool/service/atom/ArrayTool.js"); var SceneTool$Wonderjs = require("../../../../tool/service/scene/SceneTool.js"); var CameraTool$Wonderjs = require("../../../../tool/service/camera/CameraTool.js"); var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js"); var SkyboxTool$Wonderjs = require("../../job/tool/SkyboxTool.js"); var GeometryAPI$Wonderjs = require("../../../../../src/api/geometry/GeometryAPI.js"); var PromiseTool$Wonderjs = require("../../../tool/PromiseTool.js"); var SettingTool$Wonderjs = require("../../../../tool/service/setting/SettingTool.js"); var ArrayService$Wonderjs = require("../../../../../src/service/atom/ArrayService.js"); var DirectorTool$Wonderjs = require("../../../../tool/core/DirectorTool.js"); var TransformAPI$Wonderjs = require("../../../../../src/api/TransformAPI.js"); var ExecIMGUITool$Wonderjs = require("../../../../tool/service/imgui/ExecIMGUITool.js"); var GameObjectAPI$Wonderjs = require("../../../../../src/api/GameObjectAPI.js"); var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js"); var ConvertGLBTool$Wonderjs = require("../tool/ConvertGLBTool.js"); var GameObjectTool$Wonderjs = require("../../../../tool/service/gameObject/GameObjectTool.js"); var RenderJobsTool$Wonderjs = require("../../../../tool/job/no_worker/loop/RenderJobsTool.js"); var ConvertGLBSystem$Wonderjs = require("../../../../../src/asset/converter/ConvertGLBSystem.js"); var GLSLLocationTool$Wonderjs = require("../../../../tool/service/location/GLSLLocationTool.js"); var LoadStreamWDBTool$Wonderjs = require("../../../tool/asset/load/LoadStreamWDBTool.js"); var LoopRenderJobTool$Wonderjs = require("../../../../tool/job/no_worker/loop/LoopRenderJobTool.js"); var CubemapTextureTool$Wonderjs = require("../../../../tool/service/texture/CubemapTextureTool.js"); var DirectionLightTool$Wonderjs = require("../../../../tool/service/light/DirectionLightTool.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var AssembleWDBSystemTool$Wonderjs = require("../tool/AssembleWDBSystemTool.js"); var BasicSourceTextureTool$Wonderjs = require("../../../../tool/service/texture/BasicSourceTextureTool.js"); var MutableHashMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableHashMapService.js"); Wonder_jest.describe("load stream wdb", (function (param) { var boxTexturedWDBArrayBuffer = /* record */[/* contents */-1]; var cesiumMilkTruckWDBArrayBuffer = /* record */[/* contents */-1]; var alphaBlendModeTestWDBArrayBuffer = /* record */[/* contents */-1]; var stoveWDBArrayBuffer = /* record */[/* contents */-1]; var skyboxWDBArrayBuffer = /* record */[/* contents */-1]; var sandbox = Sinon.getSandboxDefaultVal(/* () */0); var state = /* record */[/* contents */MainStateTool$Wonderjs.createState(/* () */0)]; var _buildFakeBlob = function (){ var Blob = function(arrayBufferArr, param){ if( typeof window.blobData_wonder_forTest === "undefined"){ window.blobData_wonder_forTest = [ [arrayBufferArr[0], param] ]; } else{ window.blobData_wonder_forTest.push( [arrayBufferArr[0], param] ); } }; window.Blob = Blob; }; var _getBlobData = function (){ return window.blobData_wonder_forTest; }; var _clearBlobData = function (){ delete window.blobData_wonder_forTest; }; beforeAll((function () { boxTexturedWDBArrayBuffer[0] = NodeTool$Wonderjs.convertGLBToWDB("BoxTextured"); cesiumMilkTruckWDBArrayBuffer[0] = NodeTool$Wonderjs.convertGLBToWDB("CesiumMilkTruck"); alphaBlendModeTestWDBArrayBuffer[0] = NodeTool$Wonderjs.convertGLBToWDB("AlphaBlendModeTest"); stoveWDBArrayBuffer[0] = NodeTool$Wonderjs.convertGLBToWDB("SuperLowPolyStove"); return /* () */0; })); beforeEach((function () { sandbox[0] = Sinon$1.sandbox.create(); state[0] = RenderJobsTool$Wonderjs.initWithJobConfigAndBufferConfig(sandbox, LoopRenderJobTool$Wonderjs.buildNoWorkerJobConfig(/* () */0), SettingTool$Wonderjs.buildBufferConfigStr(100000, 100, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0)); _clearBlobData(); _buildFakeBlob(); return TestTool$Wonderjs.closeContractCheck(/* () */0); })); afterEach((function () { return Curry._1(Sinon.restoreSandbox, sandbox[0]); })); return Wonder_jest.describe("test load", (function (param) { var _buildFakeRequestAnimationFrame = function (unsafeGetStateFunc,setStateFunc,runWithDefaultTimeFunc){ window.requestAnimationFrame = function(func){ setStateFunc(runWithDefaultTimeFunc(unsafeGetStateFunc())); }; }; var _prepare = function (sandbox, wdbArrayBuffer, 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(wdbArrayBuffer), undefined, /* () */0), Sinon.onCall(0, readStub)))); return LoadStreamWDBTool$Wonderjs.prepareWithReadStub(sandbox, readStub$1, state); }; var _getBoxTexturedMeshGameObject = function (rootGameObject, state) { return GameObjectTool$Wonderjs.getChildren(rootGameObject, state)[0]; }; var _getAllGeometrys = function (rootGameObject, state) { return AssembleWDBSystemTool$Wonderjs.getAllGameObjects(rootGameObject, state).filter((function (gameObject) { return GameObjectAPI$Wonderjs.hasGameObjectGeometryComponent(gameObject, state); })).map((function (gameObject) { return GameObjectAPI$Wonderjs.unsafeGetGameObjectGeometryComponent(gameObject, state); })); }; beforeEach((function () { GLBTool$Wonderjs.prepare(sandbox[0]); return _buildFakeRequestAnimationFrame(StateAPI$Wonderjs.unsafeGetState, StateAPI$Wonderjs.setState, DirectorTool$Wonderjs.runWithDefaultTime); })); Wonder_jest.describe("trigger handleWhenLoadingFunc", (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(2, Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(Caml_option.some(boxTexturedWDBArrayBuffer[0].slice(1000)), undefined, /* () */0), Sinon.onCall(1, Sinon.returns(LoadStreamWDBTool$Wonderjs.buildChunkData(Caml_option.some(boxTexturedWDBArrayBuffer[0].slice(0, 1000)), undefined, /* () */0), Sinon.onCall(0, readStub)))))); return LoadStreamWDBTool$Wonderjs.prepareWithReadStub(sandbox, readStub$1, state); }; return Wonder_jest.testPromise("trigger when load each chunk data", undefined, (function (param) { var totalLoadedByteLengthArr = /* array */[]; var contentLengthArr = /* array */[]; var wdbPathArr = /* array */[]; var handleWhenLoadingFunc = function (totalLoadedByteLength, contentLength, wdbPath) { ArrayService$Wonderjs.push(totalLoadedByteLength, totalLoadedByteLengthArr); ArrayService$Wonderjs.push(contentLength, contentLengthArr); ArrayService$Wonderjs.push(wdbPath, wdbPathArr); return /* () */0; }; var state$1 = 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]); var match = _prepare(sandbox, state$1); return LoadStreamWDBTool$Wonderjs.readWithHandleWhenLoadingFunc(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), /* tuple */[ 1, "./BoxTextured.wdb", handleWhenLoadingFunc ], match[2], 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](/* tuple */[ totalLoadedByteLengthArr, contentLengthArr, wdbPathArr ]), /* tuple */[ /* array */[ 1000, 25092 ], /* array */[ 1, 1 ], /* array */[ "./BoxTextured.wdb", "./BoxTextured.wdb" ] ])); })); })); })); Wonder_jest.describe("test before start loop", (function (param) { return Wonder_jest.describe("set default source to all textures", (function (param) { var _testSetDefaultSource = function (sandbox, wdbArrayBuffer, getTextureSourceArrFunc, state) { var state$1 = 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]); var match = _prepare(sandbox, wdbArrayBuffer[0], state$1); var default11Image = match[0]; var sourcesBeforeStartLoop = /* record */[/* contents : array */[]]; var handleBeforeStartLoop = function (state, rootGameObject) { sourcesBeforeStartLoop[0] = Curry._2(getTextureSourceArrFunc, rootGameObject, state); var match = DirectionLightTool$Wonderjs.createGameObject(state); return CameraTool$Wonderjs.createCameraGameObject(match[0])[0]; }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ default11Image, LoadStreamWDBTool$Wonderjs.buildController(sandbox), handleBeforeStartLoop, match[3] ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); DirectorTool$Wonderjs.runWithDefaultTime(state); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](sourcesBeforeStartLoop[0]), ArrayTool$Wonderjs.range(0, sourcesBeforeStartLoop[0].length - 1 | 0).map((function (param) { return default11Image; })))); })); }; Wonder_jest.describe("set default source to all basicSourceTextures", (function (param) { var _testSetDefaultSource$1 = function (sandbox, wdbArrayBuffer, state) { return _testSetDefaultSource(sandbox, wdbArrayBuffer, LoadStreamWDBTool$Wonderjs.getAllDiffuseMapSources, state); }; Wonder_jest.testPromise("test BoxTextured wdb", undefined, (function (param) { return _testSetDefaultSource$1(sandbox, boxTexturedWDBArrayBuffer, state); })); Wonder_jest.describe("test CesiumMilkTruck wdb", (function (param) { beforeEach((function () { state[0] = RenderJobsTool$Wonderjs.initWithJobConfigAndBufferConfigWithoutBuildFakeDom(sandbox, LoopRenderJobTool$Wonderjs.buildNoWorkerJobConfig(/* () */0), SettingTool$Wonderjs.buildBufferConfigStr(30000, 10, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0)); return TestTool$Wonderjs.closeContractCheck(/* () */0); })); return Wonder_jest.testPromise("test", undefined, (function (param) { return _testSetDefaultSource$1(sandbox, cesiumMilkTruckWDBArrayBuffer, state); })); })); Wonder_jest.testPromise("test AlphaBlendModeTest wdb", undefined, (function (param) { return _testSetDefaultSource$1(sandbox, alphaBlendModeTestWDBArrayBuffer, state); })); return Wonder_jest.testPromise("test SuperLowPolyStove wdb", undefined, (function (param) { return _testSetDefaultSource$1(sandbox, stoveWDBArrayBuffer, state); })); })); return Wonder_jest.describe("set default source to all cubemapTextures", (function (param) { beforeAll((function () { skyboxWDBArrayBuffer[0] = WDBTool$Wonderjs.generateWDB((function (state) { var rootGameObject = SceneAPI$Wonderjs.getSceneGameObject(state); var match = SkyboxTool$Wonderjs.prepareCubemapTextureAndSetAllSources(state); return /* tuple */[ match[0], rootGameObject ]; })); return /* () */0; })); return Wonder_jest.testPromise("test skybox wdb", undefined, (function (param) { var sandbox$1 = sandbox; var wdbArrayBuffer = skyboxWDBArrayBuffer; var state$1 = state; return _testSetDefaultSource(sandbox$1, wdbArrayBuffer, LoadStreamWDBTool$Wonderjs.getSkyboxCubemapSourceArr, state$1); })); })); })); })); Wonder_jest.describe("test load all data in first chunk", (function (param) { var _testAddGeometryComponents = function (sandbox, wdbArrayBuffer, param, state) { var resultGeometrysWhenDone = param[1]; var resultGeometrysBeforeStartLoop = param[0]; var state$1 = 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]); var match = _prepare(sandbox, wdbArrayBuffer[0], state$1); var geometrysBeforeStartLoop = /* record */[/* contents : array */[]]; var geometrysWhenDone = /* record */[/* contents : array */[]]; var handleBeforeStartLoop = function (state, rootGameObject) { geometrysBeforeStartLoop[0] = _getAllGeometrys(rootGameObject, state); var match = DirectionLightTool$Wonderjs.createGameObject(state); return CameraTool$Wonderjs.createCameraGameObject(match[0])[0]; }; var handleWhenDoneFunc = function (state, rootGameObject) { geometrysWhenDone[0] = _getAllGeometrys(rootGameObject, state); return state; }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), handleBeforeStartLoop, handleWhenDoneFunc ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); DirectorTool$Wonderjs.runWithDefaultTime(state); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ geometrysBeforeStartLoop[0], geometrysWhenDone[0] ]), /* tuple */[ resultGeometrysBeforeStartLoop, resultGeometrysWhenDone ])); })); }; var _testLoadBlobImage = function (sandbox, wdbArrayBuffer, param, getTextureSourceArrFunc, state) { var resultSourcesWhenDone = param[1]; var resultBlobData = param[0]; var state$1 = 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]); var match = _prepare(sandbox, wdbArrayBuffer[0], state$1); var sourcesWhenDone = /* record */[/* contents : array */[]]; var handleWhenDoneFunc = function (state, rootGameObject) { sourcesWhenDone[0] = Curry._2(getTextureSourceArrFunc, rootGameObject, state); var match = DirectionLightTool$Wonderjs.createGameObject(state); return CameraTool$Wonderjs.createCameraGameObject(match[0])[0]; }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), match[2], handleWhenDoneFunc ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); DirectorTool$Wonderjs.runWithDefaultTime(state); var blobData = _getBlobData(); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ blobData.map((function (param) { return /* tuple */[ param[0].byteLength, param[1] ]; })), sourcesWhenDone[0] ]), /* tuple */[ resultBlobData, resultSourcesWhenDone ])); })); }; var _testDraw = function (sandbox, wdbArrayBuffer, drawCount, state) { var drawElements = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var state$1 = 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, Caml_option.some(drawElements), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state[0]); var match = _prepare(sandbox, wdbArrayBuffer[0], state$1); return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), match[2], match[3] ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); var drawElementsCallCount = Sinon.getCallCount(drawElements); DirectorTool$Wonderjs.runWithDefaultTime(state); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(drawElements) - drawElementsCallCount | 0), drawCount)); })); }; Wonder_jest.describe("test skybox wdb", (function (param) { beforeEach((function () { state[0] = LoadStreamWDBTool$Wonderjs.prepareStateForSkybox(sandbox); return TestTool$Wonderjs.closeContractCheck(/* () */0); })); beforeAll((function () { skyboxWDBArrayBuffer[0] = WDBTool$Wonderjs.generateWDB((function (state) { var rootGameObject = SceneAPI$Wonderjs.getSceneGameObject(state); var match = SkyboxTool$Wonderjs.prepareCubemapTextureAndSetAllSources(state); return /* tuple */[ match[0], rootGameObject ]; })); return /* () */0; })); Wonder_jest.testPromise("load blob image and set it to be source", undefined, (function (param) { var sandbox$1 = sandbox; var wdbArrayBuffer = skyboxWDBArrayBuffer; var param$1 = /* tuple */[ /* array */[ /* tuple */[ 227, { type: "image/png" } ], /* tuple */[ 167, { type: "image/png" } ], /* tuple */[ 145, { type: "image/png" } ], /* tuple */[ 143, { type: "image/png" } ], /* tuple */[ 161, { type: "image/png" } ], /* tuple */[ 151, { type: "image/jpeg" } ] ], /* array */[ GLBTool$Wonderjs.createFakeImage("i1", "object_url0", undefined, undefined, /* () */0), GLBTool$Wonderjs.createFakeImage("i2", "object_url1", undefined, undefined, /* () */0), GLBTool$Wonderjs.createFakeImage("i3", "object_url2", undefined, undefined, /* () */0), GLBTool$Wonderjs.createFakeImage("i4", "object_url3", undefined, undefined, /* () */0), GLBTool$Wonderjs.createFakeImage("i5", "object_url4", undefined, undefined, /* () */0), GLBTool$Wonderjs.createFakeImage("i6", "object_url5", undefined, undefined, /* () */0) ] ]; var state$1 = state; return _testLoadBlobImage(sandbox$1, wdbArrayBuffer, /* tuple */[ param$1[0], param$1[1] ], LoadStreamWDBTool$Wonderjs.getSkyboxCubemapSourceArr, state$1); })); Wonder_jest.testPromise("draw the gameObject", undefined, (function (param) { return _testDraw(sandbox, skyboxWDBArrayBuffer, 1, state); })); return Wonder_jest.testPromise("mark skybox->cubemap texture need update", undefined, (function (param) { var state$1 = 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]); var match = _prepare(sandbox, skyboxWDBArrayBuffer[0], state$1); var handleWhenDoneFunc = function (state, rootGameObject) { return state; }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), match[2], handleWhenDoneFunc ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](CubemapTextureTool$Wonderjs.getIsNeedUpdate(SceneTool$Wonderjs.unsafeGetCubemapTexture(state), state)), true)); })); })); })); return Wonder_jest.describe("test glb->wdb", (function (param) { var _testLoadBlobImage$1 = function (sandbox, wdbArrayBuffer, param, state) { return _testLoadBlobImage(sandbox, wdbArrayBuffer, /* tuple */[ param[0], param[1] ], LoadStreamWDBTool$Wonderjs.getAllDiffuseMapSources, state); }; Wonder_jest.describe("test BoxTextured wdb", (function (param) { Wonder_jest.testPromise("add geometry component", undefined, (function (param) { return _testAddGeometryComponents(sandbox, boxTexturedWDBArrayBuffer, /* tuple */[ /* array */[], /* array */[0] ], state); })); Wonder_jest.testPromise("test set geometry point data", undefined, (function (param) { var bufferData = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var state$1 = 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, 1, 2, undefined, undefined, 3, 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, Caml_option.some(bufferData), 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]); var match = _prepare(sandbox, boxTexturedWDBArrayBuffer[0], state$1); var geometryWhenDone = /* record */[/* contents */-1]; var handleWhenDoneFunc = function (state, rootGameObject) { geometryWhenDone[0] = GameObjectAPI$Wonderjs.unsafeGetGameObjectGeometryComponent(_getBoxTexturedMeshGameObject(rootGameObject, state), state); return state; }; return LoadStreamWDBTool$Wonderjs.read(/* tuple */[ match[0], LoadStreamWDBTool$Wonderjs.buildController(sandbox), match[2], handleWhenDoneFunc ], LoadStreamWDBTool$Wonderjs.buildReader(match[1])).then((function (param) { var state = StateAPI$Wonderjs.unsafeGetState(/* () */0); var state$1 = DirectorTool$Wonderjs.runWithDefaultTime(state); var geometry = geometryWhenDone[0]; var vertices = GeometryAPI$Wonderjs.getGeometryVertices(geometry, state$1); var normals = GeometryAPI$Wonderjs.getGeometryNormals(geometry, state$1); var texCoords = GeometryAPI$Wonderjs.getGeometryTexCoords(geometry, state$1); var indices = GeometryAPI$Wonderjs.getGeometryIndices16(geometry, state$1); return Promise.resolve(Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ /* tuple */[ vertices, normals,