From b374828ea27215d62502f2fe7d134478987eba79 Mon Sep 17 00:00:00 2001
From: arnaudlabourel <arnaud.labourel@univ-amu.fr>
Date: Tue, 21 Sep 2021 15:30:20 +0200
Subject: [PATCH] first draft of the project

---
 src/main/java/model/CardinalDirection.java |  5 +++
 src/main/java/model/Tile.java              | 36 ++++++++++++++++++++++
 src/test/java/model/TileTest.java          | 29 +++++++++++++++++
 3 files changed, 70 insertions(+)
 create mode 100644 src/main/java/model/CardinalDirection.java
 create mode 100644 src/main/java/model/Tile.java
 create mode 100644 src/test/java/model/TileTest.java

diff --git a/src/main/java/model/CardinalDirection.java b/src/main/java/model/CardinalDirection.java
new file mode 100644
index 0000000..10ae434
--- /dev/null
+++ b/src/main/java/model/CardinalDirection.java
@@ -0,0 +1,5 @@
+package model;
+
+public enum CardinalDirection {
+  NORTH, EAST, SOUTH, WEST;
+}
diff --git a/src/main/java/model/Tile.java b/src/main/java/model/Tile.java
new file mode 100644
index 0000000..5880b93
--- /dev/null
+++ b/src/main/java/model/Tile.java
@@ -0,0 +1,36 @@
+package model;
+
+import javafx.scene.paint.Color;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+public class Tile {
+  private static final int NUMBER_OF_SIDES = 4;
+  private final Color colors[] = new Color[NUMBER_OF_SIDES];
+
+  public Tile(Color[] colors) {
+    if(colors.length != NUMBER_OF_SIDES)
+      throw new IllegalArgumentException("A tile is defined by " + NUMBER_OF_SIDES
+                                            + "and not" + colors.length + "sides.");
+    for(int index = 0; index < NUMBER_OF_SIDES; index++)
+      this.colors[index] = colors[index];
+  }
+
+  public Color getColor(CardinalDirection direction){
+    return colors[direction.ordinal()];
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    Tile tile = (Tile) o;
+    return Arrays.equals(colors, tile.colors);
+  }
+
+  @Override
+  public int hashCode() {
+    return Arrays.hashCode(colors);
+  }
+}
diff --git a/src/test/java/model/TileTest.java b/src/test/java/model/TileTest.java
new file mode 100644
index 0000000..fab7b94
--- /dev/null
+++ b/src/test/java/model/TileTest.java
@@ -0,0 +1,29 @@
+package model;
+
+import javafx.scene.paint.Color;
+import org.junit.jupiter.api.Test;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class TileTest {
+  @Test
+  void testGetColor(){
+    Tile tile = new Tile(new Color[]{Color.BLACK, Color.BLUE, Color.WHITE, Color.BLUE});
+    assertThat(tile.getColor(CardinalDirection.NORTH)).isEqualTo(Color.BLACK);
+    assertThat(tile.getColor(CardinalDirection.EAST)).isEqualTo(Color.BLUE);
+    assertThat(tile.getColor(CardinalDirection.SOUTH)).isEqualTo(Color.WHITE);
+    assertThat(tile.getColor(CardinalDirection.WEST)).isEqualTo(Color.BLUE);
+  }
+
+  @Test
+  void testEquals(){
+    Color[] colors1 = new Color[]{Color.BLACK, Color.BLUE, Color.WHITE, Color.BLUE};
+    Color[] colors2 = new Color[]{Color.BLACK, Color.BLUE, Color.WHITE, Color.WHITE};
+    Tile tile1 = new Tile(colors1);
+    Tile tile2 = new Tile(colors1);
+    Tile tile3 = new Tile(colors2);
+    assertThat(tile1)
+            .isEqualTo(tile1)
+            .isEqualTo(tile2)
+            .isNotEqualTo(tile3);
+  }
+}
-- 
GitLab