wonder.js
Version:
295 lines (291 loc) • 32.4 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 TestTool$Wonderjs = require("../../../../tool/TestTool.js");
var ViewTool$Wonderjs = require("../../../../tool/service/device/ViewTool.js");
var EventTool$Wonderjs = require("../../../../unit/job/no_worker/tool/EventTool.js");
var FakeGlTool$Wonderjs = require("../../../../tool/gl/FakeGlTool.js");
var ExecIMGUITool$Wonderjs = require("../../../../tool/service/imgui/ExecIMGUITool.js");
var FakeGlTool$WonderImgui = require("wonder-imgui/lib/js/test/integration/tool/FakeGlTool.js");
var MainStateTool$Wonderjs = require("../../../../tool/service/state/MainStateTool.js");
var AssetIMGUITool$Wonderjs = require("../../../../tool/service/imgui/AssetIMGUITool.js");
var MouseEventTool$Wonderjs = require("../../../../unit/job/no_worker/tool/MouseEventTool.js");
var NoWorkerJobTool$Wonderjs = require("../../../../tool/service/job/no_worker/NoWorkerJobTool.js");
var RenderIMGUITool$Wonderjs = require("../../../../tool/service/imgui/RenderIMGUITool.js");
var ButtonIMGUITool$WonderImgui = require("wonder-imgui/lib/js/test/integration/tool/ButtonIMGUITool.js");
var RenderIMGUITool$WonderImgui = require("wonder-imgui/lib/js/test/integration/tool/RenderIMGUITool.js");
var NoWorkerJobConfigTool$Wonderjs = require("../../../../tool/service/noWorkerJob/NoWorkerJobConfigTool.js");
Wonder_jest.describe("test render imgui job", (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.initWithJobConfig(sandbox, undefined, undefined, NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"init_imgui\"\n }\n ]\n }\n ]\n ", "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"render_imgui\"\n }\n ]\n }\n ]\n ", "\n[\n {\n \"name\": \"init_imgui\"\n }\n]\n ", "\n[\n {\n \"name\": \"render_imgui\"\n }\n]\n ", /* () */0), undefined, undefined, /* () */0);
return /* () */0;
}));
afterEach((function () {
return Curry._1(Sinon.restoreSandbox, sandbox[0]);
}));
Wonder_jest.test("if not load imgui asset, not error", (function (param) {
var canvas = {
width: 100,
height: 200
};
var state$1 = ViewTool$Wonderjs.setCanvas(canvas, state[0]);
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, undefined, undefined, undefined, 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 Wonder_jest.Expect[/* toThrow */18](Wonder_jest.Expect[/* not__ */24](Wonder_jest.Expect[/* expect */0]((function (param) {
var state$3 = NoWorkerJobTool$Wonderjs.execInitJobs(state$2);
NoWorkerJobTool$Wonderjs.execLoopJobs(state$3);
return /* () */0;
}))));
}));
return Wonder_jest.describe("else, render imgui", (function (param) {
Wonder_jest.describe("test render image", (function (param) {
beforeEach((function () {
state[0] = AssetIMGUITool$Wonderjs.prepareFontAsset(state[0]);
return /* () */0;
}));
return Wonder_jest.test("send imgui buffers data", (function (param) {
var state$1 = RenderIMGUITool$Wonderjs.prepareFntData(state[0]);
var canvas = {
width: 1000,
height: 500
};
var state$2 = ViewTool$Wonderjs.setCanvas(canvas, state$1);
var getExtension = RenderIMGUITool$WonderImgui.buildNoVAOExtension(sandbox);
var bufferData = Sinon.createEmptyStubWithJsObjSandbox(sandbox);
var state$3 = FakeGlTool$Wonderjs.setFakeGl(FakeGlTool$WonderImgui.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, 1, 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, Caml_option.some(getExtension), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, Caml_option.some(bufferData), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), state$2);
var match = RenderIMGUITool$WonderImgui.buildImageData(/* () */0);
var match$1 = match[0];
var textureId1 = match$1[2];
var match$2 = match$1[1];
var imageT11 = match$2[3];
var imageS11 = match$2[2];
var imageT01 = match$2[1];
var imageS01 = match$2[0];
var match$3 = match$1[0];
var imageHeight1 = match$3[3];
var imageWidth1 = match$3[2];
var imageY1 = match$3[1];
var imageX1 = match$3[0];
var image1Data = /* array */[
50,
60,
50,
310,
200,
60,
200,
310
];
var state$4 = ExecIMGUITool$Wonderjs.addExecFuncData(state$3, undefined, undefined, undefined, Caml_option.some((function (param, imguiAPIJsObj, state) {
var imageFunc = imguiAPIJsObj.image;
return imageFunc(/* tuple */[
imageX1,
imageY1,
imageWidth1,
imageHeight1
], /* tuple */[
imageS01,
imageT01,
imageS11,
imageT11
], textureId1, state);
})), /* () */0);
var state$5 = NoWorkerJobTool$Wonderjs.execInitJobs(state$4);
var bufferDataCallCountAfterInit = Sinon.getCallCount(bufferData);
NoWorkerJobTool$Wonderjs.execLoopJobs(state$5);
return Sinon.toCalledWith(/* array */[
1,
new Float32Array(image1Data),
2
], Wonder_jest.Expect[/* expect */0](Sinon.getCall(bufferDataCallCountAfterInit + 0 | 0, bufferData)));
}));
}));
return Wonder_jest.describe("test render button", (function (param) {
var _prepareState = function (param) {
state[0] = TestTool$Wonderjs.initWithJobConfigWithoutBuildFakeDom(sandbox, undefined, undefined, undefined, undefined, undefined, NoWorkerJobConfigTool$Wonderjs.buildNoWorkerJobConfig(undefined, "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"init_event\"\n },\n {\n \"name\": \"init_imgui\"\n }\n ]\n }\n ]\n ", "\n [\n {\n \"name\": \"default\",\n \"jobs\": [\n {\n \"name\": \"render_imgui\"\n }\n ]\n }\n ]\n ", "\n[\n\n {\n \"name\": \"init_event\"\n },\n {\n \"name\": \"init_imgui\"\n }\n]\n ", "\n[\n {\n \"name\": \"render_imgui\"\n }\n]\n ", /* () */0), undefined, /* () */0);
return RenderIMGUITool$Wonderjs.prepareIMGUI(state);
};
Wonder_jest.describe("test mousedown button", (function (param) {
return Wonder_jest.describe("test color buffer data", (function (param) {
var _prepareAndExec = function (setDefaultSkinDataFunc) {
var state = _prepareState(/* () */0);
var match = RenderIMGUITool$Wonderjs.prepareGl(sandbox, state);
var bufferData = match[3];
var buttonData = ButtonIMGUITool$WonderImgui.buildButtonData1(/* () */0);
var match$1 = buttonData[0];
var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(match[0], undefined, Caml_option.some(buttonData), undefined, Caml_option.some((function (customData, imguiAPIJsObj, state) {
var match = customData[0];
var buttonFunc = imguiAPIJsObj.button;
return buttonFunc(/* tuple */[
/* tuple */[
match[0],
match[1],
match[2],
match[3]
],
customData[1]
], null, state)[0];
})), /* () */0);
var state$2 = NoWorkerJobTool$Wonderjs.execInitJobs(state$1);
var state$3 = Curry._1(setDefaultSkinDataFunc, state$2);
var bufferDataCallCountAfterInit = Sinon.getCallCount(bufferData);
var state$4 = MainStateTool$Wonderjs.setState(state$3);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$4), MouseEventTool$Wonderjs.buildMouseEvent(match$1[0], match$1[1], undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$4);
var state$5 = MainStateTool$Wonderjs.unsafeGetState(/* () */0);
var state$6 = NoWorkerJobTool$Wonderjs.execLoopJobs(state$5);
return /* tuple */[
state$6,
match[1],
match[2],
bufferDataCallCountAfterInit,
bufferData
];
};
Wonder_jest.test("test fontTexture program", (function (param) {
var match = _prepareAndExec((function (state) {
return RenderIMGUITool$Wonderjs.setDefaultSkinData(state, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* array */[
0.1,
0.2,
0.3
], /* () */0);
}));
return Sinon.toCalledWith(/* array */[
match[1],
new Float32Array(/* array */[
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3
]),
match[2]
], Wonder_jest.Expect[/* expect */0](Sinon.getCall(match[3] + 5 | 0, match[4])));
}));
return Wonder_jest.test("test noTexture program", (function (param) {
var match = _prepareAndExec((function (state) {
return RenderIMGUITool$Wonderjs.setDefaultSkinData(state, undefined, undefined, /* array */[
0.1,
0.2,
0.3
], undefined, undefined, undefined, undefined, undefined, /* () */0);
}));
return Sinon.toCalledWith(/* array */[
match[1],
new Float32Array(/* array */[
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3,
0.1,
0.2,
0.3
]),
match[2]
], Wonder_jest.Expect[/* expect */0](Sinon.getCall(match[3] + 9 | 0, match[4])));
}));
}));
}));
Wonder_jest.describe("test click button", (function (param) {
return Wonder_jest.test("test button is click", (function (param) {
var state = _prepareState(/* () */0);
var match = RenderIMGUITool$Wonderjs.prepareGl(sandbox, state);
var buttonData = ButtonIMGUITool$WonderImgui.buildButtonData1(/* () */0);
var match$1 = buttonData[0];
var isClick = /* record */[/* contents */false];
var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(match[0], undefined, Caml_option.some(buttonData), undefined, Caml_option.some((function (customData, imguiAPIJsObj, state) {
var match = customData[0];
var buttonFunc = imguiAPIJsObj.button;
var match$1 = buttonFunc(/* tuple */[
/* tuple */[
match[0],
match[1],
match[2],
match[3]
],
customData[1]
], null, state);
isClick[0] = match$1[1];
return match$1[0];
})), /* () */0);
var state$2 = NoWorkerJobTool$Wonderjs.execInitJobs(state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(match$1[0], match$1[1], undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mouseup", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.restore(state$3);
var state$4 = MainStateTool$Wonderjs.unsafeGetState(/* () */0);
NoWorkerJobTool$Wonderjs.execLoopJobs(state$4);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](isClick[0]), true);
}));
}));
return Wonder_jest.describe("reset io data->point event state when point up", (function (param) {
return Wonder_jest.test("test button isn't click after point up", (function (param) {
var state = _prepareState(/* () */0);
var match = RenderIMGUITool$Wonderjs.prepareGl(sandbox, state);
var buttonData = ButtonIMGUITool$WonderImgui.buildButtonData1(/* () */0);
var match$1 = buttonData[0];
var isClick = /* record */[/* contents */false];
var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(match[0], undefined, Caml_option.some(buttonData), undefined, Caml_option.some((function (customData, imguiAPIJsObj, state) {
var match = customData[0];
var buttonFunc = imguiAPIJsObj.button;
var match$1 = buttonFunc(/* tuple */[
/* tuple */[
match[0],
match[1],
match[2],
match[3]
],
customData[1]
], null, state);
isClick[0] = match$1[1];
return match$1[0];
})), /* () */0);
var state$2 = NoWorkerJobTool$Wonderjs.execInitJobs(state$1);
var state$3 = MainStateTool$Wonderjs.setState(state$2);
EventTool$Wonderjs.triggerDomEvent("mousemove", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(match$1[0], match$1[1], undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
EventTool$Wonderjs.triggerDomEvent("mouseup", EventTool$Wonderjs.getPointEventBindedDom(state$3), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
var state$4 = EventTool$Wonderjs.restore(state$3);
var state$5 = NoWorkerJobTool$Wonderjs.execLoopJobs(state$4);
var state$6 = MainStateTool$Wonderjs.setState(state$5);
EventTool$Wonderjs.triggerDomEvent("mousedown", EventTool$Wonderjs.getPointEventBindedDom(state$6), MouseEventTool$Wonderjs.buildMouseEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0));
var state$7 = EventTool$Wonderjs.restore(state$6);
NoWorkerJobTool$Wonderjs.execLoopJobs(state$7);
return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](isClick[0]), false);
}));
}));
}));
}));
}));
/* Not a pure module */