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); } }
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); }
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); }
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); }
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); }
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); }
private IRover GetDefaultRover() => Rover.Create() .SetDirection(Direction.North) .SetEnergy(100) .Build();