public void GetWinnerOfTieGameIsNull()
        {
            IGameEngine     gameEngine  = GetDefaultGameEngine();
            MockGameChecker gameChecker = new MockGameChecker {
                GameEngine = (gameEngine)
            };

            IPlayer player1       = gameEngine.Players[0];
            char    player1Marker = player1.Marker;
            IPlayer player2       = gameEngine.Players[1];
            char    player2Marker = player2.Marker;

            IBoard board = gameEngine.Board;

            board.MarkPosition(0, 0, player1Marker);
            board.MarkPosition(0, 1, player2Marker);
            board.MarkPosition(1, 0, player1Marker);
            board.MarkPosition(1, 1, player2Marker);

            bool isGameOver = gameChecker.IsGameOver;

            Assert.True(isGameOver);
            IPlayer winner = gameChecker.WinningPlayer;

            Assert.Null(winner);
            Assert.AreNotEqual(null, player1);
            Assert.AreNotEqual(null, player2);
        }
        public void TestGetAndSetGameChecker()
        {
            IGameChecker gameChecker = new MockGameChecker();
            IGameEngine  engine      = new GameEngine(null, null);

            Assert.Null(engine.GameChecker);
            engine.GameChecker = gameChecker;
            Assert.AreEqual(gameChecker, engine.GameChecker);
        }
        public void TestIsGameOverOnDefaultBoardIsFalse()
        {
            IGameEngine     gameEngine  = GetDefaultGameEngine();
            MockGameChecker gameChecker = new MockGameChecker
            {
                GameEngine = gameEngine
            };

            bool isGameOver = gameChecker.IsGameOver;

            Assert.False(isGameOver);
        }
        public void TestSetGameEngine()
        {
            IGameEngine     gameEngine  = GetDefaultGameEngine();
            MockGameChecker gameChecker = new MockGameChecker
            {
                GameEngine = gameEngine
            };

            object actual = gameChecker.GameEngine;

            Assert.NotNull(actual);
            Assert.AreEqual(gameEngine, actual);
        }
        public void TestIsGameOverOnPartiallyFilledBoardIsFalse()
        {
            IGameEngine     gameEngine  = GetDefaultGameEngine();
            MockGameChecker gameChecker = new MockGameChecker {
                GameEngine = gameEngine
            };
            IPlayer player1       = gameEngine.Players[0];
            char    player1Marker = player1.Marker;

            IBoard board = gameEngine.Board;

            board.MarkPosition(0, 0, player1Marker);

            bool isGameOver = gameChecker.IsGameOver;

            Assert.False(isGameOver);
        }
        public void TestWinningPlayer()
        {
            IGameEngine     gameEngine  = GetDefaultGameEngine();
            MockGameChecker gameChecker = new MockGameChecker {
                GameEngine = (gameEngine)
            };
            IPlayer player2       = gameEngine.Players[1];
            char    player2Marker = player2.Marker;

            IBoard board = gameEngine.Board;

            board.MarkPosition(0, 0, player2Marker);
            board.MarkPosition(0, 1, player2Marker);
            board.MarkPosition(1, 0, player2Marker);
            board.MarkPosition(1, 1, player2Marker);

            bool isGameOver = gameChecker.IsGameOver;

            Assert.True(isGameOver);
            IPlayer winner = gameChecker.WinningPlayer;

            Assert.NotNull(winner);
            Assert.AreEqual(player2, winner);
        }
        public void TestGameEngineIsNullByDefault()
        {
            MockGameChecker gameChecker = new MockGameChecker();

            Assert.Null(gameChecker.GameEngine);
        }