From 02f89c6621c9458d3737236bc44971c8889e0939 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 27 Apr 2026 16:10:41 +0200 Subject: [PATCH] Add unit test for viewport simulation membership signatures --- .../viewport-simulation-membership.test.ts | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tests/unit/viewport-simulation-membership.test.ts diff --git a/tests/unit/viewport-simulation-membership.test.ts b/tests/unit/viewport-simulation-membership.test.ts new file mode 100644 index 00000000..d27d19a0 --- /dev/null +++ b/tests/unit/viewport-simulation-membership.test.ts @@ -0,0 +1,100 @@ +import { describe, expect, it } from "vitest"; + +import { + createViewportSimulationMembershipSignatures +} from "../../src/viewport-three/viewport-host"; +import type { RuntimeSceneDefinition } from "../../src/runtime-three/runtime-scene-build"; + +describe("createViewportSimulationMembershipSignatures", () => { + it("tracks structural simulation membership without including per-frame values", () => { + const runtimeScene = { + localLights: { + pointLights: [ + { + entityId: "point-a", + intensity: 1 + } + ], + spotLights: [ + { + entityId: "spot-a", + intensity: 2 + } + ] + }, + volumes: { + light: [ + { + brushId: "volume-a", + lights: [{}, {}] + } + ] + }, + modelInstances: [ + { + instanceId: "model-a", + visible: true + } + ], + entities: { + interactables: [ + { + entityId: "interactable-a", + interactionEnabled: true + } + ] + } + } as RuntimeSceneDefinition; + + const changedValuesScene = { + ...runtimeScene, + localLights: { + pointLights: [ + { + entityId: "point-a", + intensity: 5 + } + ], + spotLights: [ + { + entityId: "spot-a", + intensity: 8 + } + ] + }, + modelInstances: [ + { + instanceId: "model-a", + visible: false + } + ], + entities: { + interactables: [ + { + entityId: "interactable-a", + interactionEnabled: false + } + ] + } + } as RuntimeSceneDefinition; + + const changedStructureScene = { + ...runtimeScene, + volumes: { + light: [ + { + brushId: "volume-a", + lights: [{}] + } + ] + } + } as RuntimeSceneDefinition; + + expect(createViewportSimulationMembershipSignatures(changedValuesScene)).toEqual( + createViewportSimulationMembershipSignatures(runtimeScene) + ); + expect( + createViewportSimulationMembershipSignatures(changedStructureScene) + ).not.toEqual(createViewportSimulationMembershipSignatures(runtimeScene)); + }); +});