public void ExpectStateTransitionAfterPlayerDiscardedTheirResources() { var turn = new Mock<IGameTurn>(); var player = new Mock<IPlayer>(); player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, 8).Select(i => new Mock<IRawMaterial>().Object)); var players = new List<IPlayer>() { player.Object }; var state = new RobberDiscardState(turn.Object, players); player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, 4).Select(i => new Mock<IRawMaterial>().Object)); state.AfterExecute(GameCommand.DiscardResources); turn.Verify(t => t.SetState<MoveRobberState>(), Times.Once); }
public void ExpectNoStateChangeIfPlayerRemovedNotEnoughResources() { var turn = new Mock<IGameTurn>(); var player = new Mock<IPlayer>(); player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, 8).Select(i => new Mock<IRawMaterial>().Object)); var players = new List<IPlayer>() { player.Object }; var state = new RobberDiscardState(turn.Object, players); player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, 5).Select(i => new Mock<IRawMaterial>().Object)); state.AfterExecute(GameCommand.DiscardResources); turn.Verify(t => t.SetState<MoveRobberState>(), Times.Never); }
public void ExpectedRemoveResourcesIsHalfROundedDown(int initial, int expected) { var turn = new Mock<IGameTurn>(); var player = new Mock<IPlayer>(); player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, initial).Select(i => new Mock<IRawMaterial>().Object)); var players = new List<IPlayer>() { player.Object }; var state = new RobberDiscardState(turn.Object, players); //expect 4 removed player.Setup(p => p.Inventory).Returns(Enumerable.Range(0, expected).Select(i => new Mock<IRawMaterial>().Object)); state.AfterExecute(GameCommand.DiscardResources); turn.Verify(t => t.SetState<MoveRobberState>(), Times.Once); }