public void PacManCantMoveIfItDoesNotExist()
        {
            var grid         = new Grid(4, 8);
            var somePosition = new Position(2, 1);

            Assert.Throws <InvalidMoveException>(() => grid.MovePacManTo(somePosition));
        }
        public void WithPacmansHeadYouDontBreakThrough()
        {
            var grid                 = new Grid(4, 8);
            var originPosition       = new Position(0, 0);
            var positionNextToActual = new Position(-1, 0);

            grid.PlacePacManAt(originPosition);
            Assert.Throws <InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual));
        }
        public void AllCellsVisitedByPacManAreNotFilledWithDots()
        {
            var grid = new Grid(4, 8);
            var originPosition = new Position(0, 0);
            var positionNextToActual = new Position(1, 0);

            grid.PlacePacManAt(originPosition);
            grid.MovePacManTo(positionNextToActual);
            Assert.NotEqual(Grid.FilledCell, grid.At(originPosition));
        }
        public void AllCellsVisitedByPacManAreNotFilledWithDots()
        {
            var grid                 = new Grid(4, 8);
            var originPosition       = new Position(0, 0);
            var positionNextToActual = new Position(1, 0);

            grid.PlacePacManAt(originPosition);
            grid.MovePacManTo(positionNextToActual);
            Assert.NotEqual(Grid.FilledCell, grid.At(originPosition));
        }
        public void PacManCantMoveToWall()
        {
            var grid         = new Grid(4, 8);
            var positionWall = new Position(2, 0);

            grid.PlaceWall(positionWall);
            var originPosition       = new Position(0, 0);
            var positionNextToActual = new Position(2, 0);

            grid.PlacePacManAt(originPosition);
            Assert.Throws <InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual));
        }
        public void Tick()
        {
            Position newPosition = default(Position);

            switch (PacmanDirection)
            {
            case Direction.Down:
                newPosition = Position.GetDown(_grid.PacmanPosition.Value);
                break;

            case Direction.Up:
                newPosition = Position.GetUp(_grid.PacmanPosition.Value);
                break;

            case Direction.Right:
                newPosition = Position.GetRight(_grid.PacmanPosition.Value);
                break;

            case Direction.Left:
                newPosition = Position.GetLeft(_grid.PacmanPosition.Value);
                break;
            }
            _grid.MovePacManTo(newPosition);
        }
        public void WithPacmansHeadYouDontBreakThrough()
        {
            var grid = new Grid(4, 8);
            var originPosition = new Position(0, 0);
            var positionNextToActual = new Position(-1, 0);

            grid.PlacePacManAt(originPosition);
            Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual));
        }
        public void PacManCantMoveToWall()
        {
            var grid = new Grid(4, 8);
            var positionWall = new Position(2, 0);
            grid.PlaceWall(positionWall);
            var originPosition = new Position(0, 0);
            var positionNextToActual = new Position(2, 0);

            grid.PlacePacManAt(originPosition);
            Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual));
        }
        public void PacManCantMoveIfItDoesNotExist()
        {
            var grid = new Grid(4, 8);
            var somePosition = new Position(2, 1);

            Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(somePosition));
        }