From 5da7895ecc90d2d1fe02514ec5d798a87ea2419d Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 11:23:06 +0200 Subject: [PATCH 1/6] Use logger instead of printStackTrace --- driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java index e84cfe2..d03f50e 100644 --- a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java +++ b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java @@ -1,12 +1,16 @@ package fr.ufrst.m1info.gl.tpariney; import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Hello world! * */ public class App { + private static final Logger logger = Logger.getLogger("RobotDriver"); + public static void main( String[] args ) { try { @@ -18,7 +22,7 @@ public class App { System.out.println("position du robot : (" + robot.getXposition() + ", " + robot.getYposition() + ")"); } catch (UnlandedRobotException | InterruptedException e) { - e.printStackTrace(); + logger.log(Level.SEVERE, e.getMessage(), e); } } } -- GitLab From c0edbfa0152704c7bc34a7b2c41ee2934d3501d3 Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 11:25:34 +0200 Subject: [PATCH 2/6] Don't catch InterruptedException --- driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java index d03f50e..f2e3009 100644 --- a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java +++ b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java @@ -11,8 +11,7 @@ import java.util.logging.Logger; public class App { private static final Logger logger = Logger.getLogger("RobotDriver"); - public static void main( String[] args ) - { + public static void main( String[] args ) throws InterruptedException { try { Robot robot = new Robot(); robot.land(new Coordinates(3, 0), new LandSensor(new Random())); @@ -21,7 +20,7 @@ public class App { robot.moveForward(); System.out.println("position du robot : (" + robot.getXposition() + ", " + robot.getYposition() + ")"); - } catch (UnlandedRobotException | InterruptedException e) { + } catch (UnlandedRobotException e) { logger.log(Level.SEVERE, e.getMessage(), e); } } -- GitLab From ee930711beca97a06dadc8d1c5b49c07879b3e6d Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 11:27:08 +0200 Subject: [PATCH 3/6] Cast subtraction operands to double --- robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java index da90d27..dab018f 100644 --- a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java +++ b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java @@ -16,6 +16,6 @@ public class LandSensor { } public static double distance(Coordinates coordinate1, Coordinates coordinate2) { - return Math.sqrt(Math.pow(coordinate1.getX()-coordinate2.getX(), 2) + Math.pow(coordinate1.getY()-coordinate2.getY(),2)); + return Math.sqrt(Math.pow((double)coordinate1.getX() - coordinate2.getX(), 2) + Math.pow((double)coordinate1.getY() - coordinate2.getY(), 2)); } } -- GitLab From c414e95abfddd64ead4859b269065213abfff41b Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 11:32:29 +0200 Subject: [PATCH 4/6] Fix code style issues --- .../main/java/fr/ufrst/m1info/gl/tpariney/Battery.java | 2 +- .../fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java | 1 - .../src/main/java/fr/ufrst/m1info/gl/tpariney/App.java | 10 ++++++---- .../java/fr/ufrst/m1info/gl/tpariney/MapTools.java | 3 +++ .../java/fr/ufrst/m1info/gl/tpariney/RoadBook.java | 4 ---- .../ufrst/m1info/gl/tpariney/RoadBookCalculator.java | 7 +++++-- .../main/java/fr/ufrst/m1info/gl/tpariney/Robot.java | 2 +- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/battery/src/main/java/fr/ufrst/m1info/gl/tpariney/Battery.java b/battery/src/main/java/fr/ufrst/m1info/gl/tpariney/Battery.java index a783349..2b68abe 100644 --- a/battery/src/main/java/fr/ufrst/m1info/gl/tpariney/Battery.java +++ b/battery/src/main/java/fr/ufrst/m1info/gl/tpariney/Battery.java @@ -6,7 +6,7 @@ import java.util.TimerTask; public class Battery { - private final long CHARGE_TOP = 1000; + private static final long CHARGE_TOP = 1000; private float chargeLevel; public Battery() { diff --git a/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java b/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java index dd6ddb1..6ac6bae 100644 --- a/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java +++ b/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java @@ -15,7 +15,6 @@ public class BatteryUnitTest { Assert.assertEquals(111f, cell.getChargeLevel(),0); } - @Ignore @Test public void testSetup() throws InterruptedException { Battery cell = new Battery(); diff --git a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java index f2e3009..7d7aabd 100644 --- a/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java +++ b/driver/src/main/java/fr/ufrst/m1info/gl/tpariney/App.java @@ -15,11 +15,13 @@ public class App { try { Robot robot = new Robot(); robot.land(new Coordinates(3, 0), new LandSensor(new Random())); - System.out.println("position du robot : (" + robot.getXposition() + - ", " + robot.getYposition() + ")"); + if (logger.isLoggable(Level.INFO)) { + logger.info(String.format("position du robot : (%d, %d)", robot.getXposition(), robot.getYposition())); + } robot.moveForward(); - System.out.println("position du robot : (" + robot.getXposition() + - ", " + robot.getYposition() + ")"); + if (logger.isLoggable(Level.INFO)) { + logger.info(String.format("position du robot : (%d, %d)", robot.getXposition(), robot.getYposition())); + } } catch (UnlandedRobotException e) { logger.log(Level.SEVERE, e.getMessage(), e); } diff --git a/maptools/src/main/java/fr/ufrst/m1info/gl/tpariney/MapTools.java b/maptools/src/main/java/fr/ufrst/m1info/gl/tpariney/MapTools.java index 32a2b22..a57b970 100644 --- a/maptools/src/main/java/fr/ufrst/m1info/gl/tpariney/MapTools.java +++ b/maptools/src/main/java/fr/ufrst/m1info/gl/tpariney/MapTools.java @@ -1,6 +1,9 @@ package fr.ufrst.m1info.gl.tpariney; public class MapTools { + private MapTools() { + throw new IllegalStateException("Utility class"); + } static Coordinates nextForwardPosition(Coordinates position, Direction direction) { if (direction == Direction.NORTH) diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBook.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBook.java index 10b5dbf..727be1e 100644 --- a/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBook.java +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBook.java @@ -6,16 +6,12 @@ import java.util.Iterator; import java.util.List; public class RoadBook { - private List instructions; private final Iterator instructionIterator; - public RoadBook(List instructions) { - this.instructions = instructions; instructionIterator = instructions.iterator(); } - public boolean hasInstruction() { return instructionIterator.hasNext(); } diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBookCalculator.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBookCalculator.java index 0370ada..8cab53f 100644 --- a/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBookCalculator.java +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tpariney/RoadBookCalculator.java @@ -4,9 +4,12 @@ import java.util.ArrayList; import java.util.List; public class RoadBookCalculator { + private RoadBookCalculator() { + throw new IllegalStateException("Utility class"); + } - public static RoadBook calculateRoadBook(Direction direction, Coordinates position, Coordinates destination, ArrayList instructions) { - List directionList = new ArrayList(); + public static RoadBook calculateRoadBook(Direction direction, Coordinates position, Coordinates destination, List instructions) { + List directionList = new ArrayList<>(); if (destination.getX() < position.getX()) directionList.add(Direction.WEST); if (destination.getX() > position.getX()) directionList.add(Direction.EAST); if (destination.getY() < position.getY()) directionList.add(Direction.SOUTH); diff --git a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/Robot.java b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/Robot.java index 394629b..c6b65da 100644 --- a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/Robot.java +++ b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/Robot.java @@ -110,6 +110,6 @@ public class Robot { public void computeRoadTo(Coordinates destination) throws UnlandedRobotException { if (!isLanded) throw new UnlandedRobotException(); - setRoadBook(calculateRoadBook(direction, position, destination, new ArrayList())); + setRoadBook(calculateRoadBook(direction, position, destination, new ArrayList<>())); } } -- GitLab From 58c70dab36e7f42d6d797c19cee2ea074cb7439d Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 12:04:20 +0200 Subject: [PATCH 5/6] Use awaitility for battery test --- battery/pom.xml | 6 ++++++ .../ufrst/m1info/gl/tpariney/BatteryUnitTest.java | 15 ++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/battery/pom.xml b/battery/pom.xml index 9a66e90..6bbae2f 100644 --- a/battery/pom.xml +++ b/battery/pom.xml @@ -25,6 +25,12 @@ 4.13.1 test + + org.awaitility + awaitility + 4.3.0 + test + diff --git a/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java b/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java index 6ac6bae..2464cd3 100644 --- a/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java +++ b/battery/src/test/java/fr/ufrst/m1info/gl/tpariney/BatteryUnitTest.java @@ -1,9 +1,12 @@ package fr.ufrst.m1info.gl.tpariney; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; +import java.util.concurrent.TimeUnit; + +import static org.awaitility.Awaitility.await; + public class BatteryUnitTest { @@ -20,10 +23,12 @@ public class BatteryUnitTest { Battery cell = new Battery(); Assert.assertEquals(100f, cell.getChargeLevel(), 0); cell.setUp(); - Thread.sleep(1000); - Assert.assertEquals(111f, cell.getChargeLevel(), 0); - Thread.sleep(1000); - Assert.assertEquals(123.100006f, cell.getChargeLevel(), 0); + await().atMost(1100, TimeUnit.MILLISECONDS).until( + () -> 111f == cell.getChargeLevel() + ); + await().atMost(1100, TimeUnit.MILLISECONDS).until( + () -> 123.100006f == cell.getChargeLevel() + ); } @Test (expected = InsufficientChargeException.class) -- GitLab From b041fd9859df1146ac78a7b61236d58ad1d5411f Mon Sep 17 00:00:00 2001 From: tpariney Date: Thu, 25 Sep 2025 12:14:49 +0200 Subject: [PATCH 6/6] Add more unit tests --- .../gl/tpariney/CoordinatesUnitTest.java | 13 +++++ .../m1info/gl/tpariney/MapToolsUnitTests.java | 56 +++++++++++++++++++ robot/pom.xml | 6 -- .../ufrst/m1info/gl/tpariney/LandSensor.java | 2 +- .../gl/tpariney/LandSensorUnitTests.java | 19 +++++++ 5 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/CoordinatesUnitTest.java create mode 100644 maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/MapToolsUnitTests.java create mode 100644 robot/src/test/java/fr/ufrst/m1info/gl/tpariney/LandSensorUnitTests.java diff --git a/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/CoordinatesUnitTest.java b/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/CoordinatesUnitTest.java new file mode 100644 index 0000000..81beb70 --- /dev/null +++ b/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/CoordinatesUnitTest.java @@ -0,0 +1,13 @@ +package fr.ufrst.m1info.gl.tpariney; + +import org.junit.Assert; +import org.junit.Test; + +public class CoordinatesUnitTest { + @Test + public void testGetters() { + Coordinates coordinates = new Coordinates(1, 2); + Assert.assertEquals(1, coordinates.getX()); + Assert.assertEquals(2, coordinates.getY()); + } +} diff --git a/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/MapToolsUnitTests.java b/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/MapToolsUnitTests.java new file mode 100644 index 0000000..4f68915 --- /dev/null +++ b/maptools/src/test/java/fr/ufrst/m1info/gl/tpariney/MapToolsUnitTests.java @@ -0,0 +1,56 @@ +package fr.ufrst.m1info.gl.tpariney; + +import org.junit.Assert; +import org.junit.Test; + +public class MapToolsUnitTests { + @Test + public void nextForwardPosition() { + Coordinates position = new Coordinates(0, 0); + Coordinates north = MapTools.nextForwardPosition(position, Direction.NORTH); + Assert.assertEquals(0, north.getX()); + Assert.assertEquals(1, north.getY()); + Coordinates south = MapTools.nextForwardPosition(position, Direction.SOUTH); + Assert.assertEquals(0, south.getX()); + Assert.assertEquals(-1, south.getY()); + Coordinates east = MapTools.nextForwardPosition(position, Direction.EAST); + Assert.assertEquals(1, east.getX()); + Assert.assertEquals(0, east.getY()); + Coordinates west = MapTools.nextForwardPosition(position, Direction.WEST); + Assert.assertEquals(-1, west.getX()); + Assert.assertEquals(0, west.getY()); + } + + @Test + public void nextBackwardPosition() { + Coordinates position = new Coordinates(0, 0); + Coordinates north = MapTools.nextBackwardPosition(position, Direction.NORTH); + Assert.assertEquals(0, north.getX()); + Assert.assertEquals(-1, north.getY()); + Coordinates south = MapTools.nextBackwardPosition(position, Direction.SOUTH); + Assert.assertEquals(0, south.getX()); + Assert.assertEquals(1, south.getY()); + Coordinates east = MapTools.nextBackwardPosition(position, Direction.EAST); + Assert.assertEquals(-1, east.getX()); + Assert.assertEquals(0, east.getY()); + Coordinates west = MapTools.nextBackwardPosition(position, Direction.WEST); + Assert.assertEquals(1, west.getX()); + Assert.assertEquals(0, west.getY()); + } + + @Test + public void counterClockwise() { + Assert.assertEquals(Direction.WEST, MapTools.counterclockwise(Direction.NORTH)); + Assert.assertEquals(Direction.SOUTH, MapTools.counterclockwise(Direction.WEST)); + Assert.assertEquals(Direction.EAST, MapTools.counterclockwise(Direction.SOUTH)); + Assert.assertEquals(Direction.NORTH, MapTools.counterclockwise(Direction.EAST)); + } + + @Test + public void clockwise() { + Assert.assertEquals(Direction.EAST, MapTools.clockwise(Direction.NORTH)); + Assert.assertEquals(Direction.SOUTH, MapTools.clockwise(Direction.EAST)); + Assert.assertEquals(Direction.WEST, MapTools.clockwise(Direction.SOUTH)); + Assert.assertEquals(Direction.NORTH, MapTools.clockwise(Direction.WEST)); + } +} diff --git a/robot/pom.xml b/robot/pom.xml index 572739b..c5eccc5 100644 --- a/robot/pom.xml +++ b/robot/pom.xml @@ -44,12 +44,6 @@ 1.0-SNAPSHOT compile - - fr.ufrst.m1info.gl.tpariney - roadBook - 1.0-SNAPSHOT - compile - diff --git a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java index dab018f..5bbd22c 100644 --- a/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java +++ b/robot/src/main/java/fr/ufrst/m1info/gl/tpariney/LandSensor.java @@ -4,7 +4,7 @@ import java.util.Random; public class LandSensor { - private Random random; + private final Random random; public LandSensor(Random random) { this.random = random; diff --git a/robot/src/test/java/fr/ufrst/m1info/gl/tpariney/LandSensorUnitTests.java b/robot/src/test/java/fr/ufrst/m1info/gl/tpariney/LandSensorUnitTests.java new file mode 100644 index 0000000..64e5ff4 --- /dev/null +++ b/robot/src/test/java/fr/ufrst/m1info/gl/tpariney/LandSensorUnitTests.java @@ -0,0 +1,19 @@ +package fr.ufrst.m1info.gl.tpariney; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Random; + +public class LandSensorUnitTests { + @Test + public void distance() { + Coordinates pos = new Coordinates(0, 0); + Coordinates pos1 = new Coordinates(1, 0); + Coordinates pos2 = new Coordinates(0, 1); + Coordinates pos3 = new Coordinates(-1, -1); + Assert.assertEquals(1, LandSensor.distance(pos, pos1), 0); + Assert.assertEquals(1, LandSensor.distance(pos, pos2), 0); + Assert.assertEquals(Math.sqrt(2), LandSensor.distance(pos, pos3), 0); + } +} -- GitLab