diff --git a/MultiversalDiplomacy/Script/GameScriptHandler.cs b/MultiversalDiplomacy/Script/GameScriptHandler.cs index 5d2ad32..35214ac 100644 --- a/MultiversalDiplomacy/Script/GameScriptHandler.cs +++ b/MultiversalDiplomacy/Script/GameScriptHandler.cs @@ -16,7 +16,9 @@ public class GameScriptHandler(World world, bool strict = false) : IScriptHandle /// public bool Strict { get; } = strict; - private string? CurrentPower = null; + private string? CurrentPower { get; set; } = null; + + public List Orders { get; } = []; public IScriptHandler? HandleInput(string input) { @@ -70,7 +72,8 @@ public class GameScriptHandler(World world, bool strict = false) : IScriptHandle } if (OrderParser.TryParseOrder(World, orderPower, orderText, out Order? order)) { - Console.WriteLine($"Parsed {orderPower} order \"{orderText}\" but doing anything with it isn't implemented yet"); + Console.WriteLine($"Parsed {orderPower} order: {order}"); + Orders.Add(order); return this; } diff --git a/MultiversalDiplomacyTests/ReplTest.cs b/MultiversalDiplomacyTests/ReplTest.cs index 23f7935..77aa1a8 100644 --- a/MultiversalDiplomacyTests/ReplTest.cs +++ b/MultiversalDiplomacyTests/ReplTest.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using MultiversalDiplomacy.Model; +using MultiversalDiplomacy.Orders; using MultiversalDiplomacy.Script; namespace MultiversalDiplomacyTests; @@ -32,4 +33,42 @@ public class ReplTest Assert.That(repl.Handler, Is.TypeOf()); } + + [Test] + public void SubmitOrders() + { + SetupScriptHandler setup = new(World.WithStandardMap(), strict: true); + ReplDriver repl = new ReplDriver(setup)[""" + unit Germany A Mun + unit Austria A Tyr + unit England F Lon + begin + """]; + + repl[""" + Germany A Mun hold + Austria: Army Tyrolia - Vienna + England: + Lon h + """].Ready(); + + Assert.That(repl.Handler, Is.TypeOf()); + GameScriptHandler handler = (GameScriptHandler)repl.Handler!; + Assert.That(handler.Orders.Count, Is.EqualTo(3)); + Assert.That(handler.Orders.Single(o => o.Power == "Germany"), Is.TypeOf()); + Assert.That(handler.Orders.Single(o => o.Power == "Austria"), Is.TypeOf()); + Assert.That(handler.Orders.Single(o => o.Power == "England"), Is.TypeOf()); + Assert.That(handler.World.Timelines.Pasts.Count, Is.EqualTo(1)); + + World before = handler.World; + + repl[""" + --- + """].Ready(); + + Assert.That(repl.Handler, Is.TypeOf()); + var newHandler = (AdjudicationQueryScriptHandler)repl.Handler!; + Assert.That(newHandler.World, Is.Not.EqualTo(before)); + Assert.That(newHandler.World.Timelines.Pasts.Count, Is.EqualTo(2)); + } }