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