From a033c01c561f875c52cf4d0e6b8d3850d01deef0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 15 Oct 2026 15:47:12 +0200 Subject: [PATCH] Crossing sweep: assert the shifts moved the pass, so a sweep that ignores them fails Co-Authored-By: Claude Opus 5.5 --- tests/Aetheria.Shared.Tests/CrossingScenarioTests.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/Aetheria.Shared.Tests/CrossingScenarioTests.cs b/tests/Aetheria.Shared.Tests/CrossingScenarioTests.cs index cc0079ebc..769264ec3 100644 --- a/tests/Aetheria.Shared.Tests/CrossingScenarioTests.cs +++ b/tests/Aetheria.Shared.Tests/CrossingScenarioTests.cs @@ -103,6 +103,13 @@ public sealed partial class RunStartTests Assert.InRange(pass.RelativeSpeed, 20f, 30f); Assert.InRange(pass.AngularRate, 0.3f, 0.7f); } + + // The shifts took effect: starting 20 m further out along the crosser's track delays the pass, and starting 20 m further + // ahead moves it 20 m further ahead (a sweep that stages the same pass eighteen times proves nothing). + var along = passes.Take(9).Select(entry => entry.pass).ToList(); + var across = passes.Skip(9).Select(entry => entry.pass).ToList(); + Assert.True(along[0].Seconds - along[8].Seconds > .5f, "a start 20 m further out delays the pass by more than half a second"); + Assert.InRange(across[8].Ahead.y - across[0].Ahead.y, 10f, 30f); } // Where the crosser's bearing from the player sweeps from port to starboard: when, where it is then (x port-to-starboard,