diff --git a/src/main/java/firefighter/model/Board.java b/src/main/java/firefighter/model/Board.java index df5996d5d206bcc461f3c576633c22557d9c81ce..e53a9dd8985066e46f1df09737b94e649b9806c9 100644 --- a/src/main/java/firefighter/model/Board.java +++ b/src/main/java/firefighter/model/Board.java @@ -19,6 +19,14 @@ public interface Board<S> { */ S getState(Position position); + /** + * Set the state of a specific position on the board to the specified state. + * + * @param state The state to set for the given position. + * @param position The position on the board for which to set the state. + */ + void setState(S state, Position position); + /** * Get the number of rows in the board. * diff --git a/src/main/java/firefighter/model/FirefighterBoard.java b/src/main/java/firefighter/model/FirefighterBoard.java index ac7d33b6aee2d2a60657274f3116842d301889c2..925a162e1596b7b31af64cd7ec4851e64509b4e5 100644 --- a/src/main/java/firefighter/model/FirefighterBoard.java +++ b/src/main/java/firefighter/model/FirefighterBoard.java @@ -140,4 +140,14 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } return position; } + + @Override + public void setState(List<ModelElement> state, Position position) { + for(ModelElement element : state){ + switch (element){ + case FIRE -> firePositions.add(position); + case FIREFIGHTER -> firefighterPositions.add(position); + } + } + } } \ No newline at end of file diff --git a/src/test/java/firefighter/model/FirefighterBoardTest.java b/src/test/java/firefighter/model/FirefighterBoardTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a9b794cf5c3b35a222c44d671f6930c74056ae82 --- /dev/null +++ b/src/test/java/firefighter/model/FirefighterBoardTest.java @@ -0,0 +1,29 @@ +package firefighter.model; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.*; + +public class FirefighterBoardTest { + @Test + void testColumnCount(){ + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + assertThat(board.columnCount()).isEqualTo(20); + } + @Test + void testRowCount(){ + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + assertThat(board.rowCount()).isEqualTo(10); + } + @Test + void testStepNumber(){ + Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + for(int index = 0; index < 10; index++){ + assertThat(board.stepNumber()).isEqualTo(index); + board.updateToNextGeneration(); + } + assertThat(board.stepNumber()).isEqualTo(10); + } +}