From cf242106fadc03fb172e917402a0044e45005506 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 17 Oct 2026 09:30:03 +0200 Subject: [PATCH] Tests: every turret on a read side clears the base body by its extent and reach The 0.8 tail-extent mutant survived the stop checks alone: it places turrets inside the distance, which only a placed turret's own clearance shows. Co-Authored-By: Claude Opus 5.5 --- tests/Aetheria.Shared.Tests/StationPlacementTests.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Aetheria.Shared.Tests/StationPlacementTests.cs b/tests/Aetheria.Shared.Tests/StationPlacementTests.cs index 2b65116d0..759e3e83d 100644 --- a/tests/Aetheria.Shared.Tests/StationPlacementTests.cs +++ b/tests/Aetheria.Shared.Tests/StationPlacementTests.cs @@ -388,6 +388,11 @@ public sealed class StationPlacementTests : IDisposable { var side = arcs.Where(a => a * sign > 0).OrderBy(a => a * sign).ToList(); sides++; + foreach (var placed in side) + { + var at = 2 * orbit.Data.Distance * Math.Abs((float) Math.Sin(PI * (orbit.Data.Phase + placed / circumference - zone.Orbits[source[0]].Data.Phase))); + Assert.True(at >= (extent + reach) * .999f, $"seed {built.Seed}: a turret sits {at} from its base, inside {extent + reach}"); + } var wouldBe = (side.Count == 0 ? 0f : side[side.Count - 1]) + sign * ((side.Count == 0 ? Contacts.Radius(station) : reach) + 2 * reach); var phase = orbit.Data.Phase + wouldBe / circumference; var chord = 2 * orbit.Data.Distance * Math.Abs((float) Math.Sin(PI * (phase - zone.Orbits[source[0]].Data.Phase)));