public void PlayersMustMoveWithinTheTopLeftBoundsOfTheBoard() { var naughts = new TurnByTurnPlayerStub(); var game = new TicTacToeGame(naughts, null); naughts.Next(0, 0); Assert.Throws<InvalidMoveException>(() => game.PlayTurn()); }
public void PlayerAlwaysWinsOrDrawsIfStartsTheGame() { var naughts = new TurnByTurnPlayerStub(); var crosses = new MiniMaxPlayer(naughts); var result = PlayAllPossibleGames(new TicTacToeBoard(), crosses, naughts); Assert.That(result.Losses, Is.EqualTo(0)); }
public void NaughtsStartsTheGame() { var naughts = new TurnByTurnPlayerStub(); var game = new TicTacToeGame(naughts, null); naughts.Next(1, 1); game.PlayTurn(); Assert.That(game.PlayerOnSquare(1, 1), Is.EqualTo(naughts)); }
public void PlayersAlternateTurns() { var naughts = new TurnByTurnPlayerStub(); var crosses = new TurnByTurnPlayerStub(); var game = new TicTacToeGame(naughts, crosses); naughts.Next(1, 1); game.PlayTurn(); Assert.That(game.CurrentPlayer, Is.EqualTo(crosses)); }
public void MakeWinningMove() { var naughts = new TurnByTurnPlayerStub(); var crosses = new MiniMaxPlayer(naughts); var board = new TicTacToeBoard(new ITicTacToePlayer[] { naughts, null, crosses, null, naughts, null, naughts, null, crosses }); var position = crosses.PlayTurn(board); Assert.That(position, Is.EqualTo(new BoardPosition(2, 3))); }
public void FindBestStartingMove() { var naughts = new TurnByTurnPlayerStub(); var crosses = new MiniMaxPlayer(naughts); var board = new TicTacToeBoard(new ITicTacToePlayer[] { null, null, null, null, null, null, null, null, null }); var position = crosses.PlayTurn(board); Assert.That(position, Is.EqualTo(new BoardPosition(1, 1))); }
public void PlayersTurnIsNotOverUntilTheyMakeAValidMove() { var naughts = new TurnByTurnPlayerStub(); var crosses = new TurnByTurnPlayerStub(); var game = new TicTacToeGame(naughts, crosses); naughts.Next(1, 1); game.PlayTurn(); crosses.Next(1, 1); game.PlayTurn(); Assert.That(game.CurrentPlayer, Is.EqualTo(crosses)); }
public void OnlyOnePlayerCanClaimEachSquare() { var naughts = new TurnByTurnPlayerStub(); var crosses = new TurnByTurnPlayerStub(); var game = new TicTacToeGame(naughts, crosses); naughts.Next(1, 1); game.PlayTurn(); crosses.Next(1, 1); game.PlayTurn(); Assert.That(game.PlayerOnSquare(1, 1), Is.EqualTo(naughts)); }
public void PlayerAlwaysWinsOrDrawsIfOtherPlayerStartsTheGame() { var naughts = new TurnByTurnPlayerStub(); var crosses = new MiniMaxPlayer(naughts); var board = new TicTacToeBoard(); var tally = ScoreTally.Start; foreach (var square in board.VacantSquares) { var results = PlayAllPossibleGames(board.UpdateBoard(square, naughts), crosses, naughts); tally = tally + results; } Assert.That(tally.Losses, Is.EqualTo(0)); }