wonder.js
Version:
133 lines (129 loc) • 18.9 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 GLSLTool$Wonderjs = require("../../../../tool/render/core/GLSLTool.js");
var TestTool$Wonderjs = require("../../../../tool/TestTool.js");
var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js");
var DirectorTool$Wonderjs = require("../../../../tool/core/DirectorTool.js");
var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js");
var GLSLLocationTool$Wonderjs = require("../../../../tool/service/location/GLSLLocationTool.js");
var NoWorkerJobConfigTool$Wonderjs = require("../../../../tool/service/noWorkerJob/NoWorkerJobConfigTool.js");
Wonder_jest.describe("test init no material shader job", (function (param) {
var sandbox = Sinon.getSandboxDefaultVal(/* () */0);
var state = /* record */[/* contents */MainStateTool$Wonderjs.createState(/* () */0)];
var _buildNoWorkerJobConfig = function (param) {
return NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"preget_glslData\"\n },\n {\n \"name\": \"init_no_material_shader\"\n }\n ]\n }\n ]\n ", undefined, "\n[\n {\n \"name\": \"preget_glslData\"\n },\n {\n \"name\": \"init_no_material_shader\"\n }\n]\n ", undefined, /* () */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_expand_gameObjects\",\n \"shader_libs\": [\n {\n \"type\": \"group\",\n \"name\": \"top\"\n },\n {\n \"name\": \"normal\"\n },\n {\n \"name\": \"modelMatrix_noInstance\"\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\": \"end\",\n \"variables\": {\n \"attributes\": [\n {\n \"buffer\": 3\n }\n ]\n }\n }\n]\n ";
return /* tuple */[
shaders,
shaderLibs
];
};
beforeEach((function () {
sandbox[0] = Sinon$1.sandbox.create();
state[0] = TestTool$Wonderjs.initWithJobConfigWithoutBuildFakeDom(sandbox, undefined, undefined, undefined, undefined, undefined, _buildNoWorkerJobConfig(/* () */0), _buildRenderConfig(undefined, undefined, /* () */0), /* () */0);
return /* () */0;
}));
afterEach((function () {
return Curry._1(Sinon.restoreSandbox, sandbox[0]);
}));
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", (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.toCalledOnce(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", (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) {
var testGetLocation = function (sandbox, name, execFunc, state) {
var state$1 = state[0];
var getUniformLocation = GLSLLocationTool$Wonderjs.getUniformLocation(undefined, sandbox, name);
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, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$1);
Curry._1(execFunc, state$2);
return Sinon.toCalledOnce(Wonder_jest.Expect[/* expect */0](Sinon.withTwoArgs(Sinon$1.match.any, name, getUniformLocation)));
};
Wonder_jest.describe("test get no_material_shader uniform location", (function (param) {
return Wonder_jest.test("test get u_outlineColor location", (function (param) {
return testGetLocation(sandbox, "u_outlineColor", DirectorTool$Wonderjs.init, state);
}));
}));
Wonder_jest.describe("test get camera uniform location", (function (param) {
return Wonder_jest.test("test get u_vMatrix location", (function (param) {
return testGetLocation(sandbox, "u_vMatrix", DirectorTool$Wonderjs.init, state);
}));
}));
return Wonder_jest.describe("test get model uniform location", (function (param) {
return Wonder_jest.test("test get u_mMatrix location", (function (param) {
return testGetLocation(sandbox, "u_mMatrix", DirectorTool$Wonderjs.init, state);
}));
}));
}));
return Wonder_jest.describe("test glsl", (function (param) {
var _prepareForJudgeGLSLNotExec = function (sandbox, state) {
var shaderSource = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var createProgram = 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, Caml_option.some(shaderSource), undefined, undefined, undefined, Caml_option.some(createProgram), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 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);
return /* tuple */[
state$1,
shaderSource
];
};
Wonder_jest.test("test vs", (function (param) {
var match = _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.getVsSource(match[1]), /* :: */[
"attribute vec3 a_position;",
/* :: */[
"attribute vec3 a_normal;",
/* :: */[
"uniform mat4 u_vMatrix;",
/* :: */[
"uniform mat4 u_pMatrix;",
/* :: */[
"uniform mat4 u_mMatrix;",
/* :: */[
"mat4 mMatrix = u_mMatrix;",
/* :: */[
"gl_Position = u_pMatrix * u_vMatrix * mMatrix * vec4(position, 1.0);",
/* [] */0
]
]
]
]
]
]
])), true);
}));
return Wonder_jest.test("test fs", (function (param) {
var match = _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.getFsSource(match[1]), /* :: */[
"uniform vec3 u_outlineColor;",
/* :: */[
"gl_FragColor = vec4(u_outlineColor, 1.0);",
/* [] */0
]
])), true);
}));
}));
}));
/* Not a pure module */