From cad4dc7fc16f59fe2b6cf0dc452fd4a329511bd7 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 2 May 2026 11:32:36 +0200 Subject: [PATCH] Test: Add test case for applying foliage blocker mask brush patches with undo and redo --- tests/domain/terrain.command.test.ts | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/domain/terrain.command.test.ts b/tests/domain/terrain.command.test.ts index ac155ac5..f27793d7 100644 --- a/tests/domain/terrain.command.test.ts +++ b/tests/domain/terrain.command.test.ts @@ -7,6 +7,7 @@ import { createUpsertTerrainCommand } from "../../src/commands/upsert-terrain-co import { createEmptySceneDocument } from "../../src/document/scene-document"; import { createTerrain, + getTerrainFoliageBlockerMaskValueAtSample, getTerrainFoliageMask, getTerrainRenderDirtyBoundsSince } from "../../src/document/terrains"; @@ -293,4 +294,65 @@ describe("terrain commands", () => { )?.values[4] ).toBe(0.75); }); + + it("applies foliage blocker mask brush patches with undo and redo", () => { + const terrain = createTerrain({ + id: "terrain-foliage-blocker-mask-command", + sampleCountX: 3, + sampleCountZ: 3 + }); + const store = createEditorStore({ + initialDocument: { + ...createEmptySceneDocument({ name: "Terrain Foliage Blocker Scene" }), + terrains: { + [terrain.id]: terrain + } + } + }); + + store.executeCommand( + createApplyTerrainBrushPatchCommand({ + label: "Patch foliage blocker mask fixture", + patch: { + terrainId: terrain.id, + heightSamples: [], + paintWeights: [], + foliageMaskValues: [], + foliageBlockerMaskValues: [ + { + index: 4, + before: 0, + after: 0.85 + } + ] + } + }) + ); + + expect( + getTerrainFoliageBlockerMaskValueAtSample( + store.getState().document.terrains[terrain.id]!.foliageBlockerMask, + 1, + 1 + ) + ).toBe(0.85); + + expect(store.undo()).toBe(true); + expect( + getTerrainFoliageBlockerMaskValueAtSample( + store.getState().document.terrains[terrain.id]!.foliageBlockerMask, + 1, + 1 + ) + ).toBe(0); + + expect(store.redo()).toBe(true); + expect( + getTerrainFoliageBlockerMaskValueAtSample( + store.getState().document.terrains[terrain.id]!.foliageBlockerMask, + 1, + 1 + ) + ).toBe(0.85); + }); });