diff --git a/SVSim.UnitTests/BattleNode/Sessions/BattleSessionDispatchTests.cs b/SVSim.UnitTests/BattleNode/Sessions/BattleSessionDispatchTests.cs index 197216b..3b1f6e7 100644 --- a/SVSim.UnitTests/BattleNode/Sessions/BattleSessionDispatchTests.cs +++ b/SVSim.UnitTests/BattleNode/Sessions/BattleSessionDispatchTests.cs @@ -120,6 +120,26 @@ public class BattleSessionDispatchTests Assert.That(s.Phase, Is.EqualTo(BattleSessionPhase.AfterReady)); } + [Test] + public void TurnEnd_CanFireMultipleTimesConsecutively() + { + var s = NewSession(); + s.ComputeResponses(NewEnvelope(NetworkBattleUri.InitNetwork)); + s.ComputeResponses(NewEnvelope(NetworkBattleUri.InitBattle)); + s.ComputeResponses(NewEnvelope(NetworkBattleUri.Loaded)); + s.ComputeResponses(NewEnvelope(NetworkBattleUri.Swap)); + + var first = s.ComputeResponses(NewEnvelope(NetworkBattleUri.TurnEnd)); + var second = s.ComputeResponses(NewEnvelope(NetworkBattleUri.TurnEnd)); + + // Both calls produce the same two-frame burst. + Assert.That(first.Select(r => r.Envelope.Uri), + Is.EqualTo(new[] { NetworkBattleUri.TurnStart, NetworkBattleUri.TurnEnd })); + Assert.That(second.Select(r => r.Envelope.Uri), + Is.EqualTo(new[] { NetworkBattleUri.TurnStart, NetworkBattleUri.TurnEnd })); + Assert.That(s.Phase, Is.EqualTo(BattleSessionPhase.AfterReady)); + } + [Test] public void Retire_PushesBattleFinishNoContest_TransitionsToTerminal() {