mirror of
https://github.com/galacean/engine.git
synced 2026-07-06 17:44:23 +08:00
@@ -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
|
||||
|
||||
@@ -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", () => {
|
||||
|
||||
@@ -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(() => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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"
|
||||
);
|
||||
|
||||
@@ -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"
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user