From c3a3ff1be15fc2f9f0f7a3b2715af4344ce9470b Mon Sep 17 00:00:00 2001
From: arnaudlabourel <arnaud.labourel@univ-amu.fr>
Date: Tue, 24 Oct 2023 17:25:24 +0200
Subject: [PATCH] added test

---
 src/main/java/firefighter/model/Board.java    |  8 +++++
 .../firefighter/model/FirefighterBoard.java   | 10 +++++++
 .../model/FirefighterBoardTest.java           | 29 +++++++++++++++++++
 3 files changed, 47 insertions(+)
 create mode 100644 src/test/java/firefighter/model/FirefighterBoardTest.java

diff --git a/src/main/java/firefighter/model/Board.java b/src/main/java/firefighter/model/Board.java
index df5996d..e53a9dd 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 ac7d33b..925a162 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 0000000..a9b794c
--- /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);
+  }
+}
-- 
GitLab