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); + } +}