diff --git a/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java b/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java index d9b7318..6623c7b 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java @@ -3,7 +3,16 @@ package cat.hack3.codingtests.marsrover; import static cat.hack3.codingtests.marsrover.MarsMap.Direction.*; public class MarsMap { - public enum Direction {NORTH, SOUTH, EAST, WEST} + public enum Direction {NORTH, SOUTH, EAST, WEST; + public Direction reversed() { + return switch (this) { + case NORTH -> SOUTH; + case SOUTH -> NORTH; + case EAST -> WEST; + case WEST -> EAST; + }; + } + } private final int width; private final int height; diff --git a/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java b/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java index 1335384..cdb3036 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java @@ -15,6 +15,10 @@ public class MarsRover { return currentCoordinates.updatePositionTowards(currentDirection); } + public Coordinates moveBackwards() { + return currentCoordinates.updatePositionTowards(currentDirection.reversed()); + } + public MarsMap.Direction turnLeft() { currentDirection = marsMap.changeDirectionToLeft(currentDirection); return currentDirection; diff --git a/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java b/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java index a11b4ba..7a0d148 100644 --- a/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java +++ b/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java @@ -37,6 +37,13 @@ public class MarsRoverTest { assertEquals(rover.getCurrentDirection(), SOUTH); } + @Test + public void stepBackwards() { + Coordinates currentPosition = rover.moveBackwards(); + assertEquals(currentPosition, Coordinates.of(1, 3)); + assertEquals(rover.getCurrentDirection(), SOUTH); + } + @Test public void turnLef() { Direction currentDirection = rover.turnLeft();