public void MakeMoveShouldMakeWinningMoveForX() { //arrange GameMock .Setup(a => a.GameIsOver) .Returns(false); GameMock .Setup(a => a.GameBoardString) .Returns(AGameBoardString); GameMock .Setup(a => a.CurrentPlayer) .Returns(Player.X); var moveResponses = new MoveResponse[] { new MoveResponse() { Response = Move.Northern, Outcome = GameState.XWin, Board = "_________", Player = Player.X }, new MoveResponse() { Response = Move.Center, Outcome = GameState.OWin, Board = "_________", Player = Player.X }, new MoveResponse() { Response = Move.Southern, Outcome = GameState.Tie, Board = "_________", Player = Player.X } }; MoveDataAccessMock .Setup(a => a.FindMoveResponses(AGameBoardString, Player.X)) .Returns(moveResponses); RandomMock .Setup(a => a.Next(It.IsAny <int>())) .Returns(0); //act OmniscientGod.MakeMove(GameMock.Object); //assert GameMock .Verify(a => a.Move(Move.Northern), Times.Once()); }
public void ShouldFindMoveResults() { //arrange GameMock .Setup(a => a.GameBoardString) .Returns(AGameBoardString); GameMock .Setup(a => a.CurrentPlayer) .Returns(Player.X); var moveResponses = new MoveResponse[] { new MoveResponse() { Response = Move.Northern, Outcome = GameState.XWin, Board = "_________", Player = Player.X }, new MoveResponse() { Response = Move.Center, Outcome = GameState.OWin, Board = "_________", Player = Player.X }, new MoveResponse() { Response = Move.Southern, Outcome = GameState.Tie, Board = "_________", Player = Player.X } }; MoveDataAccessMock .Setup(a => a.FindMoveResponses(AGameBoardString, Player.X)) .Returns(moveResponses); //act var results = OmniscientGod.FindMoveResults(GameMock.Object); //assert var expectedMoveResults = new MoveResult[] { new MoveResult(Move.Northern, GameState.XWin), new MoveResult(Move.Center, GameState.OWin), new MoveResult(Move.Southern, GameState.Tie) }; results.ShouldAllBeEquivalentTo(expectedMoveResults); }