public void GetDroneCoordinatesFromApiTest() { int recordCount = 0; string droneNavigationInput = "5 5\r\n1 2 N\r\nLMLMLMLMM"; DroneOutputModel expectedResult = new DroneOutputModel() { PositionX = 1, PositionY = 3, Heading = "N" }; using (var container = builder.Build()) { var droneNavigationService = container.Resolve <IDroneNavigationService>(); var model = droneNavigationService.GetDroneCoordinatesFromApi(droneNavigationInput); model.Wait(); recordCount = model.Result.Count; if (model.Result != null && model.Result.Count > 0) { var result = model.Result[0]; Assert.AreEqual(expectedResult.PositionX, result.PositionX); Assert.AreEqual(expectedResult.PositionY, result.PositionY); Assert.AreEqual(expectedResult.Heading, result.Heading); } } }
/// <summary> /// Processes the navigation instructions /// </summary> /// <param name="droneInputCommand"></param> /// <returns></returns> private DroneOutputModel ExecuteCommand(DroneInputModel droneInputCommand) { var commands = droneInputCommand.Instructions.ToCharArray(); DroneOutputModel finalCoodinates = new DroneOutputModel(); foreach (char command in commands) { switch (command) { case 'L': switch (droneInputCommand.Position.Heading) { case "E": droneInputCommand.Position.Heading = "N"; break; case "N": droneInputCommand.Position.Heading = "W"; break; case "W": droneInputCommand.Position.Heading = "S"; break; case "S": droneInputCommand.Position.Heading = "E"; break; } break; case 'R': switch (droneInputCommand.Position.Heading) { case "E": droneInputCommand.Position.Heading = "S"; break; case "N": droneInputCommand.Position.Heading = "E"; break; case "W": droneInputCommand.Position.Heading = "N"; break; case "S": droneInputCommand.Position.Heading = "W"; break; } break; case 'M': droneInputCommand = Move(droneInputCommand); break; } } finalCoodinates.PositionX = droneInputCommand.Position.PositionX; finalCoodinates.PositionY = droneInputCommand.Position.PositionY; finalCoodinates.Heading = droneInputCommand.Position.Heading; return(finalCoodinates); }
public DroneInputModel() { Position = new DroneOutputModel(); }