diff --git a/packages/core/tests/Component.test.ts b/packages/core/tests/Component.test.ts index 55053a14f..559fe16a3 100644 --- a/packages/core/tests/Component.test.ts +++ b/packages/core/tests/Component.test.ts @@ -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 diff --git a/packages/core/tests/Engine.test.ts b/packages/core/tests/Engine.test.ts index 8a5432471..6b12ba81e 100644 --- a/packages/core/tests/Engine.test.ts +++ b/packages/core/tests/Engine.test.ts @@ -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 = { - 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", () => { diff --git a/packages/core/tests/Entity.test.ts b/packages/core/tests/Entity.test.ts index cd7d719b0..c25e9227e 100644 --- a/packages/core/tests/Entity.test.ts +++ b/packages/core/tests/Entity.test.ts @@ -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(() => { diff --git a/packages/core/tests/ResourceManager.test.ts b/packages/core/tests/ResourceManager.test.ts index 0cb42e7cf..05429df88 100644 --- a/packages/core/tests/ResourceManager.test.ts +++ b/packages/core/tests/ResourceManager.test.ts @@ -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 { @@ -28,7 +29,6 @@ class TestRefObject extends RefObject { class TestJsonLoader extends Loader { load(item: LoadItem, resourceManager: ResourceManager): AssetPromise { return new AssetPromise((resolve) => { - // console.log(resourceManager.engine.id) setTimeout(() => { resolve(new TestRefObject(resourceManager.engine)); }, 300); @@ -37,7 +37,8 @@ class TestJsonLoader extends Loader { } 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(path); diff --git a/packages/core/tests/Scene.test.ts b/packages/core/tests/Scene.test.ts index 7c77361e7..48647a385 100644 --- a/packages/core/tests/Scene.test.ts +++ b/packages/core/tests/Scene.test.ts @@ -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(); diff --git a/packages/core/tests/script.test.ts b/packages/core/tests/script.test.ts index 788176ed3..6d0873e35 100644 --- a/packages/core/tests/script.test.ts +++ b/packages/core/tests/script.test.ts @@ -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(); diff --git a/packages/loader/test/JSONLoader.test.ts b/packages/loader/test/JSONLoader.test.ts index 2552ece76..6223d6b7c 100644 --- a/packages/loader/test/JSONLoader.test.ts +++ b/packages/loader/test/JSONLoader.test.ts @@ -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" ); diff --git a/packages/loader/test/TextLoader.test.ts b/packages/loader/test/TextLoader.test.ts index 42dea2a09..96138c666 100644 --- a/packages/loader/test/TextLoader.test.ts +++ b/packages/loader/test/TextLoader.test.ts @@ -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" );