UNPKG

wonder.js

Version:
400 lines (396 loc) 34.8 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 Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js"); var TestTool$Wonderjs = require("../../../../tool/TestTool.js"); var DisposeJob$Wonderjs = require("../../../../../src/job/no_worker/loop/DisposeJob.js"); var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js"); var GameObjectAPI$Wonderjs = require("../../../../../src/api/GameObjectAPI.js"); var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js"); var TypeArrayTool$Wonderjs = require("../../../../tool/service/primitive/TypeArrayTool.js"); var GameObjectTool$Wonderjs = require("../../../../tool/service/gameObject/GameObjectTool.js"); var AllMaterialTool$Wonderjs = require("../../../../tool/service/material/AllMaterialTool.js"); var BasicMaterialAPI$Wonderjs = require("../../../../../src/api/material/BasicMaterialAPI.js"); var BasicMaterialTool$Wonderjs = require("../../../../tool/service/material/BasicMaterialTool.js"); var LightMaterialTool$Wonderjs = require("../../../../tool/service/material/LightMaterialTool.js"); var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js"); Wonder_jest.describe("BasicMaterial", (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("createBasicMaterial", (function (param) { return Wonder_jest.test("create a new material which is just index(int)", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](match[1]), 0); })); })); Wonder_jest.describe("init", (function (param) { return Wonder_jest.describe("contract check", (function (param) { return Wonder_jest.test("shouldn't dispose any material before init", (function (param) { state[0] = TestTool$Wonderjs.initWithJobConfigWithoutBuildFakeDom(sandbox, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0); var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var state$1 = BasicMaterialTool$Wonderjs.dispose(match[1], match[2], match$1[0]); return Wonder_jest.Expect[/* toThrowMessage */21]("expect not dispose any material before init", Wonder_jest.Expect[/* expect */0]((function (param) { BasicMaterialTool$Wonderjs.initMaterials(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$1); return /* () */0; }))); })); })); })); Wonder_jest.describe("unsafeGetBasicMaterialGameObjects", (function (param) { return Wonder_jest.test("get material's gameObjects", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]); var gameObject1 = match$1[1]; var match$2 = GameObjectAPI$Wonderjs.createGameObject(match$1[0]); var gameObject2 = match$2[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject1, material, match$2[0]); var state$2 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject2, material, state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.unsafeGetBasicMaterialGameObjects(material, state$2)), /* array */[ gameObject1, gameObject2 ]); })); })); Wonder_jest.describe("operate data", (function (param) { Wonder_jest.test("get the data from array buffer may not equal to the value which is setted", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var color = /* array */[ 0.2, 0.3, 0.5 ]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialColor(material, color, match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialColor(material, state$1)), /* array */[ 0.20000000298023224, 0.30000001192092896, 0.5 ]); })); Wonder_jest.describe("getBasicMaterialColor", (function (param) { return Wonder_jest.test("test default color", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialColor(match[1], match[0])), /* array */[ 1, 1, 1 ]); })); })); Wonder_jest.describe("setBasicMaterialColor", (function (param) { return Wonder_jest.test("test set color", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var color = /* array */[ 0.2, 0.3, 0.5 ]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialColor(material, color, match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](TypeArrayTool$Wonderjs.truncateArray(BasicMaterialAPI$Wonderjs.getBasicMaterialColor(material, state$1))), color); })); })); Wonder_jest.describe("getBasicMaterialIsDepthTest", (function (param) { return Wonder_jest.test("test default isDepthTest", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialIsDepthTest(match[1], match[0])), true); })); })); Wonder_jest.describe("setBasicMaterialIsDepthTest", (function (param) { return Wonder_jest.test("test set isDepthTest", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialIsDepthTest(material, false, match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialIsDepthTest(material, state$1)), false); })); })); Wonder_jest.describe("getBasicMaterialAlpha", (function (param) { return Wonder_jest.test("test default alpha", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialAlpha(match[1], match[0])), 1.0); })); })); return Wonder_jest.describe("setBasicMaterialAlpha", (function (param) { return Wonder_jest.test("test set alpha", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialAlpha(material, 0.5, match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialAlpha(material, state$1)), 0.5); })); })); })); Wonder_jest.describe("disposeComponent", (function (param) { Wonder_jest.describe("dispose data", (function (param) { Wonder_jest.describe("test dispose shared material", (function (param) { return Wonder_jest.test("remove gameObject", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var basicMaterial1 = match[1]; var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]); var gameObject1 = match$1[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject1, basicMaterial1, match$1[0]); var match$2 = GameObjectAPI$Wonderjs.createGameObject(state$1); var gameObject2 = match$2[1]; var state$2 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject2, basicMaterial1, match$2[0]); var match$3 = GameObjectAPI$Wonderjs.createGameObject(state$2); var gameObject3 = match$3[1]; var state$3 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject3, basicMaterial1, match$3[0]); var state$4 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(gameObject1, basicMaterial1, state$3); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.unsafeGetBasicMaterialGameObjects(basicMaterial1, state$4)), /* array */[ gameObject2, gameObject3 ]); })); })); Wonder_jest.describe("test dispose not shared material", (function (param) { Wonder_jest.test("remove from gameObjectsMap, nameMap", (function (param) { var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var material1 = match[2]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialName(material1, "name", match[0]); var state$2 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(match[1], material1, state$1); var match$1 = BasicMaterialTool$Wonderjs.getRecord(state$2); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ BasicMaterialTool$Wonderjs.hasGameObject(material1, state$2), MutableSparseMapService$WonderCommonlib.has(material1, match$1[/* nameMap */9]) ]), /* tuple */[ false, false ]); })); return Wonder_jest.describe("test remove from type array", (function (param) { var _testRemoveFromTypeArr = function (state, valueTuple, defaultValue, param) { return AllMaterialTool$Wonderjs.testRemoveFromTypeArr(state, valueTuple, defaultValue, /* tuple */[ GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent, param[0], param[1], param[2] ]); }; Wonder_jest.describe("remove from shaderIndices", (function (param) { return Wonder_jest.test("reset removed one's value", (function (param) { return _testRemoveFromTypeArr(state, /* tuple */[ 1, 2 ], BasicMaterialTool$Wonderjs.getDefaultShaderIndex(state[0]), /* tuple */[ BasicMaterialTool$Wonderjs.createGameObject, BasicMaterialTool$Wonderjs.getShaderIndex, BasicMaterialTool$Wonderjs.setShaderIndex ]); })); })); return Wonder_jest.describe("remove from colors", (function (param) { return Wonder_jest.test("reset removed one's value", (function (param) { return _testRemoveFromTypeArr(state, /* tuple */[ /* array */[ 1, 0.2, 0.3 ], /* array */[ 0, 0.2, 0.3 ] ], BasicMaterialTool$Wonderjs.getDefaultColor(state[0]), /* tuple */[ BasicMaterialTool$Wonderjs.createGameObject, (function (material, state) { return TypeArrayTool$Wonderjs.truncateArray(BasicMaterialAPI$Wonderjs.getBasicMaterialColor(material, state)); }), BasicMaterialAPI$Wonderjs.setBasicMaterialColor ]); })); })); })); })); return Wonder_jest.describe("fix bug", (function (param) { return Wonder_jest.test("if have create other gameObjects, shouldn't affect dispose basicMaterial gameObjects", (function (param) { var match = LightMaterialTool$Wonderjs.createGameObject(state[0]); var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var state$1 = DisposeJob$Wonderjs.execJob(undefined, GameObjectAPI$Wonderjs.batchDisposeGameObject(/* array */[ match[1], match$1[1] ], match$1[0])); var match$2 = BasicMaterialTool$Wonderjs.createGameObject(state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.unsafeGetBasicMaterialGameObjects(match$2[2], match$2[0])), /* array */[match$2[1]]); })); })); })); return Wonder_jest.describe("test add new one after dispose old one", (function (param) { Wonder_jest.test("new one's data should be default value", (function (param) { var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var material1 = match[2]; var color = /* array */[ 0.2, 0.3, 0.5 ]; var state$1 = BasicMaterialAPI$Wonderjs.setBasicMaterialColor(material1, color, match[0]); var match$1 = BasicMaterialTool$Wonderjs.createGameObject(state$1); var state$2 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(match[1], material1, match$1[0]); var match$2 = BasicMaterialTool$Wonderjs.createGameObject(state$2); var state$3 = match$2[0]; return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getBasicMaterialColor(match$2[2], state$3)), BasicMaterialTool$Wonderjs.getDefaultColor(state$3)); })); Wonder_jest.test("use disposed index as new index firstly", (function (param) { var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var material1 = match[2]; var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var state$1 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(match[1], material1, match$1[0]); var match$2 = BasicMaterialTool$Wonderjs.createGameObject(state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](match$2[2]), material1); })); return Wonder_jest.test("if has no disposed index, get index from materialData.index", (function (param) { var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var material1 = match[2]; var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var state$1 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(match[1], material1, match$1[0]); var match$2 = BasicMaterialTool$Wonderjs.createGameObject(state$1); var match$3 = BasicMaterialTool$Wonderjs.createGameObject(match$2[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ match$2[2], match$3[2] ]), /* tuple */[ material1, match$1[2] + 1 | 0 ]); })); })); })); Wonder_jest.describe("getAllBasicMaterials", (function (param) { var _createBasicMaterialGameObjects = function (state) { var match = BasicMaterialTool$Wonderjs.createGameObject(state[0]); var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var match$2 = BasicMaterialTool$Wonderjs.createGameObject(match$1[0]); return /* tuple */[ match$2[0], /* tuple */[ match[1], match$1[1], match$2[1] ], /* tuple */[ match[2], match$1[2], match$2[2] ] ]; }; Wonder_jest.test("get all components include the ones add or not add to gameObject", (function (param) { var match = _createBasicMaterialGameObjects(state); var match$1 = match[2]; var match$2 = BasicMaterialAPI$Wonderjs.createBasicMaterial(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](BasicMaterialAPI$Wonderjs.getAllBasicMaterials(match$2[0])), /* array */[ match$1[0], match$1[1], match$1[2], match$2[1] ]); })); return Wonder_jest.test("test dispose", (function (param) { var match = _createBasicMaterialGameObjects(state); var match$1 = match[1]; var state$1 = GameObjectAPI$Wonderjs.disposeGameObject(match$1[2], GameObjectAPI$Wonderjs.disposeGameObject(match$1[1], match[0])); var state$2 = DisposeJob$Wonderjs.execJob(undefined, state$1); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GameObjectAPI$Wonderjs.getAllBasicMaterialComponents(state$2)), /* array */[match[2][0]]); })); })); Wonder_jest.describe("batchDisposeBasicMaterial", (function (param) { var _exec = function (materialArr, state) { var state$1 = BasicMaterialAPI$Wonderjs.batchDisposeBasicMaterial(materialArr, state); return DisposeJob$Wonderjs.execJob(undefined, state$1); }; Wonder_jest.describe("if material has gameObjects", (function (param) { var _prepareAndExec = function (state) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var match$1 = BasicMaterialTool$Wonderjs.createGameObject(match[0]); var material2 = match$1[2]; var match$2 = BasicMaterialTool$Wonderjs.createGameObject(match$1[0]); var material3 = match$2[2]; var state$1 = _exec(/* array */[ material2, material3 ], match$2[0]); return /* tuple */[ state$1, /* tuple */[ match[1], material2, material3 ] ]; }; Wonder_jest.test("remove from gameObject", (function (param) { var match = _prepareAndExec(state); var match$1 = match[1]; var state$1 = match[0]; return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ BasicMaterialTool$Wonderjs.hasGameObject(match$1[1], state$1), BasicMaterialTool$Wonderjs.hasGameObject(match$1[2], state$1) ]), /* tuple */[ false, false ]); })); return Wonder_jest.test("dispose material data", (function (param) { var match = _prepareAndExec(state); var match$1 = match[1]; var state$1 = match[0]; return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ BasicMaterialTool$Wonderjs.isMaterialDisposed(match$1[0], state$1), BasicMaterialTool$Wonderjs.isMaterialDisposed(match$1[1], state$1), BasicMaterialTool$Wonderjs.isMaterialDisposed(match$1[2], state$1) ]), /* tuple */[ false, true, true ]); })); })); return Wonder_jest.describe("else", (function (param) { return Wonder_jest.test("dispose material data", (function (param) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material1 = match[1]; var match$1 = BasicMaterialAPI$Wonderjs.createBasicMaterial(match[0]); var material2 = match$1[1]; var state$1 = _exec(/* array */[ material1, material2 ], match$1[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ BasicMaterialTool$Wonderjs.isMaterialDisposed(material1, state$1), BasicMaterialTool$Wonderjs.isMaterialDisposed(material2, state$1) ]), /* tuple */[ true, true ]); })); })); })); return Wonder_jest.describe("contract check: is alive", (function (param) { return Wonder_jest.describe("if material is disposed", (function (param) { return Wonder_jest.test("unsafeGetBasicMaterialGameObjects should error", (function (param) { var getFunc = BasicMaterialAPI$Wonderjs.unsafeGetBasicMaterialGameObjects; var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state[0]); var material = match[1]; var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]); var gameObject = match$1[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject, material, match$1[0]); var state$2 = GameObjectTool$Wonderjs.disposeGameObjectBasicMaterialComponent(gameObject, material, state$1); return Wonder_jest.Expect[/* toThrowMessage */21]("expect component alive, but actual not", Wonder_jest.Expect[/* expect */0]((function (param) { return Curry._2(getFunc, material, state$2); }))); })); })); })); })); /* Not a pure module */