From 33415c6d645b3f59d51e0065289ab6892d2afe81 Mon Sep 17 00:00:00 2001 From: Hu Song Date: Fri, 20 Aug 2021 11:40:32 +0800 Subject: [PATCH] Test for Background (#438) * test: test for background --- packages/core/tests/Background.test.ts | 70 ++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 packages/core/tests/Background.test.ts diff --git a/packages/core/tests/Background.test.ts b/packages/core/tests/Background.test.ts new file mode 100644 index 0000000000..5b20265e37 --- /dev/null +++ b/packages/core/tests/Background.test.ts @@ -0,0 +1,70 @@ +import { WebCanvas, WebGLRenderer } from "../../rhi-webgl"; +import { Engine, Texture2D } from "../src"; +import { BackgroundTextureFillMode } from "../src/enums/BackgroundTextureFillMode"; + +describe("Background Test", function () { + const hardwareRenderer = new WebGLRenderer(); + const canvas = new WebCanvas(document.createElement("canvas")); + canvas.width = 100; + canvas.height = 100; + const engine = new Engine(canvas, hardwareRenderer); + const scene = engine.sceneManager.activeScene; + it("set texture should be success", () => { + const texture = new Texture2D(engine, 50, 100); + scene.background._resizeBackgroundTexture(); + scene.background.texture = texture; + expect(scene.background.texture).toEqual(texture) + scene.background.texture = texture; + expect(scene.background.texture).toEqual(texture); + expect(scene.background.textureFillMode).toEqual(BackgroundTextureFillMode.AspectFitHeight); + scene.background.textureFillMode = BackgroundTextureFillMode.AspectFitHeight; + expect(scene.background.textureFillMode).toEqual(BackgroundTextureFillMode.AspectFitHeight); + }); + it("set texture fill should be success", () => { + scene.background.textureFillMode = BackgroundTextureFillMode.Fill; + const positions = engine._backgroundTextureMesh.getPositions(); + expect(positions[0].x).toBeCloseTo(-1); + expect(positions[0].y).toBeCloseTo(-1); + + expect(positions[1].x).toBeCloseTo(1); + expect(positions[1].y).toBeCloseTo(-1); + + expect(positions[2].x).toBeCloseTo(-1); + expect(positions[2].y).toBeCloseTo(1); + + expect(positions[3].x).toBeCloseTo(1); + expect(positions[3].y).toBeCloseTo(1); + }); + + it("set texture fill should be success", () => { + scene.background.textureFillMode = BackgroundTextureFillMode.AspectFitHeight; + const positions = engine._backgroundTextureMesh.getPositions(); + expect(positions[0].x).toBeCloseTo(-0.5); + expect(positions[0].y).toBeCloseTo(-1); + + expect(positions[1].x).toBeCloseTo(0.5); + expect(positions[1].y).toBeCloseTo(-1); + + expect(positions[2].x).toBeCloseTo(-0.5); + expect(positions[2].y).toBeCloseTo(1); + + expect(positions[3].x).toBeCloseTo(0.5); + expect(positions[3].y).toBeCloseTo(1); + }); + + it("set texture fill should be success", () => { + scene.background.textureFillMode = BackgroundTextureFillMode.AspectFitWidth; + const positions = engine._backgroundTextureMesh.getPositions(); + expect(positions[0].x).toBeCloseTo(-1); + expect(positions[0].y).toBeCloseTo(-2); + + expect(positions[1].x).toBeCloseTo(1); + expect(positions[1].y).toBeCloseTo(-2); + + expect(positions[2].x).toBeCloseTo(-1); + expect(positions[2].y).toBeCloseTo(2); + + expect(positions[3].x).toBeCloseTo(1); + expect(positions[3].y).toBeCloseTo(2); + }); +});