diff --git a/.gitignore b/.gitignore
index 5ff6309..d769462 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,10 +4,7 @@ target/
!**/src/test/**/target/
### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
+.idea
*.iws
*.iml
*.ipr
diff --git a/pom.xml b/pom.xml
index b62133a..602600f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,17 +25,23 @@
javafx-fxml
17.0.1
-
- org.junit.jupiter
- junit-jupiter-api
- ${junit.version}
+ org.projectlombok
+ lombok
+ 1.18.24
+ provided
+
+
+ org.spockframework
+ spock-core
+ 2.3-groovy-3.0
test
- org.junit.jupiter
- junit-jupiter-engine
- ${junit.version}
+ org.codehaus.groovy
+ groovy-all
+ 3.0.11
+ pom
test
@@ -49,6 +55,13 @@
17
17
+
+
+ org.projectlombok
+ lombok
+ 1.18.24
+
+
diff --git a/src/main/java/magbeth/core/Piece.java b/src/main/java/magbeth/core/Piece.java
index 3a680ec..6a73d66 100644
--- a/src/main/java/magbeth/core/Piece.java
+++ b/src/main/java/magbeth/core/Piece.java
@@ -1,9 +1,11 @@
package magbeth.core;
import javafx.scene.image.Image;
+import lombok.EqualsAndHashCode;
import java.util.Objects;
+@EqualsAndHashCode
public class Piece {
public enum Color {
BLACK,
diff --git a/src/main/java/magbeth/core/moves/Move.java b/src/main/java/magbeth/core/moves/Move.java
index cc3852e..18c6c69 100644
--- a/src/main/java/magbeth/core/moves/Move.java
+++ b/src/main/java/magbeth/core/moves/Move.java
@@ -1,10 +1,12 @@
package magbeth.core.moves;
+import lombok.EqualsAndHashCode;
import magbeth.core.Board;
import magbeth.core.IGameState;
import magbeth.core.Piece;
import magbeth.core.Vec2;
+@EqualsAndHashCode
public class Move {
public Piece piece;
public Vec2 tile;
@@ -18,6 +20,12 @@ public Move(Vec2 move) {
this.move = move;
}
+ public Move(Piece piece, Vec2 tile, Vec2 move) {
+ this.piece = piece;
+ this.tile = tile;
+ this.move = move;
+ }
+
public Vec2 getFinalTile() {
return this.piece.move(tile, move);
}
@@ -40,6 +48,6 @@ public Move copy() {
@Override
public String toString() {
- return piece + " " + tile + " " + getFinalTile();
+ return piece + " " + tile + " " + move + " finalTile: " + getFinalTile();
}
}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index aab41bc..2996a9e 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,7 +1,7 @@
module magbeth.magbeth {
requires javafx.controls;
requires javafx.fxml;
-
+ requires static lombok;
opens magbeth to javafx.fxml;
exports magbeth;
diff --git a/src/test/groovy/magbeth/core/BasicGameStateTest.groovy b/src/test/groovy/magbeth/core/BasicGameStateTest.groovy
new file mode 100644
index 0000000..51b3660
--- /dev/null
+++ b/src/test/groovy/magbeth/core/BasicGameStateTest.groovy
@@ -0,0 +1,22 @@
+package magbeth.core
+
+import magbeth.core.moves.Move
+import spock.lang.Specification
+
+class BasicGameStateTest extends Specification {
+
+ def "should return two available moves for white pawn on a2"() {
+ given:
+ def board = Board.basicConfig()
+ def underTest = new BasicGameState(board)
+ def pawn = new Vec2(6, 0)
+
+ when:
+ def result = underTest.getAvailableMoves(pawn, Piece.Color.WHITE)
+
+ then:
+ result.size() == 2
+ result == [new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(1, 0)),
+ new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(2, 0))]
+ }
+}