From fd63b5d9b236c72cfab0c4df8ebae002ef08a9db Mon Sep 17 00:00:00 2001 From: j-partyka Date: Sun, 11 Dec 2022 15:40:46 +0100 Subject: [PATCH 1/5] Add dependencies for unit tests in pom.xml --- pom.xml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b62133a..765ebb7 100644 --- a/pom.xml +++ b/pom.xml @@ -27,15 +27,16 @@ - org.junit.jupiter - junit-jupiter-api - ${junit.version} + 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 From 9b045020c8f802ec3fc9d14cfc322d1b87187f88 Mon Sep 17 00:00:00 2001 From: j-partyka Date: Sun, 11 Dec 2022 15:44:44 +0100 Subject: [PATCH 2/5] Add unit test (not working yet) --- .../magbeth/core/BasicGameStateTest.groovy | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/test/groovy/magbeth/core/BasicGameStateTest.groovy diff --git a/src/test/groovy/magbeth/core/BasicGameStateTest.groovy b/src/test/groovy/magbeth/core/BasicGameStateTest.groovy new file mode 100644 index 0000000..91d7f06 --- /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.containsAll([new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(5, 0)), + new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(4, 0))]) + } +} From efefd56b6e09a61d763fd2fec332257e96146220 Mon Sep 17 00:00:00 2001 From: j-partyka Date: Sun, 11 Dec 2022 15:47:22 +0100 Subject: [PATCH 3/5] Add lombok to easily generate equals/hashcode methods. --- pom.xml | 14 +++++++++++++- src/main/java/magbeth/core/Piece.java | 2 ++ src/main/java/magbeth/core/moves/Move.java | 10 +++++++++- src/main/java/module-info.java | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 765ebb7..602600f 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,12 @@ javafx-fxml 17.0.1 - + + org.projectlombok + lombok + 1.18.24 + provided + org.spockframework spock-core @@ -50,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..0cbbfda 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 lombok; opens magbeth to javafx.fxml; exports magbeth; From 64c4651ec82d692877857c879a5d265f8e397e7a Mon Sep 17 00:00:00 2001 From: j-partyka Date: Sun, 11 Dec 2022 16:29:26 +0100 Subject: [PATCH 4/5] Fix - use require static in module-info because lombok does not provide any non-static members --- src/main/java/module-info.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 0cbbfda..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 lombok; + requires static lombok; opens magbeth to javafx.fxml; exports magbeth; From eb23d52ce517c75dd627ca5860040a7bc9c5044c Mon Sep 17 00:00:00 2001 From: j-partyka Date: Sun, 11 Dec 2022 18:01:54 +0100 Subject: [PATCH 5/5] fix --- .gitignore | 5 +---- src/test/groovy/magbeth/core/BasicGameStateTest.groovy | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) 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/src/test/groovy/magbeth/core/BasicGameStateTest.groovy b/src/test/groovy/magbeth/core/BasicGameStateTest.groovy index 91d7f06..51b3660 100644 --- a/src/test/groovy/magbeth/core/BasicGameStateTest.groovy +++ b/src/test/groovy/magbeth/core/BasicGameStateTest.groovy @@ -16,7 +16,7 @@ class BasicGameStateTest extends Specification { then: result.size() == 2 - result.containsAll([new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(5, 0)), - new Move(new Piece(PieceType.PAWN, Piece.Color.WHITE), pawn, new Vec2(4, 0))]) + 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))] } }