diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java index 26b32bf..1627df4 100644 --- a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java @@ -8,8 +8,8 @@ import java.util.logging.Logger; public class MarsRover { Logger logger = Logger.getLogger(this.getClass().getName()); - private enum Rotation {LEFT, RIGHT} + private enum Rotation {LEFT, RIGHT} private final MarsMap marsMap; private Direction currentDirection; @@ -18,8 +18,8 @@ public class MarsRover { currentDirection = startingDirection; } - public Coordinates moveForward() { - return marsMap.updatePositionTowards(currentDirection); + public void moveTowards(Direction direction) { + marsMap.updatePositionTowards(direction); } public Coordinates moveBackwards() { diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRoverCommand.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRoverCommand.java new file mode 100644 index 0000000..11ff0bf --- /dev/null +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MarsRoverCommand.java @@ -0,0 +1,5 @@ +package cat.hack3.codingtests.marsrover; + +public interface MarsRoverCommand { + void execute(); +} diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MoveForwardCommand.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MoveForwardCommand.java new file mode 100644 index 0000000..d0be271 --- /dev/null +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/MoveForwardCommand.java @@ -0,0 +1,13 @@ +package cat.hack3.codingtests.marsrover; + +public class MoveForwardCommand implements MarsRoverCommand{ + private final MarsRover marsRover; + + public MoveForwardCommand(MarsRover marsRover) { + this.marsRover = marsRover; + } + + public void execute() { + marsRover.moveTowards(marsRover.getCurrentDirection()); + } +} diff --git a/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java b/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java index 376c320..ac4d45d 100644 --- a/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java +++ b/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java @@ -14,6 +14,7 @@ import static org.testng.Assert.assertEquals; public class MarsRoverTest { private MarsRover rover; + private MoveForwardCommand moveForwardCommand; @BeforeMethod public void setUp() { @@ -24,15 +25,17 @@ public class MarsRoverTest { var startingCoordinates = Coordinates.of(latitudeStartingPoint, longitudeStartingPoint); var marsMap = new MarsMap(mapHeight, mapWidth, startingCoordinates); rover = new MarsRover(marsMap, SOUTH); + + moveForwardCommand = new MoveForwardCommand(rover); } @Test public void stepForward() { Direction originalDirection = rover.getCurrentDirection(); - Coordinates oneStepForward = rover.moveForward(); + moveForwardCommand.execute(); - assertEquals(oneStepForward, Coordinates.of(3, 3)); + assertEquals(rover.getCurrentCoordinates(), Coordinates.of(3, 3)); assertEquals(rover.getCurrentDirection(), originalDirection); } @@ -69,7 +72,7 @@ public class MarsRoverTest { Coordinates originalCoordinates = rover.getCurrentCoordinates(); Direction originalDirection = rover.getCurrentDirection(); - repeatAction(10, () -> rover.moveForward()); + repeatAction(10, () -> moveForwardCommand.execute()); assertEquals(rover.getCurrentCoordinates(), originalCoordinates); assertEquals(rover.getCurrentDirection(), originalDirection); @@ -91,7 +94,7 @@ public class MarsRoverTest { Coordinates originalCoordinates = rover.getCurrentCoordinates(); rover.turnLeft(); - repeatAction(10, () -> rover.moveForward()); + repeatAction(10, () -> moveForwardCommand.execute()); assertEquals(rover.getCurrentCoordinates(), originalCoordinates); assertEquals(rover.getCurrentDirection(), EAST); @@ -110,23 +113,23 @@ public class MarsRoverTest { @Test public void crazyTour() { - rover.moveForward(); + moveForwardCommand.execute(); assertEquals(rover.getCurrentCoordinates(), Coordinates.of(3, 3)); assertEquals(rover.getCurrentDirection(), SOUTH); rover.turnLeft(); - repeatAction(23, () -> rover.moveForward()); + repeatAction(23, () -> moveForwardCommand.execute()); assertEquals(rover.getCurrentCoordinates(), Coordinates.of(3, 6)); assertEquals(rover.getCurrentDirection(), EAST); repeatAction(3, () -> rover.turnRight()); - repeatAction(9, () -> rover.moveForward()); + repeatAction(9, () -> moveForwardCommand.execute()); assertEquals(rover.getCurrentCoordinates(), Coordinates.of(4, 6)); assertEquals(rover.getCurrentDirection(), NORTH); rover.moveBackwards(); rover.turnRight(); - rover.moveForward(); + moveForwardCommand.execute(); assertEquals(rover.getCurrentCoordinates(), Coordinates.of(5, 7)); assertEquals(rover.getCurrentDirection(), EAST); } diff --git a/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java b/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java index 669c005..965b21d 100644 --- a/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java +++ b/mars-station/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverWithObstaclesTest.java @@ -15,6 +15,7 @@ import static org.testng.Assert.assertNotEquals; public class MarsRoverWithObstaclesTest { private MarsRover rover; + private MoveForwardCommand moveForwardCommand; @BeforeMethod public void setUp() { @@ -32,6 +33,8 @@ public class MarsRoverWithObstaclesTest { ); var marsMap = new MarsMap(mapHeight, mapWidth, startingCoordinates, obstaclesLocalizations); rover = new MarsRover(marsMap, SOUTH); + + moveForwardCommand = new MoveForwardCommand(rover); } @Test @@ -39,7 +42,7 @@ public class MarsRoverWithObstaclesTest { Coordinates originalCoordinates = rover.getCurrentCoordinates(); Direction originalDirection = rover.getCurrentDirection(); - rover.moveForward(); + moveForwardCommand.execute(); assertEquals(rover.getCurrentCoordinates(), originalCoordinates); assertEquals(rover.getCurrentDirection(), originalDirection); @@ -47,18 +50,19 @@ public class MarsRoverWithObstaclesTest { @Test public void afterFindingObstacleWalkAroundUntilFindingNext() { - Coordinates oneStepForward = rover.moveForward(); + moveForwardCommand.execute(); + Coordinates oneStepForward = rover.getCurrentCoordinates(); assertNotEquals(oneStepForward, Coordinates.of(3, 3)); rover.turnLeft(); - rover.moveForward(); - rover.moveForward(); + moveForwardCommand.execute(); + moveForwardCommand.execute(); rover.turnRight(); - rover.moveForward(); - rover.moveForward(); + moveForwardCommand.execute(); + moveForwardCommand.execute(); var currentPosition = Coordinates.of(4, 5); assertEquals(rover.getCurrentCoordinates(), currentPosition); - rover.moveForward(); + moveForwardCommand.execute(); var positionAfterMove = Coordinates.of(5, 4); assertNotEquals(rover.getCurrentCoordinates(), positionAfterMove); }