public void PlayStep_PlayerCanMoveUp()
        {
            const int maxRows    = 4;
            const int maxColumns = 4;

            var processor = new GameStateProcessor();
            var player    = new PlayerState {
                Column = 1, Row = 1, Moves = 0
            };

            IList <IList <Cell> > grid  = TestUtils.MakeEmptyGrid(maxRows, maxColumns);
            IGameState            state = new GameState(player, grid, 5, maxRows, maxColumns);

            processor.PlayStep(state, PlayerDirection.Up);

            Assert.AreEqual(0, player.Row);
        }
        public void PlayStep_WhenPlayerAtRightmostOfGrid_PlayerDoesNotMoveRight()
        {
            const int maxRows    = 4;
            const int maxColumns = 4;

            var processor = new GameStateProcessor();
            var player    = new PlayerState {
                Column = maxColumns - 1, Row = 1, Moves = 0
            };

            IList <IList <Cell> > grid  = TestUtils.MakeEmptyGrid(maxRows, maxColumns);
            IGameState            state = new GameState(player, grid, 5, maxRows, maxColumns);

            processor.PlayStep(state, PlayerDirection.Right);

            Assert.AreEqual(maxColumns - 1, player.Column);
        }
        public void PlayStep_WhenPlayerIsMoved_IncreasesPlayerMovesCounter()
        {
            const int maxRows    = 4;
            const int maxColumns = 4;

            var processor = new GameStateProcessor();
            var player    = new PlayerState {
                Column = 0, Row = 0, Moves = 0
            };

            IList <IList <Cell> > grid  = TestUtils.MakeEmptyGrid(maxRows, maxColumns);
            IGameState            state = new GameState(player, grid, 5, maxRows, maxColumns);

            processor.PlayStep(state, PlayerDirection.Right);

            Assert.AreEqual(1, player.Moves);
        }
        public void PlayStep_WhenPlayerIsMoved_PreviousPositionIsUncovered()
        {
            const int maxRows    = 4;
            const int maxColumns = 4;

            var processor = new GameStateProcessor();
            var player    = new PlayerState {
                Column = 0, Row = 0, Moves = 0
            };

            IList <IList <Cell> > grid  = TestUtils.MakeEmptyGrid(maxRows, maxColumns);
            IGameState            state = new GameState(player, grid, 5, maxRows, maxColumns);

            state.GameGrid[0][0].IsUncovered = false;

            processor.PlayStep(state, PlayerDirection.Right);

            Assert.IsTrue(state.GameGrid[0][0].IsUncovered);
        }