From 26a4f4240bd180ffd2ec082166e115fae6bb6b0e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 29 Sep 2026 17:29:02 +0200 Subject: [PATCH] Pin that a zero or missing Random state decodes to the generator's default seed Co-Authored-By: Claude Sonnet 5 --- .../CultMathSerializationTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/GameCult.Caching.Tests/CultMathSerializationTests.cs b/tests/GameCult.Caching.Tests/CultMathSerializationTests.cs index fb6f1489..32531679 100644 --- a/tests/GameCult.Caching.Tests/CultMathSerializationTests.cs +++ b/tests/GameCult.Caching.Tests/CultMathSerializationTests.cs @@ -141,6 +141,20 @@ namespace GameCult.Caching.Tests Decode("94CCFFCC800007").Should().Be(new Color32(255, 128, 0, 7)); } + + [Test] + public void Random_StateZero_IsTheGeneratorDefaultSeed() + { + // CultMath's generator maps state 0 to its default seed, so a zero or missing state is not degenerate. + var reference = new CultMath.Random(0u); + var expected = new[] { reference.NextUInt(), reference.NextUInt(), reference.NextUInt() }; + + foreach (var hex in new[] { "9100", "90" }) + { + var decoded = Decode(hex); + new[] { decoded.NextUInt(), decoded.NextUInt(), decoded.NextUInt() }.Should().Equal(expected); + } + } [Test] public void ConsumerResolvers_WinOverCultMathResolver() {