From 9ebe126e6a66f3f05159d1716543af9e452343d0 Mon Sep 17 00:00:00 2001
From: arnaudlabourel <arnaud.labourel@univ-amu.fr>
Date: Tue, 9 Nov 2021 08:55:51 +0100
Subject: [PATCH] Added tests for ArraySquare

---
 src/main/java/model/ArraySquare.java     |  2 +-
 src/test/java/model/ArraySquareTest.java | 87 ++++++++++++++++++++++++
 2 files changed, 88 insertions(+), 1 deletion(-)
 create mode 100644 src/test/java/model/ArraySquareTest.java

diff --git a/src/main/java/model/ArraySquare.java b/src/main/java/model/ArraySquare.java
index 1aec719..3f77c2b 100644
--- a/src/main/java/model/ArraySquare.java
+++ b/src/main/java/model/ArraySquare.java
@@ -52,7 +52,7 @@ public class ArraySquare implements Square {
     return true;
   }
 
-  public boolean accept(Tile tile, CardinalDirection direction) {
+  private boolean accept(Tile tile, CardinalDirection direction) {
     return getIncidentNeighboringSide(direction).accept(tile.side(direction));
   }
 
diff --git a/src/test/java/model/ArraySquareTest.java b/src/test/java/model/ArraySquareTest.java
new file mode 100644
index 0000000..51a8737
--- /dev/null
+++ b/src/test/java/model/ArraySquareTest.java
@@ -0,0 +1,87 @@
+package model;
+
+import javafx.scene.paint.Color;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ArraySquareTest {
+  Square arraySquare1;
+  Square arraySquare2;
+  ColoredSide redSide;
+  ColoredSide blueSide;
+  Tile redTile;
+  Tile blueTile;
+  
+  @BeforeEach
+  void initialize(){
+    arraySquare1 = new ArraySquare();
+    arraySquare2 = new ArraySquare();
+    redTile = new UniformTile(new ColoredSide(Color.RED));
+    blueTile = new UniformTile(new ColoredSide(Color.BLUE));
+    redSide = new ColoredSide(Color.RED);
+    blueSide = new ColoredSide(Color.BLUE);
+  }
+
+  @Test
+  void testGetNeighbors_afterConstruction(){
+    for(CardinalDirection direction : CardinalDirection.values())
+      assertThat(arraySquare1.getNeighbor(direction)).isEqualTo(EmptySquare.EMPTY_SQUARE);
+  }
+
+  @Test
+  void testEmptyTile_afterConstruction(){
+    assertThat(arraySquare1.getTile()).isEqualTo(EmptyTile.EMPTY_TILE);
+  }
+
+  @Test
+  void testPut(){
+    arraySquare1.put(redTile);
+    arraySquare2.put(blueTile);
+    assertThat(arraySquare1.getTile()).isEqualTo(redTile);
+    assertThat(arraySquare2.getTile()).isEqualTo(blueTile);
+  }
+
+  @Test
+  void testGetNeighbors_afterSetNeighbor(){
+    arraySquare1.setNeighbor(arraySquare2, CardinalDirection.NORTH);
+    arraySquare2.setNeighbor(arraySquare1, CardinalDirection.SOUTH);
+    assertThat(arraySquare1.getNeighbor(CardinalDirection.NORTH)).isEqualTo(arraySquare2);
+    assertThat(arraySquare2.getNeighbor(CardinalDirection.SOUTH)).isEqualTo(arraySquare1);
+  }
+
+  @Test
+  void testCompatibleSides(){
+    arraySquare1.put(redTile);
+    arraySquare2.put(blueTile);
+    arraySquare1.setNeighbor(arraySquare2, CardinalDirection.NORTH);
+    arraySquare2.setNeighbor(arraySquare1, CardinalDirection.SOUTH);
+    List<Side> sides = List.of(blueSide, redSide);
+    assertThat(arraySquare1.compatibleSides(sides, CardinalDirection.NORTH))
+            .containsExactly(blueSide);
+    assertThat(arraySquare2.compatibleSides(sides, CardinalDirection.SOUTH))
+            .containsExactly(redSide);
+    assertThat(arraySquare1.compatibleSides(sides, CardinalDirection.SOUTH))
+            .containsExactly(blueSide, redSide);
+  }
+
+  @Test
+  void testCompatibleTiles(){
+    List<Tile> tiles = List.of(blueTile, redTile);
+    assertThat(arraySquare1.compatibleTiles(tiles))
+            .containsExactly(blueTile, redTile);
+
+    arraySquare1.put(redTile);
+    arraySquare2.put(blueTile);
+    arraySquare1.setNeighbor(arraySquare2, CardinalDirection.NORTH);
+    arraySquare2.setNeighbor(arraySquare1, CardinalDirection.SOUTH);
+
+    assertThat(arraySquare1.compatibleTiles(tiles))
+            .containsExactly(blueTile);
+    assertThat(arraySquare2.compatibleTiles(tiles))
+            .containsExactly(redTile);
+  }
+}
-- 
GitLab