예제 #1
0
        public void MakeFirstMoveAsPlayer1()
        {
            //arrange
            var board           = new Board(3);
            var bestMoveDecider = new BestMoveDecider(board);
            var computer        = new ComputerNeverLose(Symbol.Cross, "computer", bestMoveDecider);

            //Act
            var move = computer.PlayTurn();

            //Assert
            Assert.Equal(2, move.XCoordinate);
            Assert.Equal(2, move.YCoordinate);
        }
예제 #2
0
        public void MakeMove2AsPlayer1()
        {
            //Arrange
            var board = new Board(3);

            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(2, 2));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(3, 1));

            //Act
            var bestMove = new BestMoveDecider(board).NextMove();

            //Assert
            Assert.Equal(1, bestMove.XCoordinate);
            Assert.Equal(1, bestMove.YCoordinate);
        }
예제 #3
0
        public void CanWinVertical()
        {
            //Arrange
            var board = new Board(3);

            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(1, 1));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(1, 2));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(2, 1));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(2, 2));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(1, 3));

            //Act
            var bestMove = new BestMoveDecider(board).NextMove();

            //Assert
            Assert.Equal(3, bestMove.XCoordinate);
            Assert.Equal(2, bestMove.YCoordinate);
        }
예제 #4
0
        public void CanWinHorizontalPlayer1()
        {
            var board = new Board(3);

            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(2, 2));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(1, 1));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(1, 3));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(3, 1));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(2, 1));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(3, 2));

            //Act
            var bestMove = new BestMoveDecider(board).NextMove();

            //Assert
            Assert.Equal(2, bestMove.XCoordinate);
            Assert.Equal(3, bestMove.YCoordinate);
        }
예제 #5
0
        public void WillWinRowBeforeBlockPlayer2()
        {
            //Arrange
            var board = new Board(3);

            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(2, 2));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(1, 1));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(1, 2));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(3, 2));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(1, 3));
            board.PlaceSymbolToCoordinates(Symbol.Cross, new Move(3, 1));
            board.PlaceSymbolToCoordinates(Symbol.Naught, new Move(2, 1));

            //Act
            var bestMove = new BestMoveDecider(board).NextMove();

            //Assert
            Assert.Equal(3, bestMove.XCoordinate);
            Assert.Equal(3, bestMove.YCoordinate);
            //xoo
            //oo
            //xxx
        }