public void TestScenarioMultipleRovers()
        {
            Plateau plateau = new Plateau()
            {
                MaxX = 5, MaxY = 5
            };

            Position positionFirst = new Position()
            {
                Coordinate = new Coordinates {
                    X = 1, Y = 2
                },
                Direction = Directions.N
            };
            MarsRover roverFirst = new MarsRover(positionFirst);
            string    movesFirst = "LMLMLMLMM";

            Position positionSecond = new Position()
            {
                Coordinate = new Coordinates {
                    X = 3, Y = 3
                },
                Direction = Directions.E
            };
            MarsRover roverSecond = new MarsRover(positionSecond);
            string    movesSecond = "MMRMMRMRRM";



            NasaMarsRoverController controller = new NasaMarsRoverController()
            {
                MarsPlateau   = plateau,
                MarsRoverList = new List <MarsRover>()
                {
                    roverFirst, roverSecond
                },
                MoveCommandList = new List <string>()
                {
                    movesFirst, movesSecond
                }
            };


            List <Position> curPositionList = controller.MoveMarsRoversOnPlateau();

            if (curPositionList != null && curPositionList.Count > 0)
            {
                Position firstPosition  = curPositionList[0];
                Position secondPosition = curPositionList[1];

                string actualOutput =
                    $"{firstPosition.Coordinate.X} {firstPosition.Coordinate.Y} {firstPosition.Direction.ToString()} " +
                    $"{secondPosition.Coordinate.X} {secondPosition.Coordinate.Y} {secondPosition.Direction.ToString()}";

                string expectedOutput = @"1 3 N 5 1 E";

                Assert.AreEqual(expectedOutput, actualOutput);
            }
        }
        public void TestScenarioSecondRover()
        {
            Plateau plateau = new Plateau()
            {
                MaxX = 5, MaxY = 5
            };
            Position position = new Position()
            {
                Coordinate = new Coordinates {
                    X = 3, Y = 3
                },
                Direction = Directions.E
            };
            MarsRover rover = new MarsRover(position);
            string    moves = "MMRMMRMRRM";

            NasaMarsRoverController controller = new NasaMarsRoverController()
            {
                MarsPlateau   = plateau,
                MarsRoverList = new List <MarsRover>()
                {
                    rover
                },
                MoveCommandList = new List <string>()
                {
                    moves
                }
            };


            List <Position> curPositionList = controller.MoveMarsRoversOnPlateau();

            if (curPositionList != null && curPositionList.Count > 0)
            {
                Position curPosition = curPositionList[0];

                var actualOutput   = $"{curPosition.Coordinate.X} {curPosition.Coordinate.Y} {position.Direction.ToString()}";
                var expectedOutput = "5 1 E";

                Assert.AreEqual(expectedOutput, actualOutput);
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Mars Rover Navigator Program..");
            Console.WriteLine("You can enter Test Input..");

            List <int> maxPlatauePoints =
                Console.ReadLine().Trim().Split(' ').Select(int.Parse).ToList();
            Plateau plateau = new Plateau()
            {
                MaxX = maxPlatauePoints[0], MaxY = maxPlatauePoints[1]
            };

            string[] startPosFirst = Console.ReadLine().Trim().Split(' ');
            Position positionFirst = null;

            if (startPosFirst != null && startPosFirst.Length == 3)
            {
                positionFirst = new Position()
                {
                    Coordinate = new Coordinates
                    {
                        X = Convert.ToInt32(startPosFirst[0]),
                        Y = Convert.ToInt32(startPosFirst[1])
                    },
                    Direction = (Directions)Enum.Parse(typeof(Directions), startPosFirst[2])
                };
            }

            string    movesFirst = Console.ReadLine().ToUpper();
            MarsRover roverFirst = new MarsRover(positionFirst);

            string[] startPosSecond = Console.ReadLine().Trim().Split(' ');
            Position positionSecond = null;

            if (startPosSecond != null && startPosSecond.Length == 3)
            {
                positionSecond = new Position()
                {
                    Coordinate = new Coordinates
                    {
                        X = Convert.ToInt32(startPosSecond[0]),
                        Y = Convert.ToInt32(startPosSecond[1])
                    },
                    Direction = (Directions)Enum.Parse(typeof(Directions), startPosSecond[2])
                };
            }

            MarsRover roverSecond = new MarsRover(positionSecond);
            string    movesSecond = Console.ReadLine().ToUpper();

            try
            {
                NasaMarsRoverController controller = new NasaMarsRoverController()
                {
                    MarsPlateau   = plateau,
                    MarsRoverList = new List <MarsRover>()
                    {
                        roverFirst, roverSecond
                    },
                    MoveCommandList = new List <string>()
                    {
                        movesFirst, movesSecond
                    }
                };


                List <Position> curPositionList = controller.MoveMarsRoversOnPlateau();
                if (curPositionList != null && curPositionList.Count > 0)
                {
                    Position firstPosition  = curPositionList[0];
                    Position secondPosition = curPositionList[1];
                    Console.WriteLine($"{firstPosition.Coordinate.X} {firstPosition.Coordinate.Y} {firstPosition.Direction.ToString()} \n" +
                                      $"{secondPosition.Coordinate.X} {secondPosition.Coordinate.Y} {secondPosition.Direction.ToString()}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }