From 35856494467484129205c6e3b5de4b551dac6bcf Mon Sep 17 00:00:00 2001
From: arnaudlabourel <arnaud.labourel@univ-amu.fr>
Date: Tue, 9 Nov 2021 11:30:24 +0100
Subject: [PATCH] Added tests for RandomRotatedTruchetTileGenerator

---
 src/main/java/model/RotatedTile.java          | 15 ++++++++++
 src/main/java/model/TruchetTile.java          | 15 ++++++++++
 ...RandomRotatedTruchetTileGeneratorTest.java | 29 +++++++++++++++++++
 3 files changed, 59 insertions(+)
 create mode 100644 src/test/java/model/RandomRotatedTruchetTileGeneratorTest.java

diff --git a/src/main/java/model/RotatedTile.java b/src/main/java/model/RotatedTile.java
index c337006..f5114e5 100644
--- a/src/main/java/model/RotatedTile.java
+++ b/src/main/java/model/RotatedTile.java
@@ -1,5 +1,7 @@
 package model;
 
+import java.util.Objects;
+
 public class RotatedTile implements Tile {
   private final Tile tile;
   private final Rotation rotation;
@@ -13,4 +15,17 @@ public class RotatedTile implements Tile {
   public Side side(CardinalDirection direction) {
     return tile.side(rotation.rotatedDirection(direction));
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    RotatedTile that = (RotatedTile) o;
+    return Objects.equals(tile, that.tile) && rotation == that.rotation;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(tile, rotation);
+  }
 }
diff --git a/src/main/java/model/TruchetTile.java b/src/main/java/model/TruchetTile.java
index ddbce49..9652e8a 100644
--- a/src/main/java/model/TruchetTile.java
+++ b/src/main/java/model/TruchetTile.java
@@ -1,5 +1,7 @@
 package model;
 
+import java.util.Objects;
+
 public class TruchetTile implements Tile{
   private final Side northWestSide;
   private final Side southEastSide;
@@ -16,4 +18,17 @@ public class TruchetTile implements Tile{
       case NORTH, WEST -> northWestSide;
     };
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    TruchetTile that = (TruchetTile) o;
+    return Objects.equals(northWestSide, that.northWestSide) && Objects.equals(southEastSide, that.southEastSide);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(northWestSide, southEastSide);
+  }
 }
diff --git a/src/test/java/model/RandomRotatedTruchetTileGeneratorTest.java b/src/test/java/model/RandomRotatedTruchetTileGeneratorTest.java
new file mode 100644
index 0000000..cac32d9
--- /dev/null
+++ b/src/test/java/model/RandomRotatedTruchetTileGeneratorTest.java
@@ -0,0 +1,29 @@
+package model;
+
+import javafx.scene.paint.Color;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class RandomRotatedTruchetTileGeneratorTest {
+  @Test
+  void testNextTile(){
+    Side redSide = new ColoredSide(Color.RED);
+    Side blueSide = new ColoredSide(Color.BLUE);
+
+    Tile truchetTile = new TruchetTile(redSide, blueSide);
+    List<Tile> rotatedTiles = new ArrayList<>();
+
+    for(Rotation rotation : Rotation.values())
+      rotatedTiles.add(new RotatedTile(truchetTile, rotation));
+
+    TileGenerator tileGenerator = new RandomRotatedTruchetTileGenerator(Color.RED, Color.BLUE, new Random(0));
+
+    for(int index = 0; index < 10; index++)
+      assertThat(tileGenerator.nextTile(EmptySquare.EMPTY_SQUARE)).isIn(rotatedTiles);
+  }
+}
-- 
GitLab