Exemple #1
0
        static void Main(string[] args)
        {
            var roversInputModel = new RoversInputModel()
            {
                RoversInput = new List <RoverInputModel>()
            };

            Console.WriteLine("Enter the size of the plateau: ");
            string sizeOfPlateau = Console.ReadLine();

            roversInputModel.Plateau = sizeOfPlateau;
            int  index = 1;
            bool confirmed;

            do
            {
                Console.WriteLine($"Enter coordinate for {index}. Rover: ");
                string roverPosition = Console.ReadLine();

                Console.WriteLine($"Enter route for {index}. Rover: ");
                string roverRoute = Console.ReadLine();

                var rover = new RoverInputModel
                {
                    Index    = index,
                    Position = roverPosition,
                    Route    = roverRoute
                };

                roversInputModel.RoversInput.Add(rover);

                ConsoleKey response;
                do
                {
                    Console.Write("Do you want to create new rover? [y/n] ");
                    response = Console.ReadKey(false).Key;   // true is intercept key (dont show), false is show
                    if (response != ConsoleKey.Enter)
                    {
                        Console.WriteLine();
                    }
                } while (response != ConsoleKey.N && response != ConsoleKey.Y);

                confirmed = response == ConsoleKey.N;
                index++;
            } while (!confirmed);

            var rovers = Manager.Manage(roversInputModel);

            Console.WriteLine("Output :");

            foreach (var rover in rovers)
            {
                Console.WriteLine($"{rover.Position.PositionX} " +
                                  $"{rover.Position.PositionY} " +
                                  $"{rover.Position.Direction}");
            }

            Console.Write("Thanks for joining Mars Rover !");
            Console.ReadLine();
        }
Exemple #2
0
        public static List <RoverModel> Manage(RoversInputModel inputModel)
        {
            FillRovers(inputModel);
            ManagerOperation();

            return(Rovers);
        }
Exemple #3
0
        public void ToRoverTrip_ShouldAssertEqual_WhenConsoleInput(int index, string sizeOfPlateau, string roverPosition, string roverRoute, int expectedPositionX, int expectedPositionY, DirectionEnum expectedDirection)
        {
            //Arrange Step
            var roversTestInputModel = new RoversInputModel()
            {
                Plateau     = sizeOfPlateau,
                RoversInput = new List <RoverInputModel>()
            };

            var roverTestModel = new RoverInputModel()
            {
                Index    = index,
                Position = roverPosition,
                Route    = roverRoute
            };

            roversTestInputModel.RoversInput.Add(roverTestModel);

            //Act Step
            var rovers = Manager.Manage(roversTestInputModel);

            //Assert Step
            Assert.NotNull(rovers.FirstOrDefault(a => a.Id == index));
            Assert.Equal(expectedPositionX, rovers.FirstOrDefault(a => a.Id == index).Position.PositionX);
            Assert.Equal(expectedPositionY, rovers.FirstOrDefault(a => a.Id == index).Position.PositionY);
            Assert.Equal(expectedDirection, rovers.FirstOrDefault(a => a.Id == index).Position.Direction);
        }
Exemple #4
0
 //Fill RoverModel based on inputModel
 private static void FillRovers(RoversInputModel inputModel)
 {
     Rovers.AddRange(inputModel.RoversInput.Select(a => new RoverModel
     {
         Id       = a.Index,
         Plateau  = InputHelper.Plateau(inputModel.Plateau),
         Position = InputHelper.RoverPosition(a.Position),
         Route    = InputHelper.RoverRoute(a.Route)
     }));
 }