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); }