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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 8
0
 public CandidateTrack()
 {
     Phases      = new List <HirePhases>();
     FinalStatus = FinalStatus.ActiveInProgress;
 }