Example #1
0
        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)));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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)));
        }