Add validation test for foliage mask references and ranges in terrain

This commit is contained in:
2026-05-02 04:22:16 +02:00
parent 7a3bc30aaa
commit c98e12dafc

View File

@@ -9,6 +9,7 @@ import {
createSceneDocumentFromProject, createSceneDocumentFromProject,
createEmptyProjectDocument createEmptyProjectDocument
} from "../../src/document/scene-document"; } from "../../src/document/scene-document";
import { createTerrain, createTerrainFoliageMask } from "../../src/document/terrains";
import { validateSceneDocument } from "../../src/document/scene-document-validation"; import { validateSceneDocument } from "../../src/document/scene-document-validation";
import { BUNDLED_FOLIAGE_PROTOTYPES } from "../../src/foliage/bundled-foliage-manifest"; import { BUNDLED_FOLIAGE_PROTOTYPES } from "../../src/foliage/bundled-foliage-manifest";
import { import {
@@ -116,6 +117,40 @@ describe("foliage document foundations", () => {
); );
}); });
it("validates terrain foliage mask layer references and ranges", () => {
const document = createEmptySceneDocument();
const terrain = createTerrain({
id: "terrain-invalid-foliage-mask",
sampleCountX: 2,
sampleCountZ: 2,
foliageMasks: {
"missing-foliage-layer": createTerrainFoliageMask({
layerId: "missing-foliage-layer",
resolutionX: 2,
resolutionZ: 2,
values: [0, 0.25, 0.5, 1]
})
}
});
document.terrains[terrain.id] = {
...terrain,
foliageMasks: {
"missing-foliage-layer": {
...terrain.foliageMasks["missing-foliage-layer"]!,
values: [0, 2, 0.5, 1]
}
}
};
expect(validateSceneDocument(document).errors).toEqual(
expect.arrayContaining([
expect.objectContaining({ code: "missing-terrain-foliage-mask-layer" }),
expect.objectContaining({ code: "invalid-terrain-foliage-mask-value" })
])
);
});
it("validates custom project-asset LOD references", () => { it("validates custom project-asset LOD references", () => {
const document = createEmptySceneDocument(); const document = createEmptySceneDocument();
const prototype = createFoliagePrototype({ const prototype = createFoliagePrototype({