Skip to content
Snippets Groups Projects
Commit 64119975 authored by LABOUREL Arnaud's avatar LABOUREL Arnaud
Browse files

added test for grid

parent c3a3ff1b
Branches
No related tags found
1 merge request!2Simple
Showing
with 87 additions and 49 deletions
...@@ -17,9 +17,7 @@ repositories { ...@@ -17,9 +17,7 @@ repositories {
} }
dependencies { dependencies {
testRuntimeOnly("org.junit.platform:junit-platform-launcher") { 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.jupiter:junit-jupiter-engine") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testImplementation("org.assertj:assertj-core:3.24.2") testImplementation("org.assertj:assertj-core:3.24.2")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
...@@ -30,11 +28,7 @@ test { ...@@ -30,11 +28,7 @@ test {
} }
application { application {
mainClass.set("firefighter.app.SimulatorMain") mainClass.set("app.SimulatorMain")
} }
tasks {
shadowJar {
exclude("module-info.class")
}
}
package firefighter.app; package app;
import firefighter.controller.Controller; import controller.Controller;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
...@@ -11,7 +11,7 @@ import java.io.IOException; ...@@ -11,7 +11,7 @@ import java.io.IOException;
import java.net.URL; import java.net.URL;
public class SimulatorApplication extends javafx.application.Application { 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 String APP_NAME = "Firefighter simulator";
private static final int ROW_COUNT = 20; private static final int ROW_COUNT = 20;
private static final int COLUMN_COUNT = 20; private static final int COLUMN_COUNT = 20;
......
package firefighter.app; package app;
public class SimulatorMain { public class SimulatorMain {
public static void main(String[] args){ public static void main(String[] args){
......
package firefighter.controller; package controller;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
...@@ -12,12 +12,12 @@ import javafx.scene.control.ToggleButton; ...@@ -12,12 +12,12 @@ import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup; import javafx.scene.control.ToggleGroup;
import javafx.util.Duration; import javafx.util.Duration;
import javafx.util.Pair; import javafx.util.Pair;
import firefighter.model.Board; import model.Board;
import firefighter.model.ModelElement; import model.ModelElement;
import firefighter.model.FirefighterBoard; import model.FirefighterBoard;
import firefighter.util.Position; import util.Position;
import firefighter.view.FirefighterGrid; import view.Grid;
import firefighter.view.ViewElement; import view.ViewElement;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -38,7 +38,7 @@ public class Controller { ...@@ -38,7 +38,7 @@ public class Controller {
@FXML @FXML
private ToggleButton playToggleButton; private ToggleButton playToggleButton;
@FXML @FXML
private FirefighterGrid grid; private Grid<ViewElement> grid;
private Timeline timeline; private Timeline timeline;
private Board<List<ModelElement>> board; private Board<List<ModelElement>> board;
...@@ -125,7 +125,7 @@ public class Controller { ...@@ -125,7 +125,7 @@ public class Controller {
public void initialize(int squareWidth, int squareHeight, int columnCount, public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount) { 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)); this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount));
repaintGrid(); repaintGrid();
} }
......
package firefighter.controller; package controller;
import javafx.collections.ListChangeListener.Change; import javafx.collections.ListChangeListener.Change;
import javafx.scene.control.Toggle; import javafx.scene.control.Toggle;
......
package firefighter.model; package model;
import firefighter.util.Position; import util.Position;
import java.util.List; import java.util.List;
......
package firefighter.model; package model;
import firefighter.util.Position; import util.Position;
import java.util.*; import java.util.*;
...@@ -143,6 +143,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -143,6 +143,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@Override @Override
public void setState(List<ModelElement> state, Position position) { public void setState(List<ModelElement> state, Position position) {
firePositions.remove(position);
for (;;) {
if (!firefighterPositions.remove(position)) break;
}
for(ModelElement element : state){ for(ModelElement element : state){
switch (element){ switch (element){
case FIRE -> firePositions.add(position); case FIRE -> firePositions.add(position);
......
package firefighter.model; package model;
public enum ModelElement { public enum ModelElement {
FIREFIGHTER, FIRE FIREFIGHTER, FIRE
......
...@@ -2,7 +2,7 @@ module firefighter { ...@@ -2,7 +2,7 @@ module firefighter {
requires javafx.controls; requires javafx.controls;
requires javafx.fxml; requires javafx.fxml;
requires javafx.graphics; requires javafx.graphics;
opens firefighter.controller to javafx.fxml; opens controller to javafx.fxml;
exports firefighter.app; exports app;
opens firefighter.app to javafx.fxml; opens app to javafx.fxml;
} }
package firefighter.util; package util;
public record Position(int row, int column) { public record Position(int row, int column) {
......
package firefighter.view; package view;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.util.Pair; import javafx.util.Pair;
import firefighter.util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -35,21 +35,19 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ ...@@ -35,21 +35,19 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
paintLines(); paintLines();
} }
public int getColumnCount() { public int columnCount() {
return columnCount; return columnCount;
} }
public int getRowCount() { public int rowCount() {
return rowCount; return rowCount;
} }
public FirefighterGrid(){ public FirefighterGrid(){
} }
public void initialize(int squareWidth, @Override
int squareHeight, public void setDimensions(int columnCount, int rowCount, int squareWidth, int squareHeight) {
int columnCount,
int rowCount) {
this.squareWidth = squareWidth; this.squareWidth = squareWidth;
this.squareHeight = squareHeight; this.squareHeight = squareHeight;
this.columnCount = columnCount; this.columnCount = columnCount;
......
package firefighter.view; package view;
import javafx.util.Pair; import javafx.util.Pair;
import firefighter.util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -27,18 +27,30 @@ public interface Grid<E> { ...@@ -27,18 +27,30 @@ public interface Grid<E> {
*/ */
void repaint(E[][] elements); 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. * Get the number of columns in the grid.
* *
* @return 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. * Get the number of rows in the grid.
* *
* @return The number of rows in the grid. * @return The number of rows in the grid.
*/ */
int getRowCount(); int rowCount();
} }
package firefighter.view; package view;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
......
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import firefighter.view.FirefighterGrid?> <?import view.FirefighterGrid?>
<?import javafx.scene.control.ToggleButton?> <?import javafx.scene.control.ToggleButton?>
<?import javafx.scene.control.Separator?> <?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<HBox styleClass="background" stylesheets="@DarkTheme.css" <HBox styleClass="background" stylesheets="@DarkTheme.css"
xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"
fx:controller="firefighter.controller.Controller"> fx:controller="controller.Controller">
<VBox> <VBox>
<Separator maxHeight="-Infinity" maxWidth="-Infinity" <Separator maxHeight="-Infinity" maxWidth="-Infinity"
prefHeight="24.0" prefWidth="200.0"/> prefHeight="24.0" prefWidth="200.0"/>
......
package firefighter.model; package model;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import util.Position;
import java.util.List; import java.util.List;
...@@ -26,4 +27,13 @@ public class FirefighterBoardTest { ...@@ -26,4 +27,13 @@ public class FirefighterBoardTest {
} }
assertThat(board.stepNumber()).isEqualTo(10); 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);
}
} }
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment