From b0e6fc197fe9b4f347a147844d2647b6731c7852 Mon Sep 17 00:00:00 2001 From: Xavier Fontanet Date: Thu, 20 Jun 2024 20:58:34 +0200 Subject: [PATCH] extract Direction from MarsMap --- .../codingtests/marsrover/Coordinates.java | 1 - .../codingtests/marsrover/Direction.java | 23 +++++++++++++++++++ .../hack3/codingtests/marsrover/MarsMap.java | 20 ---------------- .../codingtests/marsrover/MarsRover.java | 10 ++++---- .../codingtests/marsrover/MarsRoverTest.java | 3 +-- 5 files changed, 29 insertions(+), 28 deletions(-) create mode 100644 src/main/java/cat/hack3/codingtests/marsrover/Direction.java diff --git a/src/main/java/cat/hack3/codingtests/marsrover/Coordinates.java b/src/main/java/cat/hack3/codingtests/marsrover/Coordinates.java index 7370088..739bf38 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/Coordinates.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/Coordinates.java @@ -1,7 +1,6 @@ package cat.hack3.codingtests.marsrover; -import cat.hack3.codingtests.marsrover.MarsMap.Direction; import java.util.logging.Logger; diff --git a/src/main/java/cat/hack3/codingtests/marsrover/Direction.java b/src/main/java/cat/hack3/codingtests/marsrover/Direction.java new file mode 100644 index 0000000..9d78ddc --- /dev/null +++ b/src/main/java/cat/hack3/codingtests/marsrover/Direction.java @@ -0,0 +1,23 @@ +package cat.hack3.codingtests.marsrover; + +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; + }; + } + + public Direction changeDirectionToLeft() { + return switch (this) { + case NORTH -> WEST; + case SOUTH -> EAST; + case EAST -> NORTH; + case WEST -> SOUTH; + }; + } +} diff --git a/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java b/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java index 6623c7b..6892c06 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/MarsMap.java @@ -1,18 +1,6 @@ package cat.hack3.codingtests.marsrover; -import static cat.hack3.codingtests.marsrover.MarsMap.Direction.*; - public class MarsMap { - 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; @@ -21,12 +9,4 @@ public class MarsMap { this.height = height; } - public Direction changeDirectionToLeft(Direction currentDirection) { - return switch (currentDirection) { - case NORTH -> WEST; - case SOUTH -> EAST; - case EAST -> NORTH; - case WEST -> SOUTH; - }; - } } diff --git a/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java b/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java index d8bf5da..715d5da 100644 --- a/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java +++ b/src/main/java/cat/hack3/codingtests/marsrover/MarsRover.java @@ -3,9 +3,9 @@ package cat.hack3.codingtests.marsrover; public class MarsRover { private final MarsMap marsMap; private final Coordinates currentCoordinates; - private MarsMap.Direction currentDirection; + private Direction currentDirection; - public MarsRover(MarsMap marsMap, Coordinates startingCoordinates, MarsMap.Direction startingDirection) { + public MarsRover(MarsMap marsMap, Coordinates startingCoordinates, Direction startingDirection) { this.marsMap = marsMap; currentCoordinates = startingCoordinates; currentDirection = startingDirection; @@ -19,8 +19,8 @@ public class MarsRover { return currentCoordinates.updatePositionTowards(currentDirection.reversed()); } - public MarsMap.Direction turnLeft() { - currentDirection = marsMap.changeDirectionToLeft(currentDirection); + public Direction turnLeft() { + currentDirection = currentDirection.changeDirectionToLeft(); return currentDirection; } @@ -28,7 +28,7 @@ public class MarsRover { return currentCoordinates.copy(); } - public MarsMap.Direction getCurrentDirection() { + public Direction getCurrentDirection() { 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 c4649d9..03adc83 100644 --- a/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java +++ b/src/test/java/cat/hack3/codingtests/marsrover/MarsRoverTest.java @@ -6,8 +6,7 @@ import org.testng.annotations.Test; import java.util.function.IntConsumer; import java.util.stream.IntStream; -import static cat.hack3.codingtests.marsrover.MarsMap.Direction; -import static cat.hack3.codingtests.marsrover.MarsMap.Direction.*; +import static cat.hack3.codingtests.marsrover.Direction.*; import static org.testng.Assert.assertEquals; public class MarsRoverTest {