From 92310ef839374288d0d9fd2464c4a3a2f5d4b1e5 Mon Sep 17 00:00:00 2001 From: CeeVeeR Date: Fri, 2 Oct 2026 12:15:33 +0200 Subject: [PATCH] test: - Added decorator shared variance style test, expected to fail until the fix Ref.: https://github.com/VolmitSoftware/Iris/issues/1251 --- .../IrisDecoratorVarianceGeneratorTest.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 core/src/test/java/art/arcane/iris/generation/decoration/IrisDecoratorVarianceGeneratorTest.java diff --git a/core/src/test/java/art/arcane/iris/generation/decoration/IrisDecoratorVarianceGeneratorTest.java b/core/src/test/java/art/arcane/iris/generation/decoration/IrisDecoratorVarianceGeneratorTest.java new file mode 100644 index 000000000..64654aa0f --- /dev/null +++ b/core/src/test/java/art/arcane/iris/generation/decoration/IrisDecoratorVarianceGeneratorTest.java @@ -0,0 +1,58 @@ +package art.arcane.iris.generation.decoration; + +import art.arcane.iris.generation.block.IrisBlockData; +import art.arcane.iris.generation.noise.IrisGeneratorStyle; +import art.arcane.iris.generation.noise.NoiseStyle; +import art.arcane.iris.pack.loading.IrisData; +import art.arcane.iris.testsupport.ExpectedToFailUntilFixed; +import art.arcane.iris.testsupport.ExpectedToFailUntilFixedRule; +import art.arcane.iris.testsupport.RunningEnginePackData; +import art.arcane.volmlib.util.collection.KList; +import art.arcane.volmlib.util.math.RNG; +import org.junit.Rule; +import org.junit.Test; + +import static art.arcane.iris.testsupport.GeneratorSampling.sampleAtBlocks; +import static org.junit.Assert.assertArrayEquals; + +public class IrisDecoratorVarianceGeneratorTest { + private static final String SHARED_VARIANCE_STYLE_GENERATOR_BUG = + "IrisDecorator scales the shared variance style generator instead of its own. " + + "Ref.: https://github.com/VolmitSoftware/Iris/issues/1251"; + private static final long WORLD_SEED = 7L; + private static final double VARIANCE_ZOOM = 4D; + private static final double[][] SAMPLE_BLOCKS = {{1000D, -2000D}, {12.5D, -7.25D}, {-517D, 333D}}; + + private final IrisData packData = RunningEnginePackData.create(); + private final IrisDecorator decorator = createDecoratorWithZoomedSimplexVariance(); + + @Rule + public final ExpectedToFailUntilFixedRule expectedFailures = new ExpectedToFailUntilFixedRule(); + + @ExpectedToFailUntilFixed(SHARED_VARIANCE_STYLE_GENERATOR_BUG) + @Test + public void doesBuildingTheVarianceGeneratorLeaveTheSharedVarianceStyleGeneratorUnscaled() { + assertArrayEquals(sampleUntouchedSharedVarianceStyleGenerator(), sampleSharedVarianceStyleGeneratorAfterVarianceBuilt(), 0D); + } + + private double[] sampleSharedVarianceStyleGeneratorAfterVarianceBuilt() { + decorator.getVarianceGenerator(new RNG(WORLD_SEED), packData); + return sampleSharedVarianceStyleGenerator(decorator.getVariance()); + } + + private double[] sampleUntouchedSharedVarianceStyleGenerator() { + return sampleSharedVarianceStyleGenerator(createZoomedSimplexStyle()); + } + + private double[] sampleSharedVarianceStyleGenerator(IrisGeneratorStyle varianceStyle) { + return sampleAtBlocks(varianceStyle.create(decorator.deriveVarianceSeed(new RNG(WORLD_SEED), packData), packData), SAMPLE_BLOCKS); + } + + private static IrisDecorator createDecoratorWithZoomedSimplexVariance() { + return new IrisDecorator().setPalette(new KList()).setVariance(createZoomedSimplexStyle()); + } + + private static IrisGeneratorStyle createZoomedSimplexStyle() { + return new IrisGeneratorStyle(NoiseStyle.SIMPLEX).setZoom(VARIANCE_ZOOM); + } +}