Beispiel #1
0
        static void Main(string[] args)
        {
            var obstacleMap = new List <Coordinates>()
            {
                Coordinates.Create(3, 5),
                Coordinates.Create(6, 4)
            };

            var obstacleDetector = ObstacleDetector.Create(obstacleMap);

            var rover = Rover.Create(1, 1, "N", obstacleDetector);

            Console.WriteLine($"Welcome to Mars, you landed in x: {rover.Position.X} y: {rover.Position.Y} and your direction is {rover.Direction.Code}");
            Console.WriteLine("Please insert commands:");

            while (true)
            {
                var commandString = Console.ReadLine();

                if (commandString == "Quit")
                {
                    return;
                }

                var result = rover.ExecuteCommandSequence(commandString.ToCharArray());

                Console.WriteLine(result.Result.ToString());
                Console.WriteLine($"Your actual position is x: {rover.Position.X} y: {rover.Position.Y} and your direction is {rover.Direction.Code}");
                Console.WriteLine(result.Message);
            }
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            Display.SetConsoleDefaults();

            var surface = Surface.Create()
                          .WithObstacles(weight: 10)
                          .SetDimension(15, 15)
                          .SetRover(Rover.Create()
                                    .SetDirection(Direction.North)
                                    .SetEnergy(100)
                                    .Build())
                          .Build();

            Display.PrintPanel(surface, null);

            while (true)
            {
                Display.PrintCommandRequest();

                var commands = System.Console.ReadLine();
                var message  = surface.GetRover().ExecuteCommands(commands);

                Display.Clear();

                Display.PrintPanel(surface, message);
            }
        }
        public void rover_turn_right()
        {
            var rover = Rover.Create()
                        .SetDirection(Direction.North)
                        .SetEnergy(100)
                        .Build();

            var surface = Surface.Create()
                          .WithoutObstacles()
                          .SetDimension(10, 10)
                          .SetRover(rover)
                          .Build();

            rover.ExecuteCommands("R");
            Assert.True(rover.GetDirection() == Direction.East);

            rover.ExecuteCommands("R");
            Assert.True(rover.GetDirection() == Direction.South);

            rover.ExecuteCommands("R");
            Assert.True(rover.GetDirection() == Direction.West);

            rover.ExecuteCommands("R");
            Assert.True(rover.GetDirection() == Direction.North);
        }
Beispiel #4
0
        public void RoverMovement(string firstLine, string secondLine, string thirdLine, string result)
        {
            Rover rover = Rover.Create(firstLine, secondLine);

            rover.Process(thirdLine);

            rover.ToString().Should().Be(result);
        }
Beispiel #5
0
        public void Create_WithouthObstacleDetectionSystem()
        {
            int    initialPositionX = 1;
            int    initialPositionY = 2;
            string initialDirection = "N";
            var    obstacleDetector = ObstacleDetector.Null;

            var rover = Rover.Create(initialPositionX, initialPositionY, initialDirection, obstacleDetector);
        }
Beispiel #6
0
        public void RoverCreationFromSyntax(string firstLine, string secondLine, int areaWidth, int areaHeight, string result)
        {
            Rover rover = Rover.Create(firstLine, secondLine);

            rover.Area.Width.Should().Be(areaWidth);
            rover.Area.Height.Should().Be(areaHeight);

            rover.ToString().Should().Be(result);
        }
Beispiel #7
0
        public void Create_VerifyObjectConfiguration()
        {
            int    initialPositionX = 1;
            int    initialPositionY = 2;
            string initialDirection = "N";
            var    obstacleDetector = ObstacleDetector.Create(new List <Coordinates>());

            var initialPosition = Coordinates.Create(initialPositionX, initialPositionY);
            var direction       = DirectionsList.GetByCode(initialDirection);

            var rover = Rover.Create(initialPositionX, initialPositionY, initialDirection, obstacleDetector);

            Assert.AreEqual(direction, rover.Direction);
            Assert.AreEqual(initialPosition, rover.Position);
        }
        public void rover_advance()
        {
            var rover = Rover.Create()
                        .SetDirection(Direction.North)
                        .SetEnergy(100)
                        .Build();

            var surface = Surface.Create()
                          .WithoutObstacles()
                          .SetDimension(10, 10)
                          .SetRover(rover)
                          .Build();

            var x = rover.GetPosition().GetX();
            var y = rover.GetPosition().GetY();

            rover.ExecuteCommands("A");

            Assert.True(rover.GetPosition().GetY() == y + 1);
            Assert.True(rover.GetPosition().GetX() == x);
        }
        public void rover_wants_go_out_on_y_axis_but_keeps_in_limit()
        {
            var rover = Rover.Create()
                        .SetDirection(Direction.North)
                        .SetEnergy(100)
                        .Build();

            var surface = Surface.Create()
                          .WithoutObstacles()
                          .SetDimension(10, 10)
                          .SetRover(rover)
                          .Build();

            rover.ExecuteCommands("AAAAAAAAAA");
            Assert.True(rover.GetPosition().GetY() == surface.GetHeight());
            Assert.True(rover.GetDirection() == Direction.North);

            rover.ExecuteCommands("LLAAAAAAAAAA");
            Assert.True(rover.GetPosition().GetY() == 1);
            Assert.True(rover.GetDirection() == Direction.South);
        }
        public void rover_cannot_back_over_a_rock()
        {
            var rover = Rover.Create()
                        .SetDirection(Direction.North)
                        .SetEnergy(5)
                        .Build();

            var surface = Surface.Create()
                          .WithObstacles(weight: 100)
                          .SetDimension(10, 10)
                          .SetRover(rover)
                          .Build();

            var x = rover.GetPosition().GetX();
            var y = rover.GetPosition().GetY();

            var commands = "BLBLBLB";

            rover.ExecuteCommands(commands);

            Assert.True(rover.GetPosition().GetY() == y);
            Assert.True(rover.GetPosition().GetX() == x);
        }
        public void rover_waste_full_energy_when_execute_commands_and_stop()
        {
            var rover = Rover.Create()
                        .SetDirection(Direction.North)
                        .SetEnergy(5)
                        .Build();

            var surface = Surface.Create()
                          .WithoutObstacles()
                          .SetDimension(10, 10)
                          .SetRover(rover)
                          .Build();

            var x = rover.GetPosition().GetX();
            var y = rover.GetPosition().GetY();

            var commands = "RLRLRLRLRLRLRLRLRLA";

            rover.ExecuteCommands(commands);

            Assert.True(rover.GetPosition().GetY() == y);
            Assert.True(rover.GetPosition().GetX() == x);
        }
Beispiel #12
0
 private IRover GetDefaultRover() => Rover.Create()
 .SetDirection(Direction.North)
 .SetEnergy(100)
 .Build();