public void GetNextTurnPlayer()
        {
            IGameEngine     engine     = GetDefaultGameEngine(2);
            IList <IPlayer> players    = engine.Players;
            IPlayer         player1    = players[0];
            IPlayer         player2    = players[1];
            IPlayer         nextPlayer = engine.GetNextTurnPlayer();

            Assert.AreEqual(player1, nextPlayer);

            engine.DoTurn();
            nextPlayer = engine.GetNextTurnPlayer();
            Assert.AreEqual(player2, nextPlayer);
        }
        public void gameActionOnOccupiedSpaceIsNotValid()
        {
            IGameEngine     engine  = GetDefaultGameEngine(2);
            IList <IPlayer> players = engine.Players;
            IPlayer         player2 = players[1];
            IGameAction     action  = player2.RequestAction();

            //should request an action from player 1 and do that action
            engine.DoTurn();

            //the original requested action should no longer be valid
            bool isValid = engine.IsValidGameAction(action);

            Assert.False(isValid);
        }
        public void DoTurn()
        {
            IGameEngine     engine  = GetDefaultGameEngine(2);
            IBoard          board   = engine.Board;
            IList <IPlayer> players = engine.Players;
            IPlayer         player2 = players[1];

            Assert.True(board.IsEmpty(0, 0));
            //should request an action from player 1 and do that action at 0,0
            engine.DoTurn();
            Assert.False(board.IsEmpty(0, 0));

            IPlayer nextPlayer = engine.GetNextTurnPlayer();

            Assert.AreEqual(player2, nextPlayer);
        }
        public void ResetGame()
        {
            //set up the game, do 1 turn, reset the Game, and verify initial state
            IGameEngine     engine  = GetDefaultGameEngine(2);
            IBoard          board   = engine.Board;
            IList <IPlayer> players = engine.Players;

            Assert.AreEqual(2, players.Count);
            IPlayer player1 = players[0];

            engine.DoTurn();
            Assert.False(board.IsEmpty(0, 0));

            engine.ResetGame();
            //board should be clear
            Assert.True(board.IsEmpty(0, 0));
            //player turn should be reset
            //game should not be finished
            Assert.AreEqual(player1, engine.GetNextTurnPlayer());
            Assert.False(engine.GameChecker.IsGameOver);
        }