1
0
Fork 0

turn right succesfull

This commit is contained in:
Xavier Fontanet 2024-06-20 22:32:35 +02:00
parent 4bf2c88852
commit be56b4478a
3 changed files with 27 additions and 6 deletions

View File

@ -12,7 +12,7 @@ public enum Direction {
}; };
} }
public Direction changeDirectionToLeft() { public Direction getNextDirectionRotatingToLeft() {
return switch (this) { return switch (this) {
case NORTH -> WEST; case NORTH -> WEST;
case SOUTH -> EAST; case SOUTH -> EAST;
@ -20,4 +20,13 @@ public enum Direction {
case WEST -> SOUTH; case WEST -> SOUTH;
}; };
} }
public Direction getNextDirectionRotatingToRight() {
return switch (this) {
case NORTH -> EAST;
case SOUTH -> WEST;
case EAST -> SOUTH;
case WEST -> NORTH;
};
}
} }

View File

@ -18,7 +18,11 @@ public class MarsRover {
} }
public Direction turnLeft() { public Direction turnLeft() {
return currentDirection = currentDirection.changeDirectionToLeft(); return currentDirection = currentDirection.getNextDirectionRotatingToLeft();
}
public Direction turnRight() {
return currentDirection = currentDirection.getNextDirectionRotatingToRight();
} }
public Coordinates getCurrentCoordinates() { public Coordinates getCurrentCoordinates() {

View File

@ -68,12 +68,20 @@ public class MarsRoverTest {
@Test @Test
public void turnLef() { public void turnLef() {
Direction currentDirection = rover.turnLeft(); assertEquals(rover.turnLeft(), EAST);
assertEquals(currentDirection, EAST);
assertEquals(rover.turnLeft(), NORTH); assertEquals(rover.turnLeft(), NORTH);
assertEquals(rover.turnLeft(), WEST); assertEquals(rover.turnLeft(), WEST);
repeatAction(2, i -> rover.turnLeft()); assertEquals(rover.turnLeft(), SOUTH);
assertEquals(currentDirection, EAST); assertEquals(rover.turnLeft(), EAST);
}
@Test
public void turnRight() {
assertEquals(rover.turnRight(), WEST);
assertEquals(rover.turnRight(), NORTH);
assertEquals(rover.turnRight(), EAST);
assertEquals(rover.turnRight(), SOUTH);
assertEquals(rover.turnRight(), WEST);
} }
private void repeatAction(int times, IntConsumer actionToRepeat) { private void repeatAction(int times, IntConsumer actionToRepeat) {