public void MakeMoveShouldReturnNull()
 {
     BoardManager board = new BoardManager();
     HumanPlayer playerOne = new HumanPlayer();
     Tuple<int,int> actual = playerOne.MakeMove(board.boardArray);
     Tuple<int,int> expected = null;
     Assert.AreEqual(expected, actual);
 }
        public void AddPlayerShouldNotOverwritePlayers()
        {
            Game target = new Game();
            target.AddPlayer(new HumanPlayer('X'));
            target.AddPlayer(new HumanPlayer('O'));

            Player actual = target.xPlayer;
            Player expected = new HumanPlayer('X');

            Assert.AreEqual(expected, actual);
        }
        public void ComputerAIConstructorTest()
        {
            BoardManager board = new BoardManager();
            HumanPlayer playerOne = new HumanPlayer();
            ComputerPlayer playerTwo = new ComputerPlayer('O');
            board.LogMove(playerOne.MakeMove(0, 0));

            ComputerAI target = new ComputerAI(playerOne.identity, playerTwo.identity);

            Assert.AreEqual('X', target.enemyIdentity);
        }
 public void GetRandomMoveShouldReturnARandomMoveFromAvailableSpaces()
 {
     BoardManager board = new BoardManager();
     HumanPlayer playerOne = new HumanPlayer();
     ComputerPlayer playerTwo = new ComputerPlayer('O');
     board.LogMove(playerOne.MakeMove(1, 1));
     ComputerAI target = new ComputerAI(playerOne.identity, playerTwo.identity);
     CreatedMove actual = target.GetRandomMove(board.boardArray);
     CreatedMove notExpected = new CreatedMove(1, 1, 'O');
     Assert.IsTrue(actual.xAxis >= 0 && actual.xAxis <= 2);
     Assert.IsTrue(actual.yAxis >= 0 && actual.yAxis <= 2);
     Assert.AreNotEqual(notExpected, actual);
 }
 public void PresentationManagerShouldBeAbleToPrintTheBoard()
 {
     PresentationManager target = new PresentationManager();
     HumanPlayer playerOne = new HumanPlayer('X');
     HumanPlayer playerTwo = new HumanPlayer('O');
     Game game = new Game(playerOne, playerTwo, new BoardManager());
     target.PrintBoard(game.board.boardArray);
     game.board.LogMove(new Tuple<int, int>(1, 1));
     target.PrintBoard(game.board.boardArray);
     game.board.LogMove(new Tuple<int, int>(0, 0));
     target.PrintBoard(game.board.boardArray);
     game.board.LogMove(new Tuple<int, int>(2, 1));
     target.PrintBoard(game.board.boardArray);
     game.board.LogMove(new Tuple<int, int>(1, 2));
     target.PrintBoard(game.board.boardArray);
 }
        public void BoardManagerShouldKnowIfThereIsATie()
        {
            BoardManager board = new BoardManager();
            HumanPlayer playerOne = new HumanPlayer('X');
            ComputerPlayer playerTwo = new ComputerPlayer('O');

            board.LogMove(new Tuple<int, int>(1, 1));
            board.LogMove(new Tuple<int, int>(0, 0));
            board.LogMove(new Tuple<int, int>(0, 1));
            board.LogMove(new Tuple<int, int>(2, 1));
            board.LogMove(new Tuple<int, int>(0, 2));
            board.LogMove(new Tuple<int, int>(2, 0));
            board.LogMove(new Tuple<int, int>(1, 0));
            board.LogMove(new Tuple<int, int>(1, 2));
            board.LogMove(new Tuple<int, int>(2, 2));

            Assert.AreEqual(true, board.CheckForTie());
        }
        public void BoardManagerShouldKnowIfThereIsATie()
        {
            BoardChecker target = new BoardChecker();
            BoardManager board = new BoardManager();
            HumanPlayer playerOne = new HumanPlayer('X');
            ComputerPlayer playerTwo = new ComputerPlayer('O');

            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerTwo.MakeMove(0, 0));
            board.LogMove(playerOne.MakeMove(0, 1));
            board.LogMove(playerTwo.MakeMove(2, 1));
            board.LogMove(playerOne.MakeMove(0, 2));
            board.LogMove(playerTwo.MakeMove(2, 0));
            board.LogMove(playerOne.MakeMove(1, 0));
            board.LogMove(playerTwo.MakeMove(1, 2));
            board.LogMove(playerOne.MakeMove(2, 2));

            Assert.AreEqual(true, target.CheckForTie(board.boardArray));
        }
        public void ShouldBeAbleToAddPlayers()
        {
            Game target = new Game();
            target.AddPlayer(new HumanPlayer('X'));

            Player actual = target.xPlayer;
            Player expected = new HumanPlayer('X');

            Assert.AreEqual(expected, actual);
        }
 public void ShouldBeAbleToCreatePlayersForO()
 {
     HumanPlayer playerOne = new HumanPlayer('O');
     Assert.AreEqual(playerOne.identity, 'O');
 }
 public void ConstructorShouldDefaultToX()
 {
     HumanPlayer playerOne = new HumanPlayer();
     Assert.AreEqual(playerOne.identity, 'X');
 }
        public void CheckForWinShouldReturnTrueIfThereAreThreeOsInARow()
        {
            BoardChecker target = new BoardChecker();

            //Three Across the Top
            BoardManager board = new BoardManager();
            HumanPlayer playerOne = new HumanPlayer('o');
            board.LogMove(playerOne.MakeMove(0, 0));
            board.LogMove(playerOne.MakeMove(1, 0));
            board.LogMove(playerOne.MakeMove(2, 0));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three Across the Middle
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(0, 1));
            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerOne.MakeMove(2, 1));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three Across the Bottom
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(0, 2));
            board.LogMove(playerOne.MakeMove(1, 2));
            board.LogMove(playerOne.MakeMove(2, 2));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three Down the Left Side
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(0, 0));
            board.LogMove(playerOne.MakeMove(0, 1));
            board.LogMove(playerOne.MakeMove(0, 2));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three Down the Middle
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(1, 0));
            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerOne.MakeMove(1, 2));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three Down the Right Side
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(1, 0));
            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerOne.MakeMove(1, 2));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three In A Slash
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(0, 2));
            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerOne.MakeMove(2, 0));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));

            //Three In A Backslash
            board = new BoardManager();
            board.LogMove(playerOne.MakeMove(0, 0));
            board.LogMove(playerOne.MakeMove(1, 1));
            board.LogMove(playerOne.MakeMove(2, 2));
            Assert.AreEqual(true, target.CheckForWin(board.boardArray));
        }