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(); }
public static List <RoverModel> Manage(RoversInputModel inputModel) { FillRovers(inputModel); ManagerOperation(); return(Rovers); }
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); }
//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) })); }