public string SerializeFinal(FinalStatus finalStatus) { string value = ""; foreach (Position finalPosition in finalStatus.FinalRoverPositionList) { value += $"{finalPosition.Coordinate.X} {finalPosition.Coordinate.Y} {finalPosition.WayType}\n"; } return(value); }
public string SerializeFinalStatus(FinalStatus finalStatus) { string output = ""; foreach (Position finalRoverPosition in finalStatus.FinalRoverPositionList) { output += $"{finalRoverPosition.Coordinate.X} {finalRoverPosition.Coordinate.Y} {finalRoverPosition.DirectionType}\n"; } return(output); }
public string ExecuteDiscoveryPlan(string input) { if (_deserializerHelper == null) { throw new ArgumentNullException("discoveryPlanDeserializer"); } DiscoveryPlan discoveryPlan = _deserializerHelper.DeserializeDiscoveryPlan(input); FinalStatus finalStatus = this.ExecuteDiscoveryPlan(discoveryPlan); string output = _deserializerHelper.SerializeFinal(finalStatus); return(output); }
public FinalStatus ExecuteExplorationPlan(ExplorationPlan explorationPlan) { List <IRoverController> roverControllerList = new List <IRoverController>(); foreach (NavigationPlan roverNavigationPlan in explorationPlan.RoverNavigationPlanList) { IRoverController roverController = new RoverController(); roverControllerList.Add(roverController); roverController.ExecuteNavigationPlan(explorationPlan.Plateau, roverNavigationPlan); } FinalStatus finalStatus = new FinalStatus { FinalRoverPositionList = roverControllerList.Select(roverController => roverController.Position).ToList() }; return(finalStatus); }
public string ExecuteExplorationPlan(string input) { if (_explorationPlanDeserializer == null) { throw new ArgumentNullException("explorationPlanDeserializer"); } if (_finalStatusSerializer == null) { throw new ArgumentNullException("finalStatusSerializer"); } ExplorationPlan explorationPlan = _explorationPlanDeserializer.DeserializeExplorationPlan(input); FinalStatus finalStatus = this.ExecuteExplorationPlan(explorationPlan); string output = _finalStatusSerializer.SerializeFinalStatus(finalStatus); return(output); }
public void MarsRoverService_ExecuteExplorationPlan_ValidExplorationPlanInput() { ExplorationPlan explorationPlan = new ExplorationPlan { Plateau = new Plateau { LowerLefttCoordinate = new Coordinate { X = 0, Y = 0 }, UpperRightCoordinate = new Coordinate { X = 5, Y = 5 } }, RoverNavigationPlanList = new List <NavigationPlan> { new NavigationPlan { InitialPosition = new Position { Coordinate = new Coordinate { X = 1, Y = 2 }, DirectionType = DirectionType.N }, InstructionTypeSequence = new List <InstructionType> { InstructionType.L, InstructionType.M, InstructionType.L, InstructionType.M, InstructionType.L, InstructionType.M, InstructionType.L, InstructionType.M, InstructionType.M, } }, new NavigationPlan { InitialPosition = new Position { Coordinate = new Coordinate { X = 3, Y = 3 }, DirectionType = DirectionType.E }, InstructionTypeSequence = new List <InstructionType> { InstructionType.M, InstructionType.M, InstructionType.R, InstructionType.M, InstructionType.M, InstructionType.R, InstructionType.M, InstructionType.R, InstructionType.R, InstructionType.M, } } } }; FinalStatus expectedFinalStatus = new FinalStatus { FinalRoverPositionList = new List <Position> { new Position { Coordinate = new Coordinate { X = 1, Y = 3 }, DirectionType = DirectionType.N }, new Position { Coordinate = new Coordinate { X = 5, Y = 1 }, DirectionType = DirectionType.E } } }; IMarsRoverService marsRoverService = new MarsRoverService(); FinalStatus actualFinalStatus = marsRoverService.ExecuteExplorationPlan(explorationPlan); Assert.Equal(expectedFinalStatus, actualFinalStatus); }
public void MarsRoverService_ValidDiscoveryPlanInput() { DiscoveryPlan discoveryPlan = new DiscoveryPlan { Plateau = new Plateau { LowerLefttCoordinate = new Coordinate { X = 0, Y = 0 }, UpperRightCoordinate = new Coordinate { X = 5, Y = 5 } }, NavigationPlanList = new List <NavigationPlan> { new NavigationPlan { InitialPosition = new Position { Coordinate = new Coordinate { X = 1, Y = 2 }, WayType = WayType.North }, RuleTypeList = new List <RuleType> { RuleType.Left, RuleType.Move, RuleType.Left, RuleType.Move, RuleType.Left, RuleType.Move, RuleType.Left, RuleType.Move, RuleType.Move, } }, new NavigationPlan { InitialPosition = new Position { Coordinate = new Coordinate { X = 3, Y = 3 }, WayType = WayType.East }, RuleTypeList = new List <RuleType> { RuleType.Move, RuleType.Move, RuleType.Right, RuleType.Move, RuleType.Move, RuleType.Right, RuleType.Move, RuleType.Right, RuleType.Right, RuleType.Move, } } } }; FinalStatus expectedFinalStatus = new FinalStatus { FinalRoverPositionList = new List <Position> { new Position { Coordinate = new Coordinate { X = 1, Y = 3 }, WayType = WayType.North }, new Position { Coordinate = new Coordinate { X = 5, Y = 1 }, WayType = WayType.East } } }; IMarsRoverService marsRoverService = new MarsRoverService(); FinalStatus actualFinalStatus = marsRoverService.ExecuteDiscoveryPlan(discoveryPlan); Assert.Equal(expectedFinalStatus, actualFinalStatus); }
public CandidateTrack() { Phases = new List <HirePhases>(); FinalStatus = FinalStatus.ActiveInProgress; }