using Giants.Application; using Giants.Core.Commands; using Giants.Core.Interfaces; using Giants.Infrastructure; namespace Giants.Core.Tests; public class PrepareMatchCommandTest { private readonly IMatchRepository _repo; public PrepareMatchCommandTest() { IHexagonalGrid _grid = new HexagonalGridImpl(); BoardLayout layout = new BoardLayout(_grid); _repo = new MatchRepositoryMock(layout); } [Fact] void SimpleInit5Players() { NewMatchCommand command = new NewMatchCommand(_repo); NewMatchResult result = command.Execute(); Match? m = result.Match; Assert.NotNull(m); PrepareMatchCommand prepCommand = new PrepareMatchCommand() { InputMatch = m, PlayerIDs = new List() { 12, 15, 5, 14, 9 } }; var resultPrep = prepCommand.Execute(); Assert.True(resultPrep.Success); Assert.NotNull(resultPrep?.Match); for (int i = 0; i < 5; i++) { Player? p = resultPrep.Match.GetPlayer(i); Assert.NotNull(p); Assert.Equal(2, p.NbVisibleTribalTokenCount); Assert.Equal(0, p.NbHiddenTribalTokenCount); Assert.Equal(4, p.NbUrnTribalTokenCount); Assert.Equal(5, p.NbVisibleBase); } } [Fact] void SimpleInit4Players() { NewMatchCommand command = new NewMatchCommand(_repo); NewMatchResult result = command.Execute(); Match? m = result.Match; Assert.NotNull(m); PrepareMatchCommand prepCommand = new PrepareMatchCommand() { InputMatch = m, PlayerIDs = new List() { 12, 15, 5, 14 } }; var resultPrep = prepCommand.Execute(); Assert.True(resultPrep.Success); Assert.NotNull(resultPrep?.Match); for (int i = 0; i < 4; i++) { Player? p = resultPrep.Match.GetPlayer(i); Assert.NotNull(p); Assert.Equal(2, p.NbVisibleTribalTokenCount); Assert.Equal(0, p.NbHiddenTribalTokenCount); Assert.Equal(4, p.NbUrnTribalTokenCount); Assert.Equal(6, p.NbVisibleBase); } } [Fact] void SimpleInit3Players() { NewMatchCommand command = new NewMatchCommand(_repo); NewMatchResult result = command.Execute(); Match? m = result.Match; Assert.NotNull(m); PrepareMatchCommand prepCommand = new PrepareMatchCommand() { InputMatch = m, PlayerIDs = new List() { 12, 15, 5 } }; var resultPrep = prepCommand.Execute(); Assert.True(resultPrep.Success); Assert.NotNull(resultPrep?.Match); for (int i = 0; i < 3; i++) { Player? p = resultPrep.Match.GetPlayer(i); Assert.NotNull(p); Assert.Equal(2, p.NbVisibleTribalTokenCount); Assert.Equal(0, p.NbHiddenTribalTokenCount); Assert.Equal(4, p.NbUrnTribalTokenCount); Assert.Equal(7, p.NbVisibleBase); } } }