示例#1
0
        private bool IsMovingWithinBoundaries(IRover rover)
        {
            var currentPosition = _roverService.GetRoverPosition(rover);
            var heading         = _roverService.GetRoverHeading(rover);

            var gridMaxY = _gridService.GetGridHeight(_grid) - 1;
            var gridMaxX = _gridService.GetGridWidth(_grid) - 1;

            switch (heading)
            {
            case Heading.North:
                if (currentPosition.Y == gridMaxY)
                {
                    return(false);
                }
                break;

            case Heading.East:
                if (currentPosition.X == gridMaxX)
                {
                    return(false);
                }
                break;

            case Heading.South:
                if (currentPosition.Y == 0)
                {
                    return(false);
                }
                break;

            case Heading.West:
                if (currentPosition.X == 0)
                {
                    return(false);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(true);
        }