wonder.js
Version:
100 lines (93 loc) • 12.2 kB
JavaScript
;
var Curry = require("bs-platform/lib/js/curry.js");
var Sinon = require("wonder-bs-sinon/lib/js/src/sinon.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 FakeGlTool$Wonderjs = require("../../gl/FakeGlTool.js");
var DirectorTool$Wonderjs = require("../../core/DirectorTool.js");
var GeometryTool$Wonderjs = require("../../service/geometry/GeometryTool.js");
var InstanceTool$Wonderjs = require("../../service/instance/InstanceTool.js");
var RenderJobsTool$Wonderjs = require("../../job/no_worker/loop/RenderJobsTool.js");
var GLSLLocationTool$Wonderjs = require("../../service/location/GLSLLocationTool.js");
var CreateRenderStateMainService$Wonderjs = require("../../../../src/service/state/main/render/CreateRenderStateMainService.js");
function testProgram(sandbox, prepareFunc, state) {
var _prepareForUseProgram = function (sandbox, state) {
var match = Curry._2(prepareFunc, sandbox, state);
var createProgram = Sinon.returns(1, Sinon.onCall(0, Sinon.createEmptyStubWithJsObjSandbox(sandbox)));
var useProgram = 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, 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, Caml_option.some(useProgram), undefined, /* () */0), match[0]);
return /* tuple */[
state$1,
1,
createProgram,
useProgram
];
};
Wonder_jest.test("create program and use program only once", (function (param) {
var match = _prepareForUseProgram(sandbox, state[0]);
DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(match[0]));
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(match[2])), 1);
}));
return Wonder_jest.test("only use sourceInstance's gameObject's program", (function (param) {
var match = _prepareForUseProgram(sandbox, state[0]);
DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(match[0]));
return Sinon.toCalledWith(/* array */[match[1]], Wonder_jest.Expect[/* expect */0](match[3]));
}));
}
function testAttachBufferToAttribute(sandbox, param, prepareFunc, state) {
var size = param[2];
var callIndex = param[1];
var name = param[0];
return Wonder_jest.test("test attach buffer to attribute", (function (param) {
var match = Curry._2(prepareFunc, sandbox, state[0]);
var vertexAttribPointer = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var getAttribLocation = GLSLLocationTool$Wonderjs.getAttribLocation(0, sandbox, name);
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, 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, Caml_option.some(getAttribLocation), undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(vertexAttribPointer), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), match[0]);
DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1));
return Sinon.toCalledWith(/* array */[
0,
size,
1,
false,
0,
0
], Wonder_jest.Expect[/* expect */0](Sinon.getCall(callIndex, vertexAttribPointer)));
}));
}
function testSendShaderUniformData(sandbox, param, state) {
var createSourceInstanceGameObjectFunc = param[1];
var prepareFunc = param[0];
return Wonder_jest.test("send shader uniform record only once per shader", (function (param) {
var match = Curry._2(prepareFunc, sandbox, state[0]);
var match$1 = Curry._2(createSourceInstanceGameObjectFunc, sandbox, match[0]);
var match$2 = RenderJobsTool$Wonderjs.prepareGameObject(sandbox, match$1[0]);
var uniformMatrix4fv = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var getUniformLocation = GLSLLocationTool$Wonderjs.getUniformLocation(1, sandbox, "u_vMatrix");
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$2[0]);
DirectorTool$Wonderjs.runWithDefaultTime(RenderJobsTool$Wonderjs.init(state$1));
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](Sinon.getCallCount(Sinon.withOneArg(1, uniformMatrix4fv))), 2);
}));
}
function testDrawElementsInstancedANGLE(sandbox, prepareFunc, getIndicesCountFunc, state) {
return Wonder_jest.test("drawElementsInstancedANGLE", (function (param) {
var match = Curry._2(prepareFunc, sandbox, state[0]);
var state$1 = match[0];
var drawElementsInstancedANGLE = InstanceTool$Wonderjs.getExtensionInstancedArrays(state$1).drawElementsInstancedANGLE;
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, 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, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$1);
var state$3 = RenderJobsTool$Wonderjs.init(state$2);
var state$4 = DirectorTool$Wonderjs.runWithDefaultTime(state$3);
return Sinon.toCalledWith(/* array */[
1,
Curry._2(getIndicesCountFunc, match[2][0], CreateRenderStateMainService$Wonderjs.createRenderState(state$4)),
GeometryTool$Wonderjs.getIndexType(CreateRenderStateMainService$Wonderjs.createRenderState(state$4)),
Caml_int32.imul(GeometryTool$Wonderjs.getIndexTypeSize(CreateRenderStateMainService$Wonderjs.createRenderState(state$4)), 0),
2
], Wonder_jest.Expect[/* expect */0](drawElementsInstancedANGLE));
}));
}
exports.testProgram = testProgram;
exports.testAttachBufferToAttribute = testAttachBufferToAttribute;
exports.testSendShaderUniformData = testSendShaderUniformData;
exports.testDrawElementsInstancedANGLE = testDrawElementsInstancedANGLE;
/* Sinon Not a pure module */