diff --git a/src/main/java/cat/hack3/codingtests/marsrover/ui/ClientCommandInterface.java b/src/main/java/cat/hack3/codingtests/marsrover/ui/ClientCommandInterface.java index 90c72e9..4dd32f1 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/ui/ClientCommandInterface.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/ui/ClientCommandInterface.java @@ -26,13 +26,11 @@ public class ClientCommandInterface { private void start() { output(PresentationMessage.INTRO); - //MarsRover rover = roverInitializer.autoInitialize(); - MarsRover rover = roverInitializer.initializeFromUserInputs(); + MarsRover rover = roverInitializer.autoInitialize(); + //MarsRover rover = roverInitializer.initializeFromUserInputs(); var commandsPerformer = new RoverCommandsPerformer(reader, rover); commandsPerformer.acceptCommandsUntilExitSignal(); } - - } diff --git a/src/main/java/cat/hack3/codingtests/marsrover/ui/RoverInitializer.java b/src/main/java/cat/hack3/codingtests/marsrover/ui/RoverInitializer.java index 9d4ac44..988de25 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/ui/RoverInitializer.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/ui/RoverInitializer.java @@ -6,6 +6,7 @@ import cat.hack3.codingtests.marsrover.MarsMap; import cat.hack3.codingtests.marsrover.MarsRover; import java.util.InputMismatchException; +import java.util.List; import java.util.Scanner; import static cat.hack3.codingtests.marsrover.ui.UICommons.output; @@ -53,12 +54,19 @@ public class RoverInitializer { } MarsRover autoInitialize() { //to test more quickly - return deployRover(10, 10, 2, 3, Direction.SOUTH); + List obstacles = List.of( + Coordinates.of(3, 3), + Coordinates.of(5, 5), + Coordinates.of(7, 7), + Coordinates.of(9, 9), + Coordinates.of(10, 10) + ); + return deployRover(10, 10, 2, 3, Direction.SOUTH, obstacles); } - private MarsRover deployRover(int mapHeight, int mapWidth, int latitudeStartingPoint, int longitudeStartingPoint, Direction startingDirection) { + private MarsRover deployRover(int mapHeight, int mapWidth, int latitudeStartingPoint, int longitudeStartingPoint, Direction startingDirection, List... obstaclesLocalizations) { var startingCoordinates = Coordinates.of(latitudeStartingPoint, longitudeStartingPoint); - var marsMap = new MarsMap(mapHeight, mapWidth, startingCoordinates); + var marsMap = new MarsMap(mapHeight, mapWidth, startingCoordinates, obstaclesLocalizations); return new MarsRover(marsMap, startingDirection); } } diff --git a/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java b/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java index 380d567..0d01cd0 100644 --- a/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java +++ b/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java @@ -7,6 +7,7 @@ import java.util.List; import static cat.hack3.codingtests.marsrover.Direction.SOUTH; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotEquals; public class MarsRoverWithObstaclesTest { @@ -33,10 +34,30 @@ public class MarsRoverWithObstaclesTest { @Test public void findAnObstacleAtFirstMove() { Coordinates originalCoordinates = rover.getCurrentCoordinates(); + Direction originalDirection = rover.getCurrentDirection(); rover.moveForward(); assertEquals(rover.getCurrentCoordinates(), originalCoordinates); + assertEquals(rover.getCurrentDirection(), originalDirection); + } + + @Test + public void afterFindingObstacleWalkAroundUntilFindingNext() { + Coordinates oneStepForward = rover.moveForward(); + assertNotEquals(oneStepForward, Coordinates.of(3, 3)); + + rover.turnLeft(); + rover.moveForward(); + rover.moveForward(); + rover.turnRight(); + rover.moveForward(); + rover.moveForward(); + var currentPosition = Coordinates.of(4, 5); + assertEquals(rover.getCurrentCoordinates(), currentPosition); + rover.moveForward(); + var positionAfterMove = Coordinates.of(5, 4); + assertNotEquals(rover.getCurrentCoordinates(), positionAfterMove); } }