diff --git a/src/main/java/model/ColoredSide.java b/src/main/java/model/ColoredSide.java index 9eed9feda3e501453633875314a10b3314979c8c..fd39ebfc65ecd69d271cd0aeae08ca16aaac0610 100644 --- a/src/main/java/model/ColoredSide.java +++ b/src/main/java/model/ColoredSide.java @@ -4,6 +4,7 @@ import javafx.scene.paint.Color; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class ColoredSide implements Side { private final Color color; @@ -32,4 +33,24 @@ public class ColoredSide implements Side { public Color color() { return color; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ColoredSide that = (ColoredSide) o; + return Objects.equals(color, that.color); + } + + @Override + public int hashCode() { + return Objects.hash(color); + } + + @Override + public String toString() { + return "ColoredSide{" + + "color=" + color + + '}'; + } } diff --git a/src/main/java/model/UniformTile.java b/src/main/java/model/UniformTile.java index 89ea2dbe032f89934bf5e7477fe1482262967b96..aed44728fbcf3ffa7b644b788b347b59d3a42c43 100644 --- a/src/main/java/model/UniformTile.java +++ b/src/main/java/model/UniformTile.java @@ -1,5 +1,7 @@ package model; +import java.util.Objects; + public class UniformTile implements Tile{ private final Side side; @@ -11,4 +13,17 @@ public class UniformTile implements Tile{ public Side side(CardinalDirection direction) { return side; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + UniformTile that = (UniformTile) o; + return Objects.equals(side, that.side); + } + + @Override + public int hashCode() { + return side != null ? side.hashCode() : 0; + } } diff --git a/src/test/java/model/ColoredSideTest.java b/src/test/java/model/ColoredSideTest.java new file mode 100644 index 0000000000000000000000000000000000000000..06f4bf29d67303854896fc980400bbc249a37061 --- /dev/null +++ b/src/test/java/model/ColoredSideTest.java @@ -0,0 +1,62 @@ +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 ColoredSideTest { + Side redSide; + Side blueSide; + Side redSide2; + + @BeforeEach + void initializeSides(){ + redSide = new ColoredSide(Color.RED); + blueSide = new ColoredSide(Color.BLUE); + redSide2 = new ColoredSide(Color.RED); + } + + @Test + void testColor(){ + assertThat(redSide.color()).isEqualTo(Color.RED); + assertThat(blueSide.color()).isEqualTo(Color.BLUE); + } + + @Test + void testEquals(){ + assertThat(redSide2).isEqualTo(redSide2); + assertThat(redSide).isEqualTo(redSide2); + assertThat(redSide).isNotEqualTo(blueSide); + } + + @Test + void testAccept(){ + assertThat(blueSide.accept(blueSide)).isTrue(); + assertThat(blueSide.accept(redSide2)).isFalse(); + assertThat(redSide.accept(redSide2)).isTrue(); + } + + @Test + void testCompatibleSides(){ + List<Side> sides = List.of(redSide, blueSide, redSide2); + assertThat(blueSide.compatibleSides(sides)) + .containsExactly(blueSide) + .hasSize(1) + .doesNotContain(redSide); + assertThat(redSide.compatibleSides(sides)) + .contains(redSide, redSide2) + .hasSize(2) + .doesNotContain(blueSide); + assertThat(sides).containsExactly(redSide, blueSide, redSide2); + } + + @Test + void testToString(){ + assertThat(redSide.toString()).isEqualTo("ColoredSide{color=0xff0000ff}"); + assertThat(blueSide.toString()).isEqualTo("ColoredSide{color=0x0000ffff}"); + } + +}