From 6b6ca50b8c972c2045bf1c4c300b1c32156be2a1 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 2 Apr 2026 20:28:00 +0200 Subject: [PATCH] Add unit tests for viewport entity markers --- tests/unit/viewport-entity-markers.test.ts | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/unit/viewport-entity-markers.test.ts diff --git a/tests/unit/viewport-entity-markers.test.ts b/tests/unit/viewport-entity-markers.test.ts new file mode 100644 index 00000000..998f6660 --- /dev/null +++ b/tests/unit/viewport-entity-markers.test.ts @@ -0,0 +1,27 @@ +import { BoxGeometry, CylinderGeometry, SphereGeometry, TorusGeometry } from "three"; +import { describe, expect, it } from "vitest"; + +import { createSoundEmitterMarkerMeshes } from "../../src/viewport-three/viewport-entity-markers"; + +describe("createSoundEmitterMarkerMeshes", () => { + it("builds a speaker-like marker instead of a sphere", () => { + const meshes = createSoundEmitterMarkerMeshes(0x72d7c9, false); + + expect(meshes).toHaveLength(5); + expect(meshes[0].geometry).toBeInstanceOf(BoxGeometry); + expect(meshes[1].geometry).toBeInstanceOf(TorusGeometry); + expect(meshes[2].geometry).toBeInstanceOf(CylinderGeometry); + expect(meshes[3].geometry).toBeInstanceOf(TorusGeometry); + expect(meshes[4].geometry).toBeInstanceOf(CylinderGeometry); + expect(meshes.some((mesh) => mesh.geometry instanceof SphereGeometry)).toBe(false); + + expect(meshes[0].position).toEqual({ + x: 0, + y: 0, + z: 0 + }); + expect(meshes[1].position.y).toBeGreaterThan(meshes[3].position.y); + expect(meshes[1].position.z).toBeGreaterThan(0); + expect(meshes[3].position.z).toBeGreaterThan(0); + }); +});