wonder.js
Version:
451 lines (447 loc) • 172 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 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,