public void EnforceXToBePlayedThird()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.BottomRight);
            board.PlaceToken(Token.O, BoardPosition.MiddleLeft);
            var moveResult = board.PlaceToken(Token.O, BoardPosition.TopCentre);

            Assert.AreEqual(MoveResult.InvalidMove, moveResult);
        }
        public void EnforceOToBePlayedSecond()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.TopRight);

            var moveResult = board.PlaceToken(Token.O, BoardPosition.TopCentre);

            Assert.AreEqual(MoveResult.InProgress, moveResult);
        }
        public void NotAllowPlaysOnTheSamePositionPlayedLast()
        {
            var board = new TicTakToeBoard();

            board.PlaceToken(Token.X, BoardPosition.BottomCentre);

            var moveResult = board.PlaceToken(Token.O, BoardPosition.BottomCentre);

            Assert.AreEqual(MoveResult.InvalidMove, moveResult);
        }
        public void NotAllowPlaysOnAPositionPlayed2StepsAgo()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.TopRight);
            board.PlaceToken(Token.O, BoardPosition.TopCentre);

            var moveResult = board.PlaceToken(Token.X, BoardPosition.TopRight);

            Assert.AreEqual(MoveResult.InvalidMove, moveResult);
        }
        public void ReportADrawWhenYouHavePlayedTheLastPositionAndNotWon()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.BottomLeft);
            board.PlaceToken(Token.O, BoardPosition.MiddleLeft);
            board.PlaceToken(Token.X, BoardPosition.TopLeft);
            board.PlaceToken(Token.O, BoardPosition.TopCentre);
            board.PlaceToken(Token.X, BoardPosition.MiddleCenter);
            board.PlaceToken(Token.O, BoardPosition.BottomCentre);
            board.PlaceToken(Token.X, BoardPosition.MiddleRight);
            board.PlaceToken(Token.O, BoardPosition.TopRight);
            var result = board.PlaceToken(Token.X, BoardPosition.BottomRight);

            Assert.AreEqual(MoveResult.NoWinnerYouDrawers, result);
        }
 public void NotAllowOToBePlayedFirst()
 {
     var moveResult = new TicTakToeBoard().PlaceToken(Token.O, BoardPosition.BottomCentre);
     Assert.AreEqual(MoveResult.InvalidMove, moveResult);
 }
        public void EnforceXToBePlayedFirst()
        {
            var moveResult = new TicTakToeBoard().PlaceToken(Token.X, BoardPosition.BottomCentre);

            Assert.AreEqual(MoveResult.InProgress, moveResult);
        }
        public void ReportAWinningMoveWhen3XInTopRow()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.TopLeft);
            board.PlaceToken(Token.O, BoardPosition.BottomLeft);
            board.PlaceToken(Token.X, BoardPosition.TopCentre);
            board.PlaceToken(Token.O, BoardPosition.BottomCentre);
            var result = board.PlaceToken(Token.X, BoardPosition.TopRight);

            Assert.AreEqual(MoveResult.YouAreAWinner, result);
        }
        public void ReportAWinningMoveWhen3XInForwardslashDiagonal()
        {
            var board = new TicTakToeBoard();
            board.PlaceToken(Token.X, BoardPosition.BottomLeft);
            board.PlaceToken(Token.O, BoardPosition.MiddleLeft);
            board.PlaceToken(Token.X, BoardPosition.MiddleCenter);
            board.PlaceToken(Token.O, BoardPosition.TopCentre);
            var result = board.PlaceToken(Token.X, BoardPosition.TopRight);

            Assert.AreEqual(MoveResult.YouAreAWinner, result);
        }