Test: Add test case for applying foliage blocker mask brush patches with undo and redo

This commit is contained in:
2026-05-02 11:32:36 +02:00
parent 7843593639
commit cad4dc7fc1

View File

@@ -7,6 +7,7 @@ import { createUpsertTerrainCommand } from "../../src/commands/upsert-terrain-co
import { createEmptySceneDocument } from "../../src/document/scene-document"; import { createEmptySceneDocument } from "../../src/document/scene-document";
import { import {
createTerrain, createTerrain,
getTerrainFoliageBlockerMaskValueAtSample,
getTerrainFoliageMask, getTerrainFoliageMask,
getTerrainRenderDirtyBoundsSince getTerrainRenderDirtyBoundsSince
} from "../../src/document/terrains"; } from "../../src/document/terrains";
@@ -293,4 +294,65 @@ describe("terrain commands", () => {
)?.values[4] )?.values[4]
).toBe(0.75); ).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);
});
}); });