From 604dda95e875ffd5dc16f75bfaa134e2751958de Mon Sep 17 00:00:00 2001 From: Jaculabilis Date: Tue, 29 Mar 2022 21:01:15 -0700 Subject: [PATCH] Enable fluent definitions of multiple turns --- MultiversalDiplomacyTests/TestCaseBuilder.cs | 13 +++++++++++++ MultiversalDiplomacyTests/TimeTravelTest.cs | 13 ++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/MultiversalDiplomacyTests/TestCaseBuilder.cs b/MultiversalDiplomacyTests/TestCaseBuilder.cs index 8d11680..59e2692 100644 --- a/MultiversalDiplomacyTests/TestCaseBuilder.cs +++ b/MultiversalDiplomacyTests/TestCaseBuilder.cs @@ -167,6 +167,11 @@ public class TestCaseBuilder /// public interface IOrderDefinedContext where OrderType : Order { + /// + /// Perform validation, adjudication, and update using the defined orders. + /// + public TestCaseBuilder Execute(IPhaseAdjudicator adjudicator); + /// /// Choose a new season to define orders for. /// @@ -579,6 +584,14 @@ public class TestCaseBuilder this.Order = order; } + public TestCaseBuilder Execute(IPhaseAdjudicator adjudicator) + { + this.Builder.ValidateOrders(adjudicator); + this.Builder.AdjudicateOrders(adjudicator); + this.Builder.UpdateWorld(adjudicator); + return this.Builder; + } + public ISeasonContext this[(int turn, int timeline) seasonCoord] => this.SeasonContext[seasonCoord]; diff --git a/MultiversalDiplomacyTests/TimeTravelTest.cs b/MultiversalDiplomacyTests/TimeTravelTest.cs index ffe80fa..8401958 100644 --- a/MultiversalDiplomacyTests/TimeTravelTest.cs +++ b/MultiversalDiplomacyTests/TimeTravelTest.cs @@ -13,18 +13,13 @@ public class TimeTravelTest { TestCaseBuilder setup = new(World.WithStandardMap()); - // Hold once so the timeline has a past. + // Hold to move into the future, then move back into the past. setup[(0, 0)] .GetReference(out Season s0) ["Germany"] - .Army("Mun").Holds().GetReference(out var mun0); - - setup.ValidateOrders(MovementPhaseAdjudicator.Instance); - setup.AdjudicateOrders(MovementPhaseAdjudicator.Instance); - setup.UpdateWorld(MovementPhaseAdjudicator.Instance); - - // Move into the past of the same timeline. - setup[(1, 0)] + .Army("Mun").Holds().GetReference(out var mun0) + .Execute(MovementPhaseAdjudicator.Instance) + [(1, 0)] .GetReference(out Season s1) ["Germany"] .Army("Mun").MovesTo("Tyr", season: s0).GetReference(out var mun1);