diff --git a/src/main/java/model/RotatedTile.java b/src/main/java/model/RotatedTile.java
index c3370063789c6e0c50e23b20dfee818b841a95ea..f5114e5a2ee27ec326e6f47935964c949839727d 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 ddbce49ce5b2df22826464c840d6be7dd6d278d5..9652e8a757f55eacb3794e97acadb241512d5fc9 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 0000000000000000000000000000000000000000..cac32d9b16c9f4485b9dbe15cb204fbc148281f2
--- /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);
+  }
+}