UNPKG

wonder.js

Version:
412 lines (410 loc) 98.9 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_int32 = require("bs-platform/lib/js/caml_int32.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 GLSLTool$Wonderjs = require("../../../../tool/render/core/GLSLTool.js"); var TestTool$Wonderjs = require("../../../../tool/TestTool.js"); var ViewTool$Wonderjs = require("../../../../tool/service/device/ViewTool.js"); var JudgeTool$Wonderjs = require("../../../../tool/JudgeTool.js"); var SinonTool$Wonderjs = require("../../tool/sinon/SinonTool.js"); var CameraTool$Wonderjs = require("../../../../tool/service/camera/CameraTool.js"); var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js"); var JobDataAPI$Wonderjs = require("../../../../../src/api/jobData/JobDataAPI.js"); var ProgramTool$Wonderjs = require("../../../../tool/service/program/ProgramTool.js"); var DirectorTool$Wonderjs = require("../../../../tool/core/DirectorTool.js"); var GeometryTool$Wonderjs = require("../../../../tool/service/geometry/GeometryTool.js"); var TransformAPI$Wonderjs = require("../../../../../src/api/TransformAPI.js"); var GameObjectAPI$Wonderjs = require("../../../../../src/api/GameObjectAPI.js"); var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js"); var Matrix4Service$Wonderjs = require("../../../../../src/service/atom/Matrix4Service.js"); var RenderJobsTool$Wonderjs = require("../../../../tool/job/no_worker/loop/RenderJobsTool.js"); var BoxGeometryTool$Wonderjs = require("../../../../tool/service/geometry/BoxGeometryTool.js"); var MeshRendererAPI$Wonderjs = require("../../../../../src/api/MeshRendererAPI.js"); var RenderInJobTool$Wonderjs = require("../tool/RenderInJobTool.js"); var BasicMaterialAPI$Wonderjs = require("../../../../../src/api/material/BasicMaterialAPI.js"); var GLSLLocationTool$Wonderjs = require("../../../../tool/service/location/GLSLLocationTool.js"); var DrawOutlineJobTool$Wonderjs = require("./tool/DrawOutlineJobTool.js"); var SphereGeometryTool$Wonderjs = require("../../../../tool/service/geometry/SphereGeometryTool.js"); var NoWorkerJobConfigTool$Wonderjs = require("../../../../tool/service/noWorkerJob/NoWorkerJobConfigTool.js"); var FrontRenderLightJobTool$Wonderjs = require("../../../../tool/job/no_worker/loop/FrontRenderLightJobTool.js"); var CreateRenderStateMainService$Wonderjs = require("../../../../../src/service/state/main/render/CreateRenderStateMainService.js"); var PerspectiveCameraProjectionTool$Wonderjs = require("../../../../tool/service/camera/PerspectiveCameraProjectionTool.js"); Wonder_jest.describe("test draw outline job", (function (param) { var sandbox = Sinon.getSandboxDefaultVal(/* () */0); var state = /* record */[/* contents */MainStateTool$Wonderjs.createState(/* () */0)]; var _buildRenderConfig = function ($staropt$star, $staropt$star$1, param) { var shaders = $staropt$star !== undefined ? $staropt$star : "\n{\n \"static_branchs\": [\n ],\n \"dynamic_branchs\": [\n ],\n \"groups\": [\n {\n \"name\": \"top\",\n \"value\": [\n \"common\",\n \"vertex\"\n ]\n },\n {\n \"name\": \"end\",\n \"value\": [\n \"end\"\n ]\n }\n ],\n \"material_shaders\": [\n ],\n \"no_material_shaders\": [\n {\n \"name\": \"outline_draw_origin_gameObjects\",\n \"shader_libs\": [\n {\n \"type\": \"group\",\n \"name\": \"top\"\n },\n {\n \"name\": \"modelMatrix_noInstance\"\n },\n {\n \"name\": \"outline_origin\"\n },\n {\n \"type\": \"group\",\n \"name\": \"end\"\n }\n ]\n },\n {\n \"name\": \"outline_draw_expand_gameObjects\",\n \"shader_libs\": [\n {\n \"type\": \"group\",\n \"name\": \"top\"\n },\n {\n \"name\": \"normal\"\n },\n {\n \"name\": \"outline_scaled_modelMatrix\"\n },\n {\n \"name\": \"outline_expand\"\n },\n {\n \"type\": \"group\",\n \"name\": \"end\"\n }\n ]\n }\n ]\n}\n "; var shaderLibs = $staropt$star$1 !== undefined ? $staropt$star$1 : "\n[\n {\n \"name\": \"common\",\n \"glsls\": [\n {\n \"type\": \"vs\",\n \"name\": \"common_vertex\"\n },\n {\n \"type\": \"fs\",\n \"name\": \"common_fragment\"\n }\n ],\n \"variables\": {\n \"uniforms\": [\n {\n \"name\": \"u_vMatrix\",\n \"field\": \"vMatrix\",\n \"type\": \"mat4\",\n \"from\": \"camera\"\n },\n {\n \"name\": \"u_pMatrix\",\n \"field\": \"pMatrix\",\n \"type\": \"mat4\",\n \"from\": \"camera\"\n }\n ]\n }\n },\n {\n \"name\": \"modelMatrix_noInstance\",\n \"glsls\": [\n {\n \"type\": \"vs\",\n \"name\": \"modelMatrix_noInstance_vertex\"\n }\n ],\n \"variables\": {\n \"uniforms\": [\n {\n \"name\": \"u_mMatrix\",\n \"field\": \"mMatrix\",\n \"type\": \"mat4\",\n \"from\": \"model\"\n }\n ]\n }\n },\n {\n \"name\": \"vertex\",\n \"variables\": {\n \"attributes\": [\n {\n \"name\": \"a_position\",\n \"buffer\": 0,\n \"type\": \"vec3\"\n }\n ]\n }\n },\n {\n \"name\": \"normal\",\n \"variables\": {\n \"attributes\": [\n {\n \"name\": \"a_normal\",\n \"buffer\": 1,\n \"type\": \"vec3\"\n }\n ]\n }\n },\n {\n \"name\": \"outline_expand\",\n \"glsls\": [\n {\n \"type\": \"vs\",\n \"name\": \"webgl1_outline_expand_vertex\"\n },\n {\n \"type\": \"fs\",\n \"name\": \"webgl1_outline_expand_fragment\"\n }\n ],\n \"variables\": {\n \"uniforms\": [\n {\n \"name\": \"u_outlineColor\",\n \"from\": \"no_material_shader\",\n \"field\": \"outlineExpand\",\n \"type\": \"float3\"\n }\n ]\n }\n },\n{\n \"name\": \"outline_scaled_modelMatrix\",\n \"glsls\": [\n {\n \"type\": \"vs\",\n \"name\": \"modelMatrix_noInstance_vertex\"\n }\n ],\n \"variables\": {\n \"uniforms\": [\n {\n \"name\": \"u_mMatrix\",\n \"field\": \"mMatrix\",\n \"type\": \"mat4\",\n \"from\": \"expand_model\"\n }\n ]\n }\n },\n {\n \"name\": \"outline_origin\",\n \"glsls\": [\n {\n \"type\": \"vs\",\n \"name\": \"webgl1_outline_origin_vertex\"\n },\n {\n \"type\": \"fs\",\n \"name\": \"webgl1_outline_origin_fragment\"\n }\n ]\n },\n {\n \"name\": \"end\",\n \"variables\": {\n \"attributes\": [\n {\n \"buffer\": 3\n }\n ]\n }\n }\n]\n "; return /* tuple */[ shaders, shaderLibs ]; }; var _buildNoWorkerJobConfig = function (param) { return NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, "\n[\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"init_camera\"\n },\n {\n \"name\": \"start_time\"\n },\n {\n \"name\": \"preget_glslData\"\n },\n {\n \"name\": \"init_no_material_shader\"\n }\n ]\n }\n]\n ", "\n[\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"tick\"\n },\n {\n \"name\": \"dispose\"\n },\n {\n \"name\": \"reallocate_cpu_memory\"\n },\n {\n \"name\": \"update_transform\"\n },\n {\n \"name\": \"update_camera\"\n },\n {\n \"name\": \"get_camera_data\"\n },\n {\n \"name\": \"create_basic_render_object_buffer\"\n },\n {\n \"name\": \"create_light_render_object_buffer\"\n },\n {\n \"name\": \"clear_last_send_component\"\n },\n {\n \"name\": \"send_uniform_shader_data\"\n },\n {\n \"name\": \"draw_outline\"\n }\n ]\n }\n]\n ", NoWorkerJobConfigTool$Wonderjs.buildNoWorkerInitJobConfigWithoutInitMain(/* () */0), NoWorkerJobConfigTool$Wonderjs.buildNoWorkerLoopJobConfig(/* () */0), /* () */0); }; var prepareBasicGameObject = function (sandbox, state) { var match = BasicMaterialAPI$Wonderjs.createBasicMaterial(state); var material = match[1]; var match$1 = SphereGeometryTool$Wonderjs.createSphereGeometry(match[0]); var geometry = match$1[1]; var match$2 = MeshRendererAPI$Wonderjs.createMeshRenderer(match$1[0]); var meshRenderer = match$2[1]; var match$3 = GameObjectAPI$Wonderjs.createGameObject(match$2[0]); var gameObject = match$3[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, geometry, GameObjectAPI$Wonderjs.addGameObjectBasicMaterialComponent(gameObject, material, match$3[0]))); return /* tuple */[ state$1, gameObject, /* tuple */[ geometry, match$1[2], match$1[3] ], material, meshRenderer ]; }; var prepareOneGameObject = function (sandbox, state) { var match = FrontRenderLightJobTool$Wonderjs.prepareGameObject(sandbox, state); var lightGameObject = match[1]; var match$1 = CameraTool$Wonderjs.createCameraGameObject(match[0]); var state$1 = JobDataAPI$Wonderjs.setGameObjectsNeedDrawOutline(/* array */[lightGameObject], match$1[0]); return /* tuple */[ state$1, /* tuple */[ match$1[2], match$1[3][0] ], lightGameObject, match[2] ]; }; var prepareGameObjects = function (sandbox, state) { var match = prepareBasicGameObject(sandbox, state); var match$1 = match[2]; var basicGameObject = match[1]; var match$2 = FrontRenderLightJobTool$Wonderjs.prepareGameObject(sandbox, match[0]); var lightGameObject = match$2[1]; var match$3 = CameraTool$Wonderjs.createCameraGameObject(match$2[0]); var state$1 = JobDataAPI$Wonderjs.setGameObjectsNeedDrawOutline(/* array */[ basicGameObject, lightGameObject ], match$3[0]); return /* tuple */[ state$1, /* tuple */[ match$3[2], match$3[3][0] ], /* tuple */[ basicGameObject, lightGameObject ], /* tuple */[ /* tuple */[ match$1[0], match$1[2] ], match$2[2] ] ]; }; var prepareAndExecForSendVMatrix = function (param) { var match = prepareGameObjects(sandbox, state[0]); var state$1 = TransformAPI$Wonderjs.setTransformLocalPosition(match[1][0], /* tuple */[ 10, 2, 3 ], match[0]); var uniformMatrix4fv = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var getUniformLocation = GLSLLocationTool$Wonderjs.getUniformLocation(0, sandbox, "u_vMatrix"); var state$2 = 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, Caml_option.some(getUniformLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(uniformMatrix4fv), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$1); var state$3 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$2)); var targetData = new Float32Array(/* array */[ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -10, -2, -3, 1 ]); return /* tuple */[ state$3, uniformMatrix4fv, 0, targetData ]; }; var prepareAndExecForSendPMatrix = function (param) { var match = prepareGameObjects(sandbox, state[0]); var uniformMatrix4fv = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var getUniformLocation = GLSLLocationTool$Wonderjs.getUniformLocation(0, sandbox, "u_pMatrix"); 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, Caml_option.some(getUniformLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(uniformMatrix4fv), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match[0]); var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1)); var targetData = PerspectiveCameraProjectionTool$Wonderjs.getPMatrixOfCreateBasicCameraViewPerspectiveCamera(/* () */0); return /* tuple */[ state$2, uniformMatrix4fv, 0, targetData ]; }; var prepareAndExecForSendMMatrix = function (param) { var match = prepareGameObjects(sandbox, state[0]); var match$1 = match[2]; var state$1 = match[0]; var state$2 = TransformAPI$Wonderjs.setTransformLocalPosition(GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(match$1[1], state$1), /* tuple */[ 2, 3, 4 ], TransformAPI$Wonderjs.setTransformLocalPosition(GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(match$1[0], state$1), /* tuple */[ 1, 2, 3 ], state$1)); var uniformMatrix4fv = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var getUniformLocation = GLSLLocationTool$Wonderjs.getUniformLocation(0, sandbox, "u_mMatrix"); var state$3 = 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, Caml_option.some(getUniformLocation), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(uniformMatrix4fv), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$2); var state$4 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$3)); return /* tuple */[ state$4, uniformMatrix4fv, 0 ]; }; var prepareAndExecForDrawElement = function (param) { var match = prepareGameObjects(sandbox, state[0]); var match$1 = match[3]; 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, 1, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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), match[0]); var state$2 = DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1)); return /* tuple */[ state$2, drawElements, 1, /* tuple */[ match$1[0][0], match$1[1] ] ]; }; var prepareAndExec = function (shaderName) { return RenderInJobTool$Wonderjs.TestUseProgram[/* prepareAndExec */0](sandbox, state, shaderName); }; beforeEach((function () { sandbox[0] = Sinon$1.sandbox.create(); state[0] = TestTool$Wonderjs.initWithJobConfig(sandbox, undefined, undefined, _buildNoWorkerJobConfig(/* () */0), _buildRenderConfig(undefined, undefined, /* () */0), "\n {\n \"alpha\": true,\n \"depth\": true,\n \"stencil\": true,\n \"antialias\": true,\n \"premultiplied_alpha\": true,\n \"preserve_drawing_buffer\": false\n }\n ", /* () */0); return /* () */0; })); afterEach((function () { return Curry._1(Sinon.restoreSandbox, sandbox[0]); })); Wonder_jest.test("gl context->stencil should be true", (function (param) { return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](ViewTool$Wonderjs.unsafeGetContext(state[0])), /* record */[ /* alpha */true, /* depth */true, /* stencil */true, /* antialias */true, /* premultipliedAlpha */true, /* preserveDrawingBuffer */false ]); })); Wonder_jest.describe("test init outline_draw_origin_gameObjects,outline_draw_expand_gameObjects shaders", (function (param) { Wonder_jest.describe("test get attribute location", (function (param) { Wonder_jest.describe("test get a_position location", (function (param) { return Wonder_jest.test("test get location twice", (function (param) { var state$1 = state[0]; var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_position"); var state$2 = 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, Caml_option.some(getAttribLocation), undefined, undefined, undefined, 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); DirectorTool$Wonderjs.init(state$2); return Sinon.toCalledTwice(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_position", getAttribLocation))); })); })); return Wonder_jest.describe("test get a_normal location", (function (param) { return Wonder_jest.test("test get location once", (function (param) { var state$1 = state[0]; var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(undefined, sandbox, "a_normal"); var state$2 = 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, Caml_option.some(getAttribLocation), undefined, undefined, undefined, 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); DirectorTool$Wonderjs.init(state$2); return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, "a_normal", getAttribLocation))); })); })); })); Wonder_jest.describe("test get uniform location", (function (param) { Wonder_jest.describe("test get no_material_shader uniform location", (function (param) { return Wonder_jest.test("test get u_outlineColor location once", (function (param) { return RenderInJobTool$Wonderjs.testGetLocation(sandbox, "u_outlineColor", 1, DirectorTool$Wonderjs.init, state); })); })); Wonder_jest.describe("test get camera uniform location", (function (param) { return Wonder_jest.test("test get u_vMatrix location twice", (function (param) { return RenderInJobTool$Wonderjs.testGetLocation(sandbox, "u_vMatrix", 2, DirectorTool$Wonderjs.init, state); })); })); return Wonder_jest.describe("test get model uniform location", (function (param) { return Wonder_jest.test("test get u_mMatrix location twice", (function (param) { return RenderInJobTool$Wonderjs.testGetLocation(sandbox, "u_mMatrix", 2, DirectorTool$Wonderjs.init, state); })); })); })); return Wonder_jest.describe("test glsl", (function (param) { Wonder_jest.describe("test outline_draw_origin_gameObjects glsl", (function (param) { Wonder_jest.test("test vs", (function (param) { var match = RenderInJobTool$Wonderjs.prepareForJudgeGLSLNotExec(sandbox, state[0]); DirectorTool$Wonderjs.init(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSourceByCount(match[1], 0), /* :: */[ "attribute vec3 a_position;", /* :: */[ "uniform mat4 u_vMatrix;", /* :: */[ "uniform mat4 u_pMatrix;", /* :: */[ "uniform mat4 u_mMatrix;", /* :: */[ "mat4 mMatrix = u_mMatrix;", /* :: */[ "gl_Position = u_pMatrix * u_vMatrix * mMatrix * vec4(a_position, 1.0);", /* [] */0 ] ] ] ] ] ])), true); })); return Wonder_jest.test("test fs", (function (param) { var match = RenderInJobTool$Wonderjs.prepareForJudgeGLSLNotExec(sandbox, state[0]); DirectorTool$Wonderjs.init(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSourceByCount(match[1], 0), /* :: */[ "gl_FragColor = vec4(1.0);", /* [] */0 ])), true); })); })); return Wonder_jest.describe("test outline_draw_expand_gameObjects glsl", (function (param) { Wonder_jest.describe("test vs", (function (param) { Wonder_jest.test("send a_position, a_normal and mvp matrices", (function (param) { var match = RenderInJobTool$Wonderjs.prepareForJudgeGLSLNotExec(sandbox, state[0]); DirectorTool$Wonderjs.init(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSourceByCount(match[1], 2), /* :: */[ "attribute vec3 a_position;", /* :: */[ "attribute vec3 a_normal;", /* :: */[ "uniform mat4 u_vMatrix;", /* :: */[ "uniform mat4 u_pMatrix;", /* :: */[ "uniform mat4 u_mMatrix;", /* :: */[ "mat4 mMatrix = u_mMatrix;", /* [] */0 ] ] ] ] ] ])), true); })); return Wonder_jest.test("move a_position out towards a_normal", (function (param) { var match = RenderInJobTool$Wonderjs.prepareForJudgeGLSLNotExec(sandbox, state[0]); DirectorTool$Wonderjs.init(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getVsSourceByCount(match[1], 2), /* :: */[ "vec3 position = a_position.xyz + a_normal.xyz * 0.08;", /* :: */[ "gl_Position = u_pMatrix * u_vMatrix * mMatrix * vec4(position, 1.0);", /* [] */0 ] ])), true); })); })); return Wonder_jest.test("test fs", (function (param) { var match = RenderInJobTool$Wonderjs.prepareForJudgeGLSLNotExec(sandbox, state[0]); DirectorTool$Wonderjs.init(match[0]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](GLSLTool$Wonderjs.containMultiline(GLSLTool$Wonderjs.getFsSourceByCount(match[1], 2), /* :: */[ "uniform vec3 u_outlineColor;", /* :: */[ "gl_FragColor = vec4(u_outlineColor, 1.0);", /* [] */0 ] ])), true); })); })); })); })); Wonder_jest.describe("prepare gl state", (function (param) { Wonder_jest.test("enable stencil test", (function (param) { var enable = 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, 1, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(enable), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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]); DirectorTool$Wonderjs.runWithDefaultTime(DirectorTool$Wonderjs.init(state$1)); return Sinon.toCalledWith(/* array */[1], Wonder_jest.Expect[/* expect */0](enable)); })); Wonder_jest.test("set stencil op and func and mask", (function (param) { var stencilOp = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var stencilFunc = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var stencilMask = 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, 3, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1, 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, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(stencilMask), Caml_option.some(stencilFunc), Caml_option.some(stencilOp), undefined, undefined, /* () */0), state[0]); DirectorTool$Wonderjs.runWithDefaultTime(DirectorTool$Wonderjs.init(state$1)); var __x = Sinon.getCall(0, stencilOp); var __x$1 = Sinon.getCall(0, stencilFunc); var __x$2 = Sinon.getCall(0, stencilMask); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ SinonTool$Wonderjs.calledWithArg3(__x, 1, 1, 2), SinonTool$Wonderjs.calledWithArg3(__x$1, 3, 1, 255), SinonTool$Wonderjs.calledWith(__x$2, 255) ]), /* tuple */[ true, true, true ]); })); Wonder_jest.test("disable depth test", (function (param) { var disable = 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, 1, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(disable), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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]); DirectorTool$Wonderjs.runWithDefaultTime(DirectorTool$Wonderjs.init(state$1)); return Sinon.toCalledWith(/* array */[1], Wonder_jest.Expect[/* expect */0](Sinon.getCall(0, disable))); })); return Wonder_jest.test("not write to depth buffer and color buffer", (function (param) { var depthMask = Sinon.createEmptyStubWithJsObjSandbox(sandbox); var colorMask = 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, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(colorMask), Caml_option.some(depthMask), undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state[0]); DirectorTool$Wonderjs.runWithDefaultTime(DirectorTool$Wonderjs.init(state$1)); var __x = Sinon.getCall(0, depthMask); var __x$1 = Sinon.getCall(0, colorMask); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](/* tuple */[ SinonTool$Wonderjs.calledWith(__x, false), SinonTool$Wonderjs.calledWithArg4(__x$1, false, false, false, false) ]), /* tuple */[ true, true ]); })); })); Wonder_jest.describe("use draw origin gameObject program", (function (param) { return Wonder_jest.test("test", (function (param) { var match = prepareAndExec("outline_draw_origin_gameObjects"); var __x = Sinon.getCall(0, match[1]); return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](SinonTool$Wonderjs.calledWith(__x, ProgramTool$Wonderjs.unsafeGetProgram(match[2], match[0]))), true); })); })); Wonder_jest.describe("draw origin gameObjects", (function (param) { Wonder_jest.describe("send attribute data", (function (param) { Wonder_jest.describe("init vertex buffer", (function (param) { return Wonder_jest.test("bufferData", (function (param) { var state$1 = state; var match = prepareGameO