test: fix unit test (#184)

test: improve unit test
This commit is contained in:
GuoLei
2021-04-13 10:28:20 +08:00
committed by GitHub
parent 4a9c0c9c49
commit 1df2f964aa
8 changed files with 49 additions and 85 deletions

View File

@@ -1,4 +1,4 @@
import { WebGLEngine } from "../../rhi-webgl/src";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
import { Entity, Component, Engine, Scene } from "../src/index";
class TestComponent extends Component {}
@@ -29,7 +29,7 @@ describe("Component", () => {
const canvasDOM = document.createElement("canvas");
canvasDOM.getContext = getContext;
const engine: Engine = new Engine({ width: 1024, height: 1024 }, { init: jest.fn(), canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const scene = engine.sceneManager.activeScene;
const root = new Entity(engine, "root");
//@ts-ignore

View File

@@ -2,88 +2,50 @@ import { WebCanvas, WebGLEngine, WebGLRenderer } from "../../rhi-webgl/src";
import { Engine } from "../src";
describe("Engine test", () => {
const getContext = jest.fn().mockReturnValue({
canvas: { width: 1024, height: 1024 },
getParameter: jest.fn(),
enable: jest.fn(),
disable: jest.fn(),
colorMask: jest.fn(),
depthMask: jest.fn(),
blendFunc: jest.fn(),
blendFuncSeparate: jest.fn(),
blendEquationSeparate: jest.fn(),
blendColor: jest.fn(),
cullFace: jest.fn(),
frontFace: jest.fn(),
depthFunc: jest.fn(),
depthRange: jest.fn(),
polygonOffset: jest.fn(),
stencilFunc: jest.fn(),
stencilFuncSeparate: jest.fn(),
stencilMask: jest.fn(),
stencilOpSeparate: jest.fn(),
getExtension: jest.fn(),
bindFramebuffer: jest.fn(),
viewport: jest.fn(),
clearColor: jest.fn(),
clear: jest.fn()
});
const canvasDOM = document.createElement("canvas");
canvasDOM.getContext = getContext;
const offscreenCanvasDOM = <OffscreenCanvas | any>{
width: 1024,
height: 1024,
getContext
};
describe("test - create and destroy engine ", () => {
describe("Web platform engine", () => {
it("use Engine", () => {
const canvas = new WebCanvas(canvasDOM);
const rhi = new WebGLRenderer();
const engine = new Engine(canvas, rhi);
it("use Engine", () => {
const canvas = new WebCanvas(document.createElement("canvas"));
const rhi = new WebGLRenderer();
const engine = new Engine(canvas, rhi);
expect(engine.canvas).toBe(canvas);
expect(engine._hardwareRenderer).toBe(rhi);
});
expect(engine.canvas).toBe(canvas);
expect(engine._hardwareRenderer).toBe(rhi);
});
it("Use WebGLEngine", () => {
const engine = new WebGLEngine(canvasDOM);
it("Use WebGLEngine", () => {
const engine = new WebGLEngine(document.createElement("canvas"));
expect(engine._hardwareRenderer).toBeInstanceOf(WebGLRenderer);
});
expect(engine._hardwareRenderer).toBeInstanceOf(WebGLRenderer);
});
it("Use offscreen canvas", () => {
const canvas = new WebCanvas(offscreenCanvasDOM);
const rhi = new WebGLRenderer();
const engine = new Engine(canvas, rhi);
it("Use offscreen canvas", () => {
const canvas = new WebCanvas(new OffscreenCanvas(1024, 1024));
const rhi = new WebGLRenderer();
const engine = new Engine(canvas, rhi);
expect(engine.canvas).toBe(canvas);
expect(engine._hardwareRenderer).toBeInstanceOf(WebGLRenderer);
expect(canvas.width).toBe(1024);
expect(canvas.height).toBe(1024);
});
expect(engine.canvas).toBe(canvas);
expect(engine._hardwareRenderer).toBeInstanceOf(WebGLRenderer);
expect(canvas.width).toBe(1024);
expect(canvas.height).toBe(1024);
});
it("Destroy engine", () => {
const engine = new WebGLEngine(canvasDOM);
it("Destroy engine", () => {
const engine = new WebGLEngine(document.createElement("canvas"));
engine.destroy();
expect(engine.sceneManager).toBeNull();
expect(engine.isPaused).toBeTruthy();
});
engine.destroy();
expect(engine.sceneManager).toBeNull();
expect(engine.isPaused).toBeTruthy();
});
});
describe("test - sceneManager", () => {
it("Default scene", () => {
const engine = new WebGLEngine(canvasDOM);
const engine = new WebGLEngine(document.createElement("canvas"));
expect(engine.sceneManager.activeScene).not.toBeNull();
});
it("Destroy scene", () => {
const engine = new WebGLEngine(canvasDOM);
const engine = new WebGLEngine(document.createElement("canvas"));
const scene = engine.sceneManager.activeScene;
scene.destroy();
@@ -92,7 +54,7 @@ describe("Engine test", () => {
});
describe("test - tick/vSync", () => {
const engine = new WebGLEngine(canvasDOM);
const engine = new WebGLEngine(document.createElement("canvas"));
const mockTick = (engine.update = jest.fn());
it("Open vsync - pause/resume", () => {

View File

@@ -1,9 +1,9 @@
import { Engine } from "../src/Engine";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
import { Entity, Component } from "../src/index";
class TestComponent extends Component {}
describe("Entity", () => {
const engine = new Engine({ width: 1024, height: 1024 }, { init: jest.fn(), canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const scene = engine.sceneManager.activeScene;
engine.run();
beforeEach(() => {

View File

@@ -1,10 +1,11 @@
import { Loader } from "../src/asset/Loader";
import { LoadItem } from "../src/asset/LoadItem";
import { resourceLoader, ResourceManager } from "../src/asset/ResourceManager";
import { AssetType } from "../src/asset/AssetType";
import { WebGLEngine } from "../../rhi-webgl/src";
import { Engine } from "../src";
import { AssetPromise } from "../src/asset/AssetPromise";
import { AssetType } from "../src/asset/AssetType";
import { Loader } from "../src/asset/Loader";
import { LoadItem } from "../src/asset/LoadItem";
import { RefObject } from "../src/asset/RefObject";
import { resourceLoader, ResourceManager } from "../src/asset/ResourceManager";
@resourceLoader(AssetType.Text, ["txt"], false)
class TestLoader extends Loader<string> {
@@ -28,7 +29,6 @@ class TestRefObject extends RefObject {
class TestJsonLoader extends Loader<RefObject> {
load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<RefObject> {
return new AssetPromise((resolve) => {
// console.log(resourceManager.engine.id)
setTimeout(() => {
resolve(new TestRefObject(resourceManager.engine));
}, 300);
@@ -37,7 +37,8 @@ class TestJsonLoader extends Loader<RefObject> {
}
describe("test resource manager", () => {
const engine = new Engine(null, { init: () => {}, canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
engine._resourceManager = new ResourceManager(engine);
describe("Add Loader Test", function () {
it("load custom loader url", () => {
return expect(engine.resourceManager.load("xx.txt")).resolves.toEqual("test");
@@ -58,7 +59,8 @@ describe("test resource manager", () => {
});
});
const jsonEngine = new Engine(null, { init: () => {}, canIUse: jest.fn() });
const jsonEngine = new WebGLEngine(document.createElement("canvas"));
jsonEngine._resourceManager = new ResourceManager(engine);
it("test delete object", () => {
const path = "xaa.json";
const promiseAA = jsonEngine.resourceManager.load<RefObject>(path);

View File

@@ -1,8 +1,8 @@
import { Engine } from "../src/Engine";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
import { Entity } from "../src/index";
describe("Scene test", () => {
const engine = new Engine({ width: 1024, height: 1024 }, { init: jest.fn(), canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const scene = engine.sceneManager.activeScene;
engine.run();

View File

@@ -1,8 +1,8 @@
import { Engine } from "../src/Engine";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
import { Component, Entity, Script } from "../src/index";
describe("Script", () => {
const engine = new Engine({ width: 1024, height: 1024 }, { init: jest.fn(), canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const scene = engine.sceneManager.activeScene;
engine.run();

View File

@@ -1,9 +1,9 @@
import "../src/JSONLoader";
import { Engine } from "@oasis-engine/core";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
describe("text loader test", () => {
it("text loader test", () => {
const engine = new Engine(null, { init: jest.fn(), canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const promise = engine.resourceManager.load(
"https://gw.alipayobjects.com/os/bmw-prod/73cba7a4-221b-4e32-8db6-c87968cf7ce0.json"
);

View File

@@ -1,9 +1,9 @@
import { Engine } from "@oasis-engine/core";
import { WebGLEngine } from "../../rhi-webgl/src/WebGLEngine";
import "../src/TextLoader";
describe("text loader test", () => {
it("text loader test", () => {
const engine = new Engine(null, { init: () => {}, canIUse: jest.fn() });
const engine = new WebGLEngine(document.createElement("canvas"));
const promise = engine.resourceManager.load(
"https://gw.alipayobjects.com/os/bmw-prod/d64cb568-bf86-41f0-8c9e-d1be9424bd98.txt"
);