From 3f41d0da30cff0558f3d430a84448a392ba80979 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 2 May 2026 11:32:49 +0200 Subject: [PATCH] Test: Skip foliage generation in globally blocked terrain areas --- tests/domain/foliage-scatter.test.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/domain/foliage-scatter.test.ts b/tests/domain/foliage-scatter.test.ts index 96be6cea..7a2fa160 100644 --- a/tests/domain/foliage-scatter.test.ts +++ b/tests/domain/foliage-scatter.test.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from "vitest"; import { createTerrain, + createTerrainFoliageBlockerMask, createTerrainFoliageMask, type Terrain } from "../../src/document/terrains"; @@ -217,6 +218,31 @@ describe("foliage scatter generation", () => { expect(quarterMask.instanceCount).toBeGreaterThan(0); }); + it("skips candidates in globally blocked terrain areas", () => { + const unblocked = createMaskedTerrain({ maskValue: 1 }); + const blocked = createTerrain({ + ...unblocked, + foliageBlockerMask: createTerrainFoliageBlockerMask({ + resolutionX: unblocked.sampleCountX, + resolutionZ: unblocked.sampleCountZ, + values: new Array( + unblocked.sampleCountX * unblocked.sampleCountZ + ).fill(1) + }) + }); + const unblockedResult = generateForFixture({ + terrain: unblocked, + maxInstancesPerChunk: 1024 + }); + const blockedResult = generateForFixture({ + terrain: blocked, + maxInstancesPerChunk: 1024 + }); + + expect(unblockedResult.instanceCount).toBeGreaterThan(0); + expect(blockedResult).toEqual({ chunks: [], instanceCount: 0 }); + }); + it("uses layer density to affect generated instance counts", () => { const lowDensity = generateForFixture({ layer: createTestLayer({ density: 0.5 }),