public void ReturnExceptionIfPositionIsOccupied(int row, int column, int depth) { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(row, column, depth)); Assert.Throws <BoardPositionIsOccupiedException>(() => board.UpdateBoard('X', new Coordinates(row, column, depth))); }
public void ReturnFalseWhenThereIsNoWinningColumnWithSameDepth() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(0, 0, 0)); board.UpdateBoard('X', new Coordinates(1, 0, 0)); board.UpdateBoard('X', new Coordinates(0, 0, 1)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.False(hasWinner); }
public void ReturnWinnerWhenThereIsAWinningColumnWithSameDepth(int column, int depth) { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(1, column, depth)); board.UpdateBoard('X', new Coordinates(0, column, depth)); board.UpdateBoard('X', new Coordinates(2, column, depth)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void ReturnWinnerWhenThereIsAWinningRowWithDifferentDepthWithFirstRowAtTheBackLayer() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(0, 0, 2)); board.UpdateBoard('X', new Coordinates(0, 1, 1)); board.UpdateBoard('X', new Coordinates(0, 2, 0)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void ReturnFalseWhenThereIsNoWinningVerticalSecondaryDiagonalLineWithDifferentDepth() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(0, 2, 0)); board.UpdateBoard('X', new Coordinates(1, 1, 1)); board.UpdateBoard('X', new Coordinates(2, 0, 1)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.False(hasWinner); }
public void ReturnTrueWhenThereIsAWinningVerticalSecondaryDiagonalLineFromTop() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(0, 2, 0)); board.UpdateBoard('X', new Coordinates(1, 1, 1)); board.UpdateBoard('X', new Coordinates(2, 0, 2)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void ReturnTrueWhenThereIsAWinningVerticalPrimaryDiagonalLineWithSameDepth() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(0, 0, 1)); board.UpdateBoard('X', new Coordinates(1, 1, 1)); board.UpdateBoard('X', new Coordinates(2, 2, 1)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void ReturnWinnerWhenThereIsAWinningDepth() { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(1, 2, 0)); board.UpdateBoard('X', new Coordinates(1, 2, 1)); board.UpdateBoard('X', new Coordinates(1, 2, 2)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void ReturnWinnerWhenThereIsAWinningRowWithSameDepth(int row, int depth) { var board = new TicTacToeCPUBoard(3); board.UpdateBoard('X', new Coordinates(row, 0, depth)); board.UpdateBoard('X', new Coordinates(row, 2, depth)); board.UpdateBoard('X', new Coordinates(row, 1, depth)); var rules = new TicTacToeRules(); var hasWinner = rules.HasWinner(board); Assert.True(hasWinner); }
public void UpdatesBoardIfPositionIsValidAndNotOccupied(int row, int column, int depth) { var board = new TicTacToeCPUBoard(3); var coordinates = new Coordinates(row, column, depth); var playerMove = new Cell('X', coordinates); board.UpdateBoard('X', coordinates); var boardUpdated = board.GetPlayedCells().Any(cell => cell.State == playerMove.State && cell.Coordinates.Row == playerMove.Coordinates.Row && cell.Coordinates.Column == playerMove.Coordinates.Column && cell.Coordinates.Depth == playerMove.Coordinates.Depth); Assert.NotNull(board.GetPlayedCells()); Assert.True(boardUpdated); }
public void ReturnExceptionIfCoordinatesIsOutOfBounds(int row, int column, int depth) { var board = new TicTacToeCPUBoard(3); Assert.Throws <CoordinateIsOutOfBoundsException>(() => board.UpdateBoard('X', new Coordinates(row, column, depth))); }