From 64119975937c9bc2e4908edb7a06389c091ee248 Mon Sep 17 00:00:00 2001 From: arnaudlabourel <arnaud.labourel@univ-amu.fr> Date: Wed, 25 Oct 2023 10:33:39 +0200 Subject: [PATCH] added test for grid --- build.gradle | 12 +++-------- .../app/SimulatorApplication.java | 6 +++--- .../{firefighter => }/app/SimulatorMain.java | 2 +- .../controller/Controller.java | 18 ++++++++--------- .../controller/PersistentToggleGroup.java | 2 +- .../java/{firefighter => }/model/Board.java | 4 ++-- .../model/FirefighterBoard.java | 8 ++++++-- .../{firefighter => }/model/ModelElement.java | 2 +- src/main/java/module-info.java | 8 ++++---- .../java/{firefighter => }/util/Position.java | 2 +- .../view/FirefighterGrid.java | 14 ++++++------- .../java/{firefighter => }/view/Grid.java | 20 +++++++++++++++---- .../{firefighter => }/view/ViewElement.java | 2 +- .../{firefighter => }/view/DarkTheme.css | 0 .../{firefighter => }/view/view.fxml | 4 ++-- .../model/FirefighterBoardTest.java | 12 ++++++++++- src/test/java/view/FirefighterGridTest.java | 20 +++++++++++++++++++ 17 files changed, 87 insertions(+), 49 deletions(-) rename src/main/java/{firefighter => }/app/SimulatorApplication.java (92%) rename src/main/java/{firefighter => }/app/SimulatorMain.java (82%) rename src/main/java/{firefighter => }/controller/Controller.java (91%) rename src/main/java/{firefighter => }/controller/PersistentToggleGroup.java (96%) rename src/main/java/{firefighter => }/model/Board.java (96%) rename src/main/java/{firefighter => }/model/FirefighterBoard.java (97%) rename src/main/java/{firefighter => }/model/ModelElement.java (64%) rename src/main/java/{firefighter => }/util/Position.java (65%) rename src/main/java/{firefighter => }/view/FirefighterGrid.java (86%) rename src/main/java/{firefighter => }/view/Grid.java (59%) rename src/main/java/{firefighter => }/view/ViewElement.java (88%) rename src/main/resources/{firefighter => }/view/DarkTheme.css (100%) rename src/main/resources/{firefighter => }/view/view.fxml (95%) rename src/test/java/{firefighter => }/model/FirefighterBoardTest.java (66%) create mode 100644 src/test/java/view/FirefighterGridTest.java diff --git a/build.gradle b/build.gradle index 0f1ef0d..f51eff2 100644 --- a/build.gradle +++ b/build.gradle @@ -17,9 +17,7 @@ repositories { } dependencies { - testRuntimeOnly("org.junit.platform:junit-platform-launcher") { - because("Only needed to run tests in a version of IntelliJ IDEA that bundles older versions") - } + testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testImplementation("org.assertj:assertj-core:3.24.2") testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") @@ -30,11 +28,7 @@ test { } application { - mainClass.set("firefighter.app.SimulatorMain") + mainClass.set("app.SimulatorMain") } -tasks { - shadowJar { - exclude("module-info.class") - } -} + diff --git a/src/main/java/firefighter/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java similarity index 92% rename from src/main/java/firefighter/app/SimulatorApplication.java rename to src/main/java/app/SimulatorApplication.java index b4392e2..6b009e4 100644 --- a/src/main/java/firefighter/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -1,6 +1,6 @@ -package firefighter.app; +package app; -import firefighter.controller.Controller; +import controller.Controller; import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; @@ -11,7 +11,7 @@ import java.io.IOException; import java.net.URL; public class SimulatorApplication extends javafx.application.Application { - private static final String VIEW_RESOURCE_PATH = "/firefighter/view/view.fxml"; + private static final String VIEW_RESOURCE_PATH = "/view/view.fxml"; private static final String APP_NAME = "Firefighter simulator"; private static final int ROW_COUNT = 20; private static final int COLUMN_COUNT = 20; diff --git a/src/main/java/firefighter/app/SimulatorMain.java b/src/main/java/app/SimulatorMain.java similarity index 82% rename from src/main/java/firefighter/app/SimulatorMain.java rename to src/main/java/app/SimulatorMain.java index 18533e3..f2e49f2 100644 --- a/src/main/java/firefighter/app/SimulatorMain.java +++ b/src/main/java/app/SimulatorMain.java @@ -1,4 +1,4 @@ -package firefighter.app; +package app; public class SimulatorMain { public static void main(String[] args){ diff --git a/src/main/java/firefighter/controller/Controller.java b/src/main/java/controller/Controller.java similarity index 91% rename from src/main/java/firefighter/controller/Controller.java rename to src/main/java/controller/Controller.java index 69d1470..2a60897 100644 --- a/src/main/java/firefighter/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -1,4 +1,4 @@ -package firefighter.controller; +package controller; import javafx.animation.Animation; import javafx.animation.KeyFrame; @@ -12,12 +12,12 @@ import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.util.Duration; import javafx.util.Pair; -import firefighter.model.Board; -import firefighter.model.ModelElement; -import firefighter.model.FirefighterBoard; -import firefighter.util.Position; -import firefighter.view.FirefighterGrid; -import firefighter.view.ViewElement; +import model.Board; +import model.ModelElement; +import model.FirefighterBoard; +import util.Position; +import view.Grid; +import view.ViewElement; import java.util.ArrayList; import java.util.List; @@ -38,7 +38,7 @@ public class Controller { @FXML private ToggleButton playToggleButton; @FXML - private FirefighterGrid grid; + private Grid<ViewElement> grid; private Timeline timeline; private Board<List<ModelElement>> board; @@ -125,7 +125,7 @@ public class Controller { public void initialize(int squareWidth, int squareHeight, int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { - grid.initialize(squareWidth, squareHeight, columnCount, rowCount); + grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); repaintGrid(); } diff --git a/src/main/java/firefighter/controller/PersistentToggleGroup.java b/src/main/java/controller/PersistentToggleGroup.java similarity index 96% rename from src/main/java/firefighter/controller/PersistentToggleGroup.java rename to src/main/java/controller/PersistentToggleGroup.java index a7e930b..7c2c4b5 100644 --- a/src/main/java/firefighter/controller/PersistentToggleGroup.java +++ b/src/main/java/controller/PersistentToggleGroup.java @@ -1,4 +1,4 @@ -package firefighter.controller; +package controller; import javafx.collections.ListChangeListener.Change; import javafx.scene.control.Toggle; diff --git a/src/main/java/firefighter/model/Board.java b/src/main/java/model/Board.java similarity index 96% rename from src/main/java/firefighter/model/Board.java rename to src/main/java/model/Board.java index e53a9dd..bb089a4 100644 --- a/src/main/java/firefighter/model/Board.java +++ b/src/main/java/model/Board.java @@ -1,6 +1,6 @@ -package firefighter.model; +package model; -import firefighter.util.Position; +import util.Position; import java.util.List; diff --git a/src/main/java/firefighter/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java similarity index 97% rename from src/main/java/firefighter/model/FirefighterBoard.java rename to src/main/java/model/FirefighterBoard.java index 925a162..1e383a9 100644 --- a/src/main/java/firefighter/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -1,6 +1,6 @@ -package firefighter.model; +package model; -import firefighter.util.Position; +import util.Position; import java.util.*; @@ -143,6 +143,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { @Override public void setState(List<ModelElement> state, Position position) { + firePositions.remove(position); + for (;;) { + if (!firefighterPositions.remove(position)) break; + } for(ModelElement element : state){ switch (element){ case FIRE -> firePositions.add(position); diff --git a/src/main/java/firefighter/model/ModelElement.java b/src/main/java/model/ModelElement.java similarity index 64% rename from src/main/java/firefighter/model/ModelElement.java rename to src/main/java/model/ModelElement.java index ca8f16a..759eee5 100644 --- a/src/main/java/firefighter/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -1,4 +1,4 @@ -package firefighter.model; +package model; public enum ModelElement { FIREFIGHTER, FIRE diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index c82befa..4c36d97 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -2,7 +2,7 @@ module firefighter { requires javafx.controls; requires javafx.fxml; requires javafx.graphics; - opens firefighter.controller to javafx.fxml; - exports firefighter.app; - opens firefighter.app to javafx.fxml; -} \ No newline at end of file + opens controller to javafx.fxml; + exports app; + opens app to javafx.fxml; +} diff --git a/src/main/java/firefighter/util/Position.java b/src/main/java/util/Position.java similarity index 65% rename from src/main/java/firefighter/util/Position.java rename to src/main/java/util/Position.java index b44a78a..31dc4c1 100644 --- a/src/main/java/firefighter/util/Position.java +++ b/src/main/java/util/Position.java @@ -1,4 +1,4 @@ -package firefighter.util; +package util; public record Position(int row, int column) { diff --git a/src/main/java/firefighter/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java similarity index 86% rename from src/main/java/firefighter/view/FirefighterGrid.java rename to src/main/java/view/FirefighterGrid.java index 6d9a61c..fdb7cda 100644 --- a/src/main/java/firefighter/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -1,9 +1,9 @@ -package firefighter.view; +package view; import javafx.scene.canvas.Canvas; import javafx.scene.paint.Color; import javafx.util.Pair; -import firefighter.util.Position; +import util.Position; import java.util.List; @@ -35,21 +35,19 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ paintLines(); } - public int getColumnCount() { + public int columnCount() { return columnCount; } - public int getRowCount() { + public int rowCount() { return rowCount; } public FirefighterGrid(){ } - public void initialize(int squareWidth, - int squareHeight, - int columnCount, - int rowCount) { + @Override + public void setDimensions(int columnCount, int rowCount, int squareWidth, int squareHeight) { this.squareWidth = squareWidth; this.squareHeight = squareHeight; this.columnCount = columnCount; diff --git a/src/main/java/firefighter/view/Grid.java b/src/main/java/view/Grid.java similarity index 59% rename from src/main/java/firefighter/view/Grid.java rename to src/main/java/view/Grid.java index 6b1d7fc..d87897b 100644 --- a/src/main/java/firefighter/view/Grid.java +++ b/src/main/java/view/Grid.java @@ -1,7 +1,7 @@ -package firefighter.view; +package view; import javafx.util.Pair; -import firefighter.util.Position; +import util.Position; import java.util.List; @@ -27,18 +27,30 @@ public interface Grid<E> { */ void repaint(E[][] elements); + /** + * Set the dimensions of the grid to the specified column count, row count, square width, and square height. + * This method adjusts the dimensions of the grid to the given number of columns, number of rows, square width, + * and square height. + * + * @param columnCount The new number of columns in the grid. + * @param rowCount The new number of rows in the grid. + * @param squareWidth The width of each square within the grid. + * @param squareHeight The height of each square within the grid. + */ + void setDimensions(int columnCount, int rowCount, int squareWidth, int squareHeight); + /** * Get the number of columns in the grid. * * @return The number of columns in the grid. */ - int getColumnCount(); + int columnCount(); /** * Get the number of rows in the grid. * * @return The number of rows in the grid. */ - int getRowCount(); + int rowCount(); } diff --git a/src/main/java/firefighter/view/ViewElement.java b/src/main/java/view/ViewElement.java similarity index 88% rename from src/main/java/firefighter/view/ViewElement.java rename to src/main/java/view/ViewElement.java index 0181e55..ffb7611 100644 --- a/src/main/java/firefighter/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -1,4 +1,4 @@ -package firefighter.view; +package view; import javafx.scene.paint.Color; diff --git a/src/main/resources/firefighter/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css similarity index 100% rename from src/main/resources/firefighter/view/DarkTheme.css rename to src/main/resources/view/DarkTheme.css diff --git a/src/main/resources/firefighter/view/view.fxml b/src/main/resources/view/view.fxml similarity index 95% rename from src/main/resources/firefighter/view/view.fxml rename to src/main/resources/view/view.fxml index cd4d2bd..3f19ac9 100644 --- a/src/main/resources/firefighter/view/view.fxml +++ b/src/main/resources/view/view.fxml @@ -3,14 +3,14 @@ <?import javafx.scene.control.Button?> <?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.VBox?> -<?import firefighter.view.FirefighterGrid?> +<?import view.FirefighterGrid?> <?import javafx.scene.control.ToggleButton?> <?import javafx.scene.control.Separator?> <?import javafx.scene.control.Label?> <HBox styleClass="background" stylesheets="@DarkTheme.css" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" - fx:controller="firefighter.controller.Controller"> + fx:controller="controller.Controller"> <VBox> <Separator maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> diff --git a/src/test/java/firefighter/model/FirefighterBoardTest.java b/src/test/java/model/FirefighterBoardTest.java similarity index 66% rename from src/test/java/firefighter/model/FirefighterBoardTest.java rename to src/test/java/model/FirefighterBoardTest.java index a9b794c..25cc8db 100644 --- a/src/test/java/firefighter/model/FirefighterBoardTest.java +++ b/src/test/java/model/FirefighterBoardTest.java @@ -1,6 +1,7 @@ -package firefighter.model; +package model; import org.junit.jupiter.api.Test; +import util.Position; import java.util.List; @@ -26,4 +27,13 @@ public class FirefighterBoardTest { } assertThat(board.stepNumber()).isEqualTo(10); } + @Test + void testGetState_afterSet(){ + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0); + Position position = new Position(1,2); + assertThat(board.getState(position)).isEmpty(); + board.setState(List.of(ModelElement.FIRE), position); + assertThat(board.getState(position)).containsExactly(ModelElement.FIRE); + } + } diff --git a/src/test/java/view/FirefighterGridTest.java b/src/test/java/view/FirefighterGridTest.java new file mode 100644 index 0000000..4b45ebd --- /dev/null +++ b/src/test/java/view/FirefighterGridTest.java @@ -0,0 +1,20 @@ +package view; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class FirefighterGridTest { + @Test + void testColumnCount(){ + Grid<ViewElement> grid = new FirefighterGrid(); + grid.setDimensions(20,10,10,10); + assertThat(grid.columnCount()).isEqualTo(20); + } + @Test + void testRowCount(){ + Grid<ViewElement> grid = new FirefighterGrid(); + grid.setDimensions(20,10,10,10); + assertThat(grid.rowCount()).isEqualTo(10); + } +} -- GitLab