wonder.js
Version:
215 lines (211 loc) • 26.6 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_option = require("bs-platform/lib/js/caml_option.js");
var Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js");
var CameraTool$Wonderjs = require("../../../tool/service/camera/CameraTool.js");
var FakeGlTool$Wonderjs = require("../../../tool/gl/FakeGlTool.js");
var DirectorTool$Wonderjs = require("../../../tool/core/DirectorTool.js");
var RenderJobsTool$Wonderjs = require("../../../tool/job/no_worker/loop/RenderJobsTool.js");
var LightMaterialAPI$Wonderjs = require("../../../../src/api/material/LightMaterialAPI.js");
var LoopRenderJobTool$Wonderjs = require("../../../tool/job/no_worker/loop/LoopRenderJobTool.js");
var BasicSourceTextureAPI$Wonderjs = require("../../../../src/api/texture/BasicSourceTextureAPI.js");
var RenderMaterialMapTool$Wonderjs = require("../job/loop/tool/RenderMaterialMapTool.js");
var CreateStateMainService$Wonderjs = require("../../../../src/service/state/main/state/CreateStateMainService.js");
var FrontRenderLightJobTool$Wonderjs = require("../../../tool/job/no_worker/loop/FrontRenderLightJobTool.js");
Wonder_jest.describe("hot change texture", (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] = RenderJobsTool$Wonderjs.initWithJobConfig(sandbox, LoopRenderJobTool$Wonderjs.buildNoWorkerJobConfig(/* () */0));
return /* () */0;
}));
afterEach((function () {
return Curry._1(Sinon.restoreSandbox, sandbox[0]);
}));
return Wonder_jest.describe("test change texture", (function (param) {
var _prepareForUpdateTexture = function (state) {
var match = CameraTool$Wonderjs.createCameraGameObject(state);
var pixelStorei = 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, 2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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(pixelStorei), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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), match[0]);
return /* tuple */[
state$1,
/* tuple */[
2,
pixelStorei
]
];
};
Wonder_jest.describe("test basic material", (function (param) {
return Wonder_jest.describe("test map", (function (param) {
Wonder_jest.test("should get the new texture", (function (param) {
var match = LightMaterialAPI$Wonderjs.createLightMaterial(state[0]);
var material = match[1];
var match$1 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var map1 = match$1[1];
var match$2 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$1[0]);
var state$1 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, match$2[1], match$2[0]);
var state$2 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, map1, state$1);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](LightMaterialAPI$Wonderjs.unsafeGetLightMaterialDiffuseMap(material, state$2)), map1);
}));
Wonder_jest.test("should bind the new texture", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedDiffuseMap(sandbox, state[0]);
var match$1 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var match$2 = CameraTool$Wonderjs.createCameraGameObject(match$1[0]);
var bindTexture = 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, Caml_option.some(bindTexture), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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), match$2[0]);
var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1));
var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(match[3], match$1[1], state$2);
DirectorTool$Wonderjs.runWithDefaultTime(state$3);
return Sinon.toCalledTwice(Wonder_jest.Expect[/* expect */0](bindTexture));
}));
return Wonder_jest.describe("test update texture", (function (param) {
var _prepare = function (map1, map2, state) {
var state$1 = RenderMaterialMapTool$Wonderjs.setSource(/* :: */[
map1,
/* :: */[
map2,
/* [] */0
]
], state);
var match = _prepareForUpdateTexture(state$1);
var match$1 = match[1];
return /* tuple */[
match[0],
/* tuple */[
map1,
map2
],
/* tuple */[
match$1[0],
match$1[1]
]
];
};
Wonder_jest.test("should bind the new texture", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedDiffuseMap(sandbox, state[0]);
var match$1 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var match$2 = _prepare(match[5], match$1[1], match$1[0]);
var match$3 = match$2[2];
var state$1 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(match$2[0]));
var state$2 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(match[3], match$2[1][1], state$1);
DirectorTool$Wonderjs.runWithDefaultTime(state$2);
return Sinon.toCalledTwice(Wonder_jest.Expect[/* expect */0](Sinon.withOneArg(match$3[0], match$3[1])));
}));
return Wonder_jest.test("if new texture has already updated before, not update", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedDiffuseMap(sandbox, state[0]);
var match$1 = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedDiffuseMap(sandbox, match[0]);
var match$2 = _prepare(match[5], match$1[5], match$1[0]);
var match$3 = match$2[2];
var state$1 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(match$2[0]));
var state$2 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(match[3], match$2[1][1], state$1);
DirectorTool$Wonderjs.runWithDefaultTime(state$2);
return Sinon.toCalledTwice(Wonder_jest.Expect[/* expect */0](Sinon.withOneArg(match$3[0], match$3[1])));
}));
}));
}));
}));
return Wonder_jest.describe("test light material", (function (param) {
return Wonder_jest.describe("test diffuseMap+specularMap", (function (param) {
Wonder_jest.test("should get the new texture", (function (param) {
var match = LightMaterialAPI$Wonderjs.createLightMaterial(state[0]);
var material = match[1];
var match$1 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var match$2 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$1[0]);
var match$3 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$2[0]);
var map3 = match$3[1];
var match$4 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$3[0]);
var map4 = match$4[1];
var state$1 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, match$2[1], match$4[0]);
var state$2 = LightMaterialAPI$Wonderjs.setLightMaterialSpecularMap(material, match$1[1], state$1);
var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialSpecularMap(material, map3, state$2);
var state$4 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, map4, state$3);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[
LightMaterialAPI$Wonderjs.unsafeGetLightMaterialDiffuseMap(material, state$4),
LightMaterialAPI$Wonderjs.unsafeGetLightMaterialSpecularMap(material, state$4)
]), /* tuple */[
map4,
map3
]);
}));
Wonder_jest.test("should bind the new texture", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedMap(sandbox, state[0]);
var material1 = match[3];
var match$1 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var match$2 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$1[0]);
var match$3 = CameraTool$Wonderjs.createCameraGameObject(match$2[0]);
var bindTexture = 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, Caml_option.some(bindTexture), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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), match$3[0]);
var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1));
var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialSpecularMap(material1, match$1[1], state$2);
var state$4 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material1, match$2[1], state$3);
DirectorTool$Wonderjs.runWithDefaultTime(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(bindTexture)), 4);
}));
return Wonder_jest.describe("test update texture", (function (param) {
Wonder_jest.test("should bind the new texture", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedMap(sandbox, state[0]);
var match$1 = match[5];
var material1 = match[3];
var match$2 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match[0]);
var map3 = match$2[1];
var match$3 = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(match$2[0]);
var map4 = match$3[1];
var match$4 = _prepareForUpdateTexture(match$3[0]);
var match$5 = match$4[1];
var state$1 = RenderMaterialMapTool$Wonderjs.setSource(/* :: */[
match$1[0],
/* :: */[
match$1[1],
/* :: */[
map3,
/* :: */[
map4,
/* [] */0
]
]
]
], match$4[0]);
var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1));
var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material1, map3, state$2);
var state$4 = LightMaterialAPI$Wonderjs.setLightMaterialSpecularMap(material1, map4, state$3);
DirectorTool$Wonderjs.runWithDefaultTime(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(Sinon.withOneArg(match$5[0], match$5[1]))), 4);
}));
return Wonder_jest.test("if new texture has already updated before, not update", (function (param) {
var match = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedMap(sandbox, state[0]);
var match$1 = match[5];
var material1 = match[3];
var match$2 = FrontRenderLightJobTool$Wonderjs.prepareGameObjectWithCreatedMap(sandbox, match[0]);
var match$3 = match$2[5];
var map4 = match$3[1];
var map3 = match$3[0];
var state$1 = RenderMaterialMapTool$Wonderjs.setSource(/* :: */[
match$1[0],
/* :: */[
match$1[1],
/* :: */[
map3,
/* :: */[
map4,
/* [] */0
]
]
]
], match$2[0]);
var match$4 = _prepareForUpdateTexture(state$1);
var match$5 = match$4[1];
var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(match$4[0]));
var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material1, map3, state$2);
var state$4 = LightMaterialAPI$Wonderjs.setLightMaterialSpecularMap(material1, map4, state$3);
DirectorTool$Wonderjs.runWithDefaultTime(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(Sinon.withOneArg(match$5[0], match$5[1]))), 4);
}));
}));
}));
}));
}));
}));
/* Not a pure module */