From 3de907b77e91c0d07357df707b664e6493fbcd86 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 11:41:47 +0100 Subject: [PATCH 01/39] initial creation of "Game" class --- .../src/main/java/de/fd/fh/Game.java | 11 +++++++++++ .../src/test/java/de/fd/fh/GameTest.java | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 fh.fd.ci.client/src/main/java/de/fd/fh/Game.java create mode 100644 fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java new file mode 100644 index 0000000..5aa4ad8 --- /dev/null +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -0,0 +1,11 @@ +package de.fd.fh; + +public class Game +{ + public Figure[] mField; + + public void initNewGame() + { + mField = new Figure[64]; + } +} diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java new file mode 100644 index 0000000..49e8668 --- /dev/null +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -0,0 +1,18 @@ +package de.fd.fh; + +import org.junit.jupiter.api.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class GameTest +{ + @Test + void newGameInitializationCorrectField() + { + Game g = new Game(); + g.initNewGame(); + + assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); + } +} \ No newline at end of file From 40501a27b012ff43b208021f2b15523ff5c68f86 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 11:42:33 +0100 Subject: [PATCH 02/39] removed magic numbers --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 5aa4ad8..5a0aa5e 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -6,6 +6,6 @@ public class Game public void initNewGame() { - mField = new Figure[64]; + mField = new Figure[Figure.fieldLength * Figure.fieldLength]; } } From a9337af708a2b74a9b2e9cba5c053a79881524e8 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 11:50:34 +0100 Subject: [PATCH 03/39] initial figure placement on field --- .../src/main/java/de/fd/fh/Game.java | 12 +++++++++++ .../src/test/java/de/fd/fh/GameTest.java | 20 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 5a0aa5e..cb0606a 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -7,5 +7,17 @@ public class Game public void initNewGame() { mField = new Figure[Figure.fieldLength * Figure.fieldLength]; + + // Figuren platzieren + for (int i = 0; i < 8; i++) // row + { + if (i == 0 || i == 1 || i == 6 || i == 7) + { + for (int j = 0; j < 8; j++) // col + { + mField[i * 8 + j] = new Figure(); + } + } + } } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 49e8668..59fa60e 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -15,4 +15,24 @@ class GameTest assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); } + + // prüft, ob Figuren nach Initialisierung nur an vorgesehenden Positionen stehen + @Test + void newGameInitializationFigurePositions() + { + Game g = new Game(); + g.initNewGame(); + + for (int i = 0; i < 8; i++) // row + { + if (i == 0 || i == 1 || i == 6 || i == 7) + { + for (int j = 0; j < 8; j++) // col + { + assertNotEquals(null, g.mField[i * 8 + j]); + } + } + } + assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); + } } \ No newline at end of file From d8918c6790398342bfa9ddd8b5845815e1ba6518 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 11:55:23 +0100 Subject: [PATCH 04/39] removed magic numbers --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 16 ++++++++++++---- .../src/test/java/de/fd/fh/GameTest.java | 12 +++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index cb0606a..f0bb2a1 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -4,18 +4,26 @@ public class Game { public Figure[] mField; + public static final int whiteRowOther = 0; + public static final int whiteRowFarmer = 1; + public static final int blackRowOther = 6; + public static final int blackRowFarmer = 7; + public void initNewGame() { mField = new Figure[Figure.fieldLength * Figure.fieldLength]; // Figuren platzieren - for (int i = 0; i < 8; i++) // row + for (int i = 0; i < Figure.fieldLength; i++) // row { - if (i == 0 || i == 1 || i == 6 || i == 7) + if (i == Game.whiteRowOther + || i == Game.whiteRowFarmer + || i == Game.blackRowOther + || i == Game.blackRowFarmer) { - for (int j = 0; j < 8; j++) // col + for (int j = 0; j < Figure.fieldLength; j++) // col { - mField[i * 8 + j] = new Figure(); + mField[i * Figure.fieldLength + j] = new Figure(); } } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 59fa60e..ccccad9 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -23,16 +23,18 @@ class GameTest Game g = new Game(); g.initNewGame(); - for (int i = 0; i < 8; i++) // row + for (int i = 0; i < Figure.fieldLength; i++) // row { - if (i == 0 || i == 1 || i == 6 || i == 7) + if (i == Game.whiteRowOther + || i == Game.whiteRowFarmer + || i == Game.blackRowOther + || i == Game.blackRowFarmer) { - for (int j = 0; j < 8; j++) // col + for (int j = 0; j < Figure.fieldLength; j++) // col { - assertNotEquals(null, g.mField[i * 8 + j]); + assertNotEquals(null, g.mField[i * Figure.fieldLength + j]); } } } - assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); } } \ No newline at end of file From 2e025f35ade331e3a9ef7efa90c65f7c8e48954d Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 11:58:12 +0100 Subject: [PATCH 05/39] corrected test newGameInitializationFigurePositions -> other fields should be initial null --- .../src/test/java/de/fd/fh/GameTest.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index ccccad9..4aab295 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -25,15 +25,19 @@ class GameTest for (int i = 0; i < Figure.fieldLength; i++) // row { - if (i == Game.whiteRowOther - || i == Game.whiteRowFarmer - || i == Game.blackRowOther - || i == Game.blackRowFarmer) + for (int j = 0; j < Figure.fieldLength; j++) // col { - for (int j = 0; j < Figure.fieldLength; j++) // col + if (i == Game.whiteRowOther + || i == Game.whiteRowFarmer + || i == Game.blackRowOther + || i == Game.blackRowFarmer) { assertNotEquals(null, g.mField[i * Figure.fieldLength + j]); } + else + { + assertEquals(null, g.mField[i * Figure.fieldLength + j]); + } } } } From cf9cb03b1529f525eced8e734f9e5449f64fbd74 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 12:13:40 +0100 Subject: [PATCH 06/39] test farmer initial placement --- .../src/main/java/de/fd/fh/Game.java | 13 +++++++++--- .../src/test/java/de/fd/fh/GameTest.java | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index f0bb2a1..6d5cf4b 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -17,15 +17,22 @@ public class Game for (int i = 0; i < Figure.fieldLength; i++) // row { if (i == Game.whiteRowOther - || i == Game.whiteRowFarmer - || i == Game.blackRowOther - || i == Game.blackRowFarmer) + || i == Game.blackRowOther) { for (int j = 0; j < Figure.fieldLength; j++) // col { mField[i * Figure.fieldLength + j] = new Figure(); } } + + if (i == Game.whiteRowFarmer + || i == Game.blackRowFarmer) + { + for (int j = 0; j < Figure.fieldLength; j++) // col + { + mField[i * Figure.fieldLength + j] = new FigureFarmer(); + } + } } } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 4aab295..858efc2 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -41,4 +41,25 @@ class GameTest } } } + + @Test + void newGameInitializationFigurePositionsFarmer() + { + Game g = new Game(); + g.initNewGame(); + + // weiße Bauern + for (int j = 0; j < Figure.fieldLength; j++) // col + { + assertEquals(new FigureFarmer().getClass(), + g.mField[Game.whiteRowFarmer * Figure.fieldLength + j].getClass()); + } + + // schwarze Bauern + for (int j = 0; j < Figure.fieldLength; j++) // col + { + assertEquals(new FigureFarmer().getClass(), + g.mField[Game.blackRowFarmer * Figure.fieldLength + j].getClass()); + } + } } \ No newline at end of file From 00b04d6bcae1ce3a63579bd89ad5803ef135d949 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 12:30:11 +0100 Subject: [PATCH 07/39] added different FigurFarmer colors --- .../src/main/java/de/fd/fh/FigureFarmer.java | 35 +++++++++++++++++++ .../src/main/java/de/fd/fh/Game.java | 13 +++---- .../test/java/de/fd/fh/FigureFarmerTest.java | 10 +++--- .../src/test/java/de/fd/fh/GameTest.java | 8 +++-- 4 files changed, 53 insertions(+), 13 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java index 49ec0be..8439753 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java @@ -2,6 +2,13 @@ package de.fd.fh; public class FigureFarmer extends Figure { + public int mColor; + + public FigureFarmer(int colorCode) + { + mColor = colorCode; + } + @Override public boolean moveAllowed(int src, int dst, Figure[] field) { @@ -23,4 +30,32 @@ public class FigureFarmer extends Figure return super.moveAllowed(src, dst, field); } + + @Override + public boolean equals(Object o) + { + if (o == null) + { + return false; + } + + if (this == o) + { + return true; + } + + if (this.getClass() != o.getClass()) + { + return false; + } + + FigureFarmer otherFigure = (FigureFarmer)o; + + if (this.mColor != otherFigure.mColor) + { + return false; + } + + return true; + } } diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 6d5cf4b..6219439 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -25,13 +25,14 @@ public class Game } } - if (i == Game.whiteRowFarmer - || i == Game.blackRowFarmer) + for (int j = 0; j < Figure.fieldLength; j++) // col { - for (int j = 0; j < Figure.fieldLength; j++) // col - { - mField[i * Figure.fieldLength + j] = new FigureFarmer(); - } + mField[Game.whiteRowFarmer * Figure.fieldLength + j] = new FigureFarmer(0); + } + + for (int j = 0; j < Figure.fieldLength; j++) // col + { + mField[Game.blackRowFarmer * Figure.fieldLength + j] = new FigureFarmer(1); } } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 9e17ae4..bfac82e 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -10,7 +10,7 @@ class FigureFarmerTest @Test void whiteFarmerValidDestination() { - Figure f = new FigureFarmer(); + Figure f = new FigureFarmer(0); assertTrue(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 5 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -19,7 +19,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationDown() // statt nach "oben" wird nach "unten" gegangen { - Figure f = new FigureFarmer(); + Figure f = new FigureFarmer(0); assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 7 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -28,7 +28,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationUp() // mehr als 1 Schritt nach "oben" { - Figure f = new FigureFarmer(); + Figure f = new FigureFarmer(0); assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 4 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -37,7 +37,7 @@ class FigureFarmerTest @Test void checkMoveWithValidDestinationVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach oben { - Figure f = new FigureFarmer(); + Figure f = new FigureFarmer(0); assertTrue(f.moveAllowed(Figure.fieldLength * 4 + 4, Figure.fieldLength * 3 + 4, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -46,7 +46,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationDownVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach unten { - Figure f = new FigureFarmer(); + Figure f = new FigureFarmer(0); assertFalse(f.moveAllowed(Figure.fieldLength * 4 + 4, Figure.fieldLength * 5 + 4, new Figure[Figure.fieldLength * Figure.fieldLength])); diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 858efc2..b260a15 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -51,15 +51,19 @@ class GameTest // weiße Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { - assertEquals(new FigureFarmer().getClass(), + assertEquals(new FigureFarmer(0).getClass(), g.mField[Game.whiteRowFarmer * Figure.fieldLength + j].getClass()); + assertEquals(new FigureFarmer(0), + g.mField[Game.whiteRowFarmer * Figure.fieldLength + j]); } // schwarze Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { - assertEquals(new FigureFarmer().getClass(), + assertEquals(new FigureFarmer(1).getClass(), g.mField[Game.blackRowFarmer * Figure.fieldLength + j].getClass()); + assertEquals(new FigureFarmer(1), + g.mField[Game.blackRowFarmer * Figure.fieldLength + j]); } } } \ No newline at end of file From de43590ca1ee8e634fbc23ed72f26d1b9591aca1 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 12:33:03 +0100 Subject: [PATCH 08/39] refactored color type --- .../src/main/java/de/fd/fh/FigureFarmer.java | 5 +++-- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 4 ++-- .../src/test/java/de/fd/fh/FigureFarmerTest.java | 10 +++++----- fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 8 ++++---- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java index 8439753..af1aaad 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java @@ -2,9 +2,10 @@ package de.fd.fh; public class FigureFarmer extends Figure { - public int mColor; + enum Color { Black, White}; + public Color mColor; - public FigureFarmer(int colorCode) + public FigureFarmer(Color colorCode) { mColor = colorCode; } diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 6219439..16baa7b 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -27,12 +27,12 @@ public class Game for (int j = 0; j < Figure.fieldLength; j++) // col { - mField[Game.whiteRowFarmer * Figure.fieldLength + j] = new FigureFarmer(0); + mField[Game.whiteRowFarmer * Figure.fieldLength + j] = new FigureFarmer(FigureFarmer.Color.White); } for (int j = 0; j < Figure.fieldLength; j++) // col { - mField[Game.blackRowFarmer * Figure.fieldLength + j] = new FigureFarmer(1); + mField[Game.blackRowFarmer * Figure.fieldLength + j] = new FigureFarmer(FigureFarmer.Color.Black); } } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index bfac82e..eafeb23 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -10,7 +10,7 @@ class FigureFarmerTest @Test void whiteFarmerValidDestination() { - Figure f = new FigureFarmer(0); + Figure f = new FigureFarmer(FigureFarmer.Color.White); assertTrue(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 5 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -19,7 +19,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationDown() // statt nach "oben" wird nach "unten" gegangen { - Figure f = new FigureFarmer(0); + Figure f = new FigureFarmer(FigureFarmer.Color.White); assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 7 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -28,7 +28,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationUp() // mehr als 1 Schritt nach "oben" { - Figure f = new FigureFarmer(0); + Figure f = new FigureFarmer(FigureFarmer.Color.White); assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, Figure.fieldLength * 4 + 0, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -37,7 +37,7 @@ class FigureFarmerTest @Test void checkMoveWithValidDestinationVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach oben { - Figure f = new FigureFarmer(0); + Figure f = new FigureFarmer(FigureFarmer.Color.White); assertTrue(f.moveAllowed(Figure.fieldLength * 4 + 4, Figure.fieldLength * 3 + 4, new Figure[Figure.fieldLength * Figure.fieldLength])); @@ -46,7 +46,7 @@ class FigureFarmerTest @Test void whiteFarmerInvalidDestinationDownVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach unten { - Figure f = new FigureFarmer(0); + Figure f = new FigureFarmer(FigureFarmer.Color.White); assertFalse(f.moveAllowed(Figure.fieldLength * 4 + 4, Figure.fieldLength * 5 + 4, new Figure[Figure.fieldLength * Figure.fieldLength])); diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index b260a15..52664f7 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -51,18 +51,18 @@ class GameTest // weiße Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { - assertEquals(new FigureFarmer(0).getClass(), + assertEquals(new FigureFarmer(FigureFarmer.Color.White).getClass(), g.mField[Game.whiteRowFarmer * Figure.fieldLength + j].getClass()); - assertEquals(new FigureFarmer(0), + assertEquals(new FigureFarmer(FigureFarmer.Color.White), g.mField[Game.whiteRowFarmer * Figure.fieldLength + j]); } // schwarze Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { - assertEquals(new FigureFarmer(1).getClass(), + assertEquals(new FigureFarmer(FigureFarmer.Color.Black).getClass(), g.mField[Game.blackRowFarmer * Figure.fieldLength + j].getClass()); - assertEquals(new FigureFarmer(1), + assertEquals(new FigureFarmer(FigureFarmer.Color.Black), g.mField[Game.blackRowFarmer * Figure.fieldLength + j]); } } From 86da9de4c36682547cad2140deaa86d0e72b1db1 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 13:01:04 +0100 Subject: [PATCH 09/39] corrected wrong row constants --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 16baa7b..569f9bb 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -4,10 +4,10 @@ public class Game { public Figure[] mField; - public static final int whiteRowOther = 0; - public static final int whiteRowFarmer = 1; - public static final int blackRowOther = 6; - public static final int blackRowFarmer = 7; + public static final int whiteRowOther = 7; + public static final int whiteRowFarmer = 6; + public static final int blackRowOther = 0; + public static final int blackRowFarmer = 1; public void initNewGame() { From df6c42c806d6761bf81fbd6206503118ff6b42d5 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 13:18:46 +0100 Subject: [PATCH 10/39] test initial white farmer move --- .../src/main/java/de/fd/fh/Game.java | 15 ++++++++++++++ .../src/test/java/de/fd/fh/GameTest.java | 20 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 569f9bb..2e99b36 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -36,4 +36,19 @@ public class Game } } } + + boolean moveFigure(int src, int dst) + { + Figure f = mField[src]; + + if (!f.moveAllowed(src, dst, mField)) + { + return false; + } + + mField[dst] = f; + mField[src] = null; + + return true; + } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 52664f7..241db7b 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -66,4 +66,24 @@ class GameTest g.mField[Game.blackRowFarmer * Figure.fieldLength + j]); } } + + @Test + void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen + { + Game g = new Game(); + g.initNewGame(); + + // zu bewegende Figur + Figure f = g.mField[Game.whiteRowFarmer * 8 + 0]; + + // Ziel sollte leer sein + assertNull(g.mField[(Game.whiteRowFarmer - 1) * 8 + 0]); + + // Figur bewegen + assertTrue(g.moveFigure(Game.whiteRowFarmer * 8 + 0, (Game.whiteRowFarmer - 1) * 8 + 0)); + + // Figur sollte nun verschoben sein + assertNull(g.mField[Game.whiteRowFarmer * 8 + 0]); + assertSame(f, g.mField[(Game.whiteRowFarmer - 1) * 8 + 0]); + } } \ No newline at end of file From cc784e90945b3cad27dce5eaeaf3b1a385e94a4b Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 13:20:33 +0100 Subject: [PATCH 11/39] refactored magic numbers --- .../src/test/java/de/fd/fh/GameTest.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 241db7b..271ffdb 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -73,17 +73,20 @@ class GameTest Game g = new Game(); g.initNewGame(); + int src = Game.whiteRowFarmer * Figure.fieldLength + 0; + int dst = (Game.whiteRowFarmer - 1) * Figure.fieldLength + 0; + // zu bewegende Figur - Figure f = g.mField[Game.whiteRowFarmer * 8 + 0]; + Figure f = g.mField[src]; // Ziel sollte leer sein - assertNull(g.mField[(Game.whiteRowFarmer - 1) * 8 + 0]); + assertNull(g.mField[dst]); // Figur bewegen - assertTrue(g.moveFigure(Game.whiteRowFarmer * 8 + 0, (Game.whiteRowFarmer - 1) * 8 + 0)); + assertTrue(g.moveFigure(src, dst)); // Figur sollte nun verschoben sein - assertNull(g.mField[Game.whiteRowFarmer * 8 + 0]); - assertSame(f, g.mField[(Game.whiteRowFarmer - 1) * 8 + 0]); + assertNull(g.mField[src]); + assertSame(f, g.mField[dst]); } } \ No newline at end of file From 030bed6414a852207d2d604bf2a3dcaae0a35306 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 13:26:57 +0100 Subject: [PATCH 12/39] optimized annotations --- .../src/test/java/de/fd/fh/GameTest.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 271ffdb..b77bcb5 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -1,5 +1,7 @@ package de.fd.fh; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; @@ -7,12 +9,17 @@ import static org.junit.jupiter.api.Assertions.*; class GameTest { - @Test - void newGameInitializationCorrectField() + private Game g = new Game(); + + @BeforeEach + void setupTest() { - Game g = new Game(); g.initNewGame(); + } + @Test + void newGameInitializationCorrectField() + { assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); } @@ -20,9 +27,6 @@ class GameTest @Test void newGameInitializationFigurePositions() { - Game g = new Game(); - g.initNewGame(); - for (int i = 0; i < Figure.fieldLength; i++) // row { for (int j = 0; j < Figure.fieldLength; j++) // col @@ -45,9 +49,6 @@ class GameTest @Test void newGameInitializationFigurePositionsFarmer() { - Game g = new Game(); - g.initNewGame(); - // weiße Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { @@ -70,9 +71,6 @@ class GameTest @Test void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen { - Game g = new Game(); - g.initNewGame(); - int src = Game.whiteRowFarmer * Figure.fieldLength + 0; int dst = (Game.whiteRowFarmer - 1) * Figure.fieldLength + 0; From 975d2dd3e65056a943e4ab30cfc9736ba832dbe0 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:20:32 +0100 Subject: [PATCH 13/39] extracted magic numbers --- .../test/java/de/fd/fh/FigureFarmerTest.java | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index eafeb23..66a9d50 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -6,49 +6,56 @@ import static org.junit.jupiter.api.Assertions.*; class FigureFarmerTest { + Figure[] field = new Figure[Figure.fieldLength * Figure.fieldLength]; + // weißer Bauer @Test void whiteFarmerValidDestination() { + int src = Figure.fieldLength * 6 + 0; + int dst = Figure.fieldLength * 5 + 0; + Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertTrue(f.moveAllowed(Figure.fieldLength * 6 + 0, - Figure.fieldLength * 5 + 0, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertTrue(f.moveAllowed(src, dst, field)); } @Test void whiteFarmerInvalidDestinationDown() // statt nach "oben" wird nach "unten" gegangen { + int src = Figure.fieldLength * 6 + 0; + int dst = Figure.fieldLength * 7 + 0; + Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, - Figure.fieldLength * 7 + 0, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertFalse(f.moveAllowed(src, dst, field)); } @Test void whiteFarmerInvalidDestinationUp() // mehr als 1 Schritt nach "oben" { + int src = Figure.fieldLength * 6 + 0; + int dst = Figure.fieldLength * 4 + 0; + Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertFalse(f.moveAllowed(Figure.fieldLength * 6 + 0, - Figure.fieldLength * 4 + 0, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertFalse(f.moveAllowed(src, dst, field)); } @Test void checkMoveWithValidDestinationVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach oben { + int src = Figure.fieldLength * 4 + 4; + int dst = Figure.fieldLength * 3 + 4; + Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertTrue(f.moveAllowed(Figure.fieldLength * 4 + 4, - Figure.fieldLength * 3 + 4, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertTrue(f.moveAllowed(src, dst, field)); } @Test void whiteFarmerInvalidDestinationDownVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach unten { + int src = Figure.fieldLength * 4 + 4; + int dst = Figure.fieldLength * 5 + 4; + Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertFalse(f.moveAllowed(Figure.fieldLength * 4 + 4, - Figure.fieldLength * 5 + 4, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertFalse(f.moveAllowed(src, dst, field)); } } \ No newline at end of file From 0bda50fef81fa03de8ddf88c9784be6569ad86f6 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:24:58 +0100 Subject: [PATCH 14/39] refactored test whiteFarmerValidDestination to ParameterizedTest --- .../src/test/java/de/fd/fh/FigureFarmerTest.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 66a9d50..2d367df 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -1,6 +1,8 @@ package de.fd.fh; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import static org.junit.jupiter.api.Assertions.*; @@ -9,11 +11,15 @@ class FigureFarmerTest Figure[] field = new Figure[Figure.fieldLength * Figure.fieldLength]; // weißer Bauer - @Test - void whiteFarmerValidDestination() + @ParameterizedTest + // row (src), col (src), row (dst), col (dst) + @CsvSource({ + "6, 0, 5, 0" // a2 -> a3 + }) + void whiteFarmerValidDestination(int srcRow, int srcCol, int dstRow, int dstCol) { - int src = Figure.fieldLength * 6 + 0; - int dst = Figure.fieldLength * 5 + 0; + int src = Figure.fieldLength * srcRow + srcCol; + int dst = Figure.fieldLength * dstRow + dstCol; Figure f = new FigureFarmer(FigureFarmer.Color.White); assertTrue(f.moveAllowed(src, dst, field)); From edbd9c568c89113db70ea5b2bbc837be0aae0ed7 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:27:41 +0100 Subject: [PATCH 15/39] refactored test whiteFarmerInvalidDestinationDown to ParameterizedTest --- .../src/test/java/de/fd/fh/FigureFarmerTest.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 2d367df..598a93f 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -25,11 +25,16 @@ class FigureFarmerTest assertTrue(f.moveAllowed(src, dst, field)); } - @Test - void whiteFarmerInvalidDestinationDown() // statt nach "oben" wird nach "unten" gegangen + // weißer Bauer + @ParameterizedTest + // row (src), col (src), row (dst), col (dst) + @CsvSource({ + "6, 0, 7, 0" // a2 -> a1 + }) + void whiteFarmerInvalidDestinationDown(int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen { - int src = Figure.fieldLength * 6 + 0; - int dst = Figure.fieldLength * 7 + 0; + int src = Figure.fieldLength * srcRow + srcCol; + int dst = Figure.fieldLength * dstRow + dstCol; Figure f = new FigureFarmer(FigureFarmer.Color.White); assertFalse(f.moveAllowed(src, dst, field)); From db2724722a6ffd321742bdc0c8754f3ac93f42a3 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:33:00 +0100 Subject: [PATCH 16/39] moved whiteFarmerInvalidDestinationDownVar2 into whiteFarmerInvalidDestinationDown --- .../src/test/java/de/fd/fh/FigureFarmerTest.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 598a93f..0aed84c 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -29,7 +29,8 @@ class FigureFarmerTest @ParameterizedTest // row (src), col (src), row (dst), col (dst) @CsvSource({ - "6, 0, 7, 0" // a2 -> a1 + "6, 0, 7, 0", // a2 -> a1 + "4, 4, 5, 4" // e4 -> e3 }) void whiteFarmerInvalidDestinationDown(int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen { @@ -60,13 +61,4 @@ class FigureFarmerTest assertTrue(f.moveAllowed(src, dst, field)); } - @Test - void whiteFarmerInvalidDestinationDownVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach unten - { - int src = Figure.fieldLength * 4 + 4; - int dst = Figure.fieldLength * 5 + 4; - - Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertFalse(f.moveAllowed(src, dst, field)); - } } \ No newline at end of file From 8a499a64894456672e03c90a80788d06ea91f4d7 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:34:41 +0100 Subject: [PATCH 17/39] moved checkMoveWithValidDestinationVar2 into whiteFarmerValidDestination --- .../src/test/java/de/fd/fh/FigureFarmerTest.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 0aed84c..1a680ab 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -14,7 +14,8 @@ class FigureFarmerTest @ParameterizedTest // row (src), col (src), row (dst), col (dst) @CsvSource({ - "6, 0, 5, 0" // a2 -> a3 + "6, 0, 5, 0", // a2 -> a3 + "4, 4, 3, 4" // e4 -> e5 }) void whiteFarmerValidDestination(int srcRow, int srcCol, int dstRow, int dstCol) { @@ -50,15 +51,4 @@ class FigureFarmerTest Figure f = new FigureFarmer(FigureFarmer.Color.White); assertFalse(f.moveAllowed(src, dst, field)); } - - @Test - void checkMoveWithValidDestinationVar2() // Bauer (w) steht in der Mitte vom Feld und geht 1 nach oben - { - int src = Figure.fieldLength * 4 + 4; - int dst = Figure.fieldLength * 3 + 4; - - Figure f = new FigureFarmer(FigureFarmer.Color.White); - assertTrue(f.moveAllowed(src, dst, field)); - } - } \ No newline at end of file From 7c784337031f6de133fca2add9f4b4864b9ff34e Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:44:35 +0100 Subject: [PATCH 18/39] added test for valid movement of black farmer --- .../src/main/java/de/fd/fh/FigureFarmer.java | 9 ++++++-- .../test/java/de/fd/fh/FigureFarmerTest.java | 23 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java index af1aaad..8f6548e 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureFarmer.java @@ -15,12 +15,17 @@ public class FigureFarmer extends Figure { int rowDiff = src / fieldLength - dst / fieldLength; // hoch/runter - if (rowDiff > 1) // weißer Bauer nicht mehr als 1 Schritt nach "oben" + if (mColor == Color.Black) + { + rowDiff *= -1; + } + + if (rowDiff > 1) // Bauer nicht mehr als 1 Schritt { return false; } - if (rowDiff <= 0) // weißer Bauer kein Schritt "runter" + if (rowDiff <= 0) // Bauer nur Schritte in erlaubte Richtung (weiß -> hoch, schwarz -> runter) { return false; } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index 1a680ab..f4c2df3 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -10,19 +10,30 @@ class FigureFarmerTest { Figure[] field = new Figure[Figure.fieldLength * Figure.fieldLength]; - // weißer Bauer @ParameterizedTest - // row (src), col (src), row (dst), col (dst) + // color (0 white/1 black), row (src), col (src), row (dst), col (dst) @CsvSource({ - "6, 0, 5, 0", // a2 -> a3 - "4, 4, 3, 4" // e4 -> e5 + "0, 6, 0, 5, 0", // white: a2 -> a3 + "0, 4, 4, 3, 4", // white: e4 -> e5 + + "1, 1, 0, 2, 0" // black: a1 -> a2 }) - void whiteFarmerValidDestination(int srcRow, int srcCol, int dstRow, int dstCol) + void whiteFarmerValidDestination(int color, int srcRow, int srcCol, int dstRow, int dstCol) { int src = Figure.fieldLength * srcRow + srcCol; int dst = Figure.fieldLength * dstRow + dstCol; - Figure f = new FigureFarmer(FigureFarmer.Color.White); + Figure f = null; + + if (color == 0) + { + f = new FigureFarmer(FigureFarmer.Color.White); + } + else if (color == 1) + { + f = new FigureFarmer(FigureFarmer.Color.Black); + } + assertTrue(f.moveAllowed(src, dst, field)); } From d74706ca41374c972d089be0490a4fca692e612e Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:45:11 +0100 Subject: [PATCH 19/39] renamed tests --- fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index f4c2df3..bb441ea 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -18,7 +18,7 @@ class FigureFarmerTest "1, 1, 0, 2, 0" // black: a1 -> a2 }) - void whiteFarmerValidDestination(int color, int srcRow, int srcCol, int dstRow, int dstCol) + void farmerValidDestination(int color, int srcRow, int srcCol, int dstRow, int dstCol) { int src = Figure.fieldLength * srcRow + srcCol; int dst = Figure.fieldLength * dstRow + dstCol; @@ -37,14 +37,13 @@ class FigureFarmerTest assertTrue(f.moveAllowed(src, dst, field)); } - // weißer Bauer @ParameterizedTest // row (src), col (src), row (dst), col (dst) @CsvSource({ "6, 0, 7, 0", // a2 -> a1 "4, 4, 5, 4" // e4 -> e3 }) - void whiteFarmerInvalidDestinationDown(int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen + void farmerInvalidDestinationDown(int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen { int src = Figure.fieldLength * srcRow + srcCol; int dst = Figure.fieldLength * dstRow + dstCol; From 7734e50a439fea29aa7de2758cb82204619d171c Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:48:44 +0100 Subject: [PATCH 20/39] added test for invalid movement of black farmer --- .../test/java/de/fd/fh/FigureFarmerTest.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index bb441ea..b51688d 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -38,17 +38,29 @@ class FigureFarmerTest } @ParameterizedTest - // row (src), col (src), row (dst), col (dst) + // color (0 white/1 black), row (src), col (src), row (dst), col (dst) @CsvSource({ - "6, 0, 7, 0", // a2 -> a1 - "4, 4, 5, 4" // e4 -> e3 + "0, 6, 0, 7, 0", // white: a2 -> a1 + "0, 4, 4, 5, 4", // white: e4 -> e3 + + "1, 1, 0, 0, 0" // black: a7 -> a8 }) - void farmerInvalidDestinationDown(int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen + void farmerInvalidDestinationDown(int color, int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen { int src = Figure.fieldLength * srcRow + srcCol; int dst = Figure.fieldLength * dstRow + dstCol; - Figure f = new FigureFarmer(FigureFarmer.Color.White); + Figure f = null; + + if (color == 0) + { + f = new FigureFarmer(FigureFarmer.Color.White); + } + else if (color == 1) + { + f = new FigureFarmer(FigureFarmer.Color.Black); + } + assertFalse(f.moveAllowed(src, dst, field)); } From b5aa9415f3fd853fa681bc5c82a9811466b6dcdb Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 17:49:03 +0100 Subject: [PATCH 21/39] renamed test farmerInvalidDestination --- fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java index b51688d..ad4f632 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureFarmerTest.java @@ -45,7 +45,7 @@ class FigureFarmerTest "1, 1, 0, 0, 0" // black: a7 -> a8 }) - void farmerInvalidDestinationDown(int color, int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen + void farmerInvalidDestination(int color, int srcRow, int srcCol, int dstRow, int dstCol) // statt nach "oben" wird nach "unten" gegangen { int src = Figure.fieldLength * srcRow + srcCol; int dst = Figure.fieldLength * dstRow + dstCol; From 95af987307cc0d9de11bfce30cf646bc76d0fdc2 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:10:36 +0100 Subject: [PATCH 22/39] initial placement black rook a8 --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 2 ++ fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 2e99b36..27d65fc 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -35,6 +35,8 @@ public class Game mField[Game.blackRowFarmer * Figure.fieldLength + j] = new FigureFarmer(FigureFarmer.Color.Black); } } + + mField[Figure.fieldLength * 0 + 0] = new FigureRook(); // schwarzer Turm a8 } boolean moveFigure(int src, int dst) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index b77bcb5..a57f3a1 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -68,6 +68,15 @@ class GameTest } } + + @Test + void newGameInitializationFigurePositionsRooks() + { + // schwarzer Turm a8 + assertEquals(new FigureRook().getClass(), + g.mField[Figure.fieldLength * 0 + 0].getClass()); + } + @Test void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen { From b8a1cbb7c8614e7e8d5cdd6cc92d7c92269ab8f5 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:12:32 +0100 Subject: [PATCH 23/39] initial placement black rook h8 --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 1 + fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index 27d65fc..bbe8dba 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -37,6 +37,7 @@ public class Game } mField[Figure.fieldLength * 0 + 0] = new FigureRook(); // schwarzer Turm a8 + mField[Figure.fieldLength * 0 + 7] = new FigureRook(); // schwarzer Turm h8 } boolean moveFigure(int src, int dst) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index a57f3a1..f680a43 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -77,6 +77,14 @@ class GameTest g.mField[Figure.fieldLength * 0 + 0].getClass()); } + @Test + void newGameInitializationFigurePositionsRook2() + { + // schwarzer Turm h8 + assertEquals(new FigureRook().getClass(), + g.mField[Figure.fieldLength * 0 + 7].getClass()); + } + @Test void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen { From d0939f3cca846e2f10d16f3c7572ea68f164a616 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:14:27 +0100 Subject: [PATCH 24/39] transformed newGameInitializationFigurePositionsRooks to ParameterizedTest --- fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index f680a43..eb35166 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -3,6 +3,8 @@ package de.fd.fh; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.*; @@ -69,12 +71,16 @@ class GameTest } - @Test - void newGameInitializationFigurePositionsRooks() + @ParameterizedTest + // row, col + @CsvSource({ + "0, 0" + }) + void newGameInitializationFigurePositionsRooks(int row, int col) { // schwarzer Turm a8 assertEquals(new FigureRook().getClass(), - g.mField[Figure.fieldLength * 0 + 0].getClass()); + g.mField[Figure.fieldLength * row + col].getClass()); } @Test From c827f07f88d40d4f5669f459be4e39ad1d61d4bd Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:15:34 +0100 Subject: [PATCH 25/39] moved newGameInitializationFigurePositionsRook2 into newGameInitializationFigurePositionsRooks --- fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index eb35166..1c903d5 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -74,7 +74,8 @@ class GameTest @ParameterizedTest // row, col @CsvSource({ - "0, 0" + "0, 0", // schwarzer Turm a8 + "0, 7" // schwarzer Turm h8 }) void newGameInitializationFigurePositionsRooks(int row, int col) { @@ -83,14 +84,6 @@ class GameTest g.mField[Figure.fieldLength * row + col].getClass()); } - @Test - void newGameInitializationFigurePositionsRook2() - { - // schwarzer Turm h8 - assertEquals(new FigureRook().getClass(), - g.mField[Figure.fieldLength * 0 + 7].getClass()); - } - @Test void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen { From 4ca6b4766a3e9d8db28d2311c44077bab9fb9539 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:16:55 +0100 Subject: [PATCH 26/39] initial placement white rook a1 --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 1 + fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index bbe8dba..ce289f1 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -38,6 +38,7 @@ public class Game mField[Figure.fieldLength * 0 + 0] = new FigureRook(); // schwarzer Turm a8 mField[Figure.fieldLength * 0 + 7] = new FigureRook(); // schwarzer Turm h8 + mField[Figure.fieldLength * 7 + 0] = new FigureRook(); // weißer Turm a1 } boolean moveFigure(int src, int dst) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index 1c903d5..d061ed4 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -75,7 +75,8 @@ class GameTest // row, col @CsvSource({ "0, 0", // schwarzer Turm a8 - "0, 7" // schwarzer Turm h8 + "0, 7", // schwarzer Turm h8 + "7, 0" // weißer Turm a1 }) void newGameInitializationFigurePositionsRooks(int row, int col) { From 33f141832dd6305d5a22ad948b1b0961c7bf1176 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Sun, 31 Jan 2021 18:22:05 +0100 Subject: [PATCH 27/39] initial placement white rook h1 --- fh.fd.ci.client/src/main/java/de/fd/fh/Game.java | 1 + fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java index ce289f1..ded0c96 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/Game.java @@ -39,6 +39,7 @@ public class Game mField[Figure.fieldLength * 0 + 0] = new FigureRook(); // schwarzer Turm a8 mField[Figure.fieldLength * 0 + 7] = new FigureRook(); // schwarzer Turm h8 mField[Figure.fieldLength * 7 + 0] = new FigureRook(); // weißer Turm a1 + mField[Figure.fieldLength * 7 + 7] = new FigureRook(); // weißer Turm h1 } boolean moveFigure(int src, int dst) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java index d061ed4..10b4eb4 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/GameTest.java @@ -76,7 +76,8 @@ class GameTest @CsvSource({ "0, 0", // schwarzer Turm a8 "0, 7", // schwarzer Turm h8 - "7, 0" // weißer Turm a1 + "7, 0", // weißer Turm a1 + "7, 7" // weißer Turm h1 }) void newGameInitializationFigurePositionsRooks(int row, int col) { From 16f4d9bbe46de514640273c628c93b2d46722bd5 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 11:30:27 +0100 Subject: [PATCH 28/39] test: initial king movement (own class was necessary to run other tests successfully) --- .../src/main/java/de/fd/fh/FigureKing.java | 25 +++++++++++++++++ .../test/java/de/fd/fh/FigureKingTest.java | 28 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java create mode 100644 fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java new file mode 100644 index 0000000..4c2c230 --- /dev/null +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java @@ -0,0 +1,25 @@ +package de.fd.fh; + +public class FigureKing extends Figure +{ + @Override + public boolean moveAllowed(int src, int dst, Figure[] field) + { + // TODO: Positionierung in einer Ecke beachten + if (dst != src-1 + || dst != src +1 + + || dst != src -8 + || dst != src -8 -1 + || dst != src -8 +1 + + || dst != src +8 + || dst != src +8 -1 + || dst != src +8 +1) + { + return false; + } + + return super.moveAllowed(src, dst, field); + } +} diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java new file mode 100644 index 0000000..1f03a35 --- /dev/null +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java @@ -0,0 +1,28 @@ +package de.fd.fh; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FigureKingTest +{ + // K = Position (19), x = gültig (10, 11, 12, 18, 20, 26, 27, 28), rest nicht + // x x x + // x K x + // x x x + @Test + void checkInvalidKingMoves() + { + Figure f = new FigureKing(); + + for (int i = 0; i < 64; i++) + { + if (i != 10 && i != 11 && i != 12 + && i != 18 && i != 20 + && i != 26 && i != 27 && i != 28) + { + assertFalse(f.moveAllowed(19, i, new Figure[64])); + } + } + } +} \ No newline at end of file From a3ce3541d7ca85c69f2f846049fbf90785892509 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 11:37:36 +0100 Subject: [PATCH 29/39] refactoring: removed magic numbers --- .../test/java/de/fd/fh/FigureKingTest.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java index 1f03a35..adffd96 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java @@ -2,6 +2,9 @@ package de.fd.fh; import org.junit.jupiter.api.Test; +import java.lang.reflect.Array; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.*; class FigureKingTest @@ -15,14 +18,29 @@ class FigureKingTest { Figure f = new FigureKing(); + int pos = 19; + + ArrayList possibleMoves = new ArrayList<>(); + + possibleMoves.add(pos - Figure.fieldLength - 1); + possibleMoves.add(pos - Figure.fieldLength); + possibleMoves.add(pos - Figure.fieldLength + 1); + + possibleMoves.add(pos -1); + possibleMoves.add(pos + 1); + + possibleMoves.add(pos + Figure.fieldLength - 1); + possibleMoves.add(pos + Figure.fieldLength); + possibleMoves.add(pos + Figure.fieldLength + 1); + for (int i = 0; i < 64; i++) { - if (i != 10 && i != 11 && i != 12 - && i != 18 && i != 20 - && i != 26 && i != 27 && i != 28) + if (possibleMoves.contains(i)) { - assertFalse(f.moveAllowed(19, i, new Figure[64])); + continue; } + + assertFalse(f.moveAllowed(pos, i, new Figure[64])); } } } \ No newline at end of file From 39759cf01d501a43bdd10bd4c0d12fef83aa1cdb Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 11:55:54 +0100 Subject: [PATCH 30/39] test: king movement -> valid moves (based on checkInvalidKingMoves()) --- .../src/main/java/de/fd/fh/FigureKing.java | 14 +++++----- .../test/java/de/fd/fh/FigureKingTest.java | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java index 4c2c230..e4bc10e 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureKing.java @@ -7,15 +7,15 @@ public class FigureKing extends Figure { // TODO: Positionierung in einer Ecke beachten if (dst != src-1 - || dst != src +1 + && dst != src +1 - || dst != src -8 - || dst != src -8 -1 - || dst != src -8 +1 + && dst != src -8 + && dst != src -8 -1 + && dst != src -8 +1 - || dst != src +8 - || dst != src +8 -1 - || dst != src +8 +1) + && dst != src +8 + && dst != src +8 -1 + && dst != src +8 +1) { return false; } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java index adffd96..7e7db53 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java @@ -43,4 +43,30 @@ class FigureKingTest assertFalse(f.moveAllowed(pos, i, new Figure[64])); } } + + @Test + void checkValidKingMoves() + { + Figure f = new FigureKing(); + + int pos = 45; + + ArrayList possibleMoves = new ArrayList<>(); + + possibleMoves.add(pos - Figure.fieldLength - 1); + possibleMoves.add(pos - Figure.fieldLength); + possibleMoves.add(pos - Figure.fieldLength + 1); + + possibleMoves.add(pos - 1); + possibleMoves.add(pos + 1); + + possibleMoves.add(pos + Figure.fieldLength - 1); + possibleMoves.add(pos + Figure.fieldLength); + possibleMoves.add(pos + Figure.fieldLength + 1); + + for (int i = 0; i < possibleMoves.size(); i++) + { + assertTrue(f.moveAllowed(pos, possibleMoves.get(i), new Figure[64])); + } + } } \ No newline at end of file From cc0a4dd5e2e60ff81d1cded65ff4dc8a9ed1f951 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 12:02:24 +0100 Subject: [PATCH 31/39] refactoring: combined tests checkInvalidKingMoves/checkValidKingMoves, renamed test checkInvalidKingMoves --- .../test/java/de/fd/fh/FigureKingTest.java | 41 +++++-------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java index 7e7db53..fb302df 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureKingTest.java @@ -1,6 +1,8 @@ package de.fd.fh; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import java.lang.reflect.Array; import java.util.ArrayList; @@ -13,13 +15,15 @@ class FigureKingTest // x x x // x K x // x x x - @Test - void checkInvalidKingMoves() + @ParameterizedTest + @CsvSource({ + "19", + "45" + }) + void checkKingMovesSimple(int pos) { Figure f = new FigureKing(); - int pos = 19; - ArrayList possibleMoves = new ArrayList<>(); possibleMoves.add(pos - Figure.fieldLength - 1); @@ -33,40 +37,15 @@ class FigureKingTest possibleMoves.add(pos + Figure.fieldLength); possibleMoves.add(pos + Figure.fieldLength + 1); - for (int i = 0; i < 64; i++) + for (int i = 0; i < Figure.fieldLength * Figure.fieldLength; i++) { if (possibleMoves.contains(i)) { + assertTrue(f.moveAllowed(pos, i, new Figure[64])); continue; } assertFalse(f.moveAllowed(pos, i, new Figure[64])); } } - - @Test - void checkValidKingMoves() - { - Figure f = new FigureKing(); - - int pos = 45; - - ArrayList possibleMoves = new ArrayList<>(); - - possibleMoves.add(pos - Figure.fieldLength - 1); - possibleMoves.add(pos - Figure.fieldLength); - possibleMoves.add(pos - Figure.fieldLength + 1); - - possibleMoves.add(pos - 1); - possibleMoves.add(pos + 1); - - possibleMoves.add(pos + Figure.fieldLength - 1); - possibleMoves.add(pos + Figure.fieldLength); - possibleMoves.add(pos + Figure.fieldLength + 1); - - for (int i = 0; i < possibleMoves.size(); i++) - { - assertTrue(f.moveAllowed(pos, possibleMoves.get(i), new Figure[64])); - } - } } \ No newline at end of file From 5fc5761e068db760b2ddee4b26b50f8a5e8cdf46 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 13:07:10 +0100 Subject: [PATCH 32/39] test: invalid bishop move upward --- .../src/main/java/de/fd/fh/FigureBishop.java | 15 +++++++++++++++ .../src/test/java/de/fd/fh/FigureBishopTest.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java create mode 100644 fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java new file mode 100644 index 0000000..80ea718 --- /dev/null +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -0,0 +1,15 @@ +package de.fd.fh; + +public class FigureBishop extends Figure +{ + @Override + public boolean moveAllowed(int src, int dst, Figure[] field) + { + if ((dst-src) % 8 == 0) // nach oben/unten nicht erlaubt + { + return false; + } + + return super.moveAllowed(src, dst, field); + } +} diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java new file mode 100644 index 0000000..3dc528a --- /dev/null +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -0,0 +1,16 @@ +package de.fd.fh; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FigureBishopTest +{ + @Test + void checkInvalidMovesBishop() + { + Figure f = new FigureBishop(); + + assertFalse(f.moveAllowed(45, 37, new Figure[64])); + } +} \ No newline at end of file From e77ffb6f8a798c7917ff54e238e3027ab8a21878 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 13:11:19 +0100 Subject: [PATCH 33/39] refactoring: removed magic numbers --- fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java | 2 +- .../src/test/java/de/fd/fh/FigureBishopTest.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java index 80ea718..b9e6e6f 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -5,7 +5,7 @@ public class FigureBishop extends Figure @Override public boolean moveAllowed(int src, int dst, Figure[] field) { - if ((dst-src) % 8 == 0) // nach oben/unten nicht erlaubt + if ((dst-src) % Figure.fieldLength == 0) // nach oben/unten nicht erlaubt { return false; } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index 3dc528a..acbf798 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -7,10 +7,14 @@ import static org.junit.jupiter.api.Assertions.*; class FigureBishopTest { @Test - void checkInvalidMovesBishop() + void checkInvalidMovesBishopUpward() { Figure f = new FigureBishop(); - assertFalse(f.moveAllowed(45, 37, new Figure[64])); + int src = Figure.fieldLength * 5 + 5; + int dst = src - Figure.fieldLength; + + assertFalse(f.moveAllowed(src, dst, + new Figure[Figure.fieldLength * Figure.fieldLength])); } } \ No newline at end of file From 7d9510ccb9c08ea5add5fb50ba8643c6be1dc5a1 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 13:15:14 +0100 Subject: [PATCH 34/39] test: bishop 1 step right --- fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java | 5 +++++ .../src/test/java/de/fd/fh/FigureBishopTest.java | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java index b9e6e6f..55f4abd 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -10,6 +10,11 @@ public class FigureBishop extends Figure return false; } + if (dst - src == 1) // 1 Feld nach rechts + { + return false; + } + return super.moveAllowed(src, dst, field); } } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index acbf798..260f239 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -17,4 +17,13 @@ class FigureBishopTest assertFalse(f.moveAllowed(src, dst, new Figure[Figure.fieldLength * Figure.fieldLength])); } + + @Test + void checkInvalidMovesBishopRight() + { + Figure f = new FigureBishop(); + + assertFalse(f.moveAllowed(45, 46, + new Figure[64])); + } } \ No newline at end of file From 0ac4d17999c5266ec128e440e1189cbb7129f184 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 13:16:00 +0100 Subject: [PATCH 35/39] refactoring: removed magic numbers --- .../src/test/java/de/fd/fh/FigureBishopTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index 260f239..e0173d6 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -23,7 +23,10 @@ class FigureBishopTest { Figure f = new FigureBishop(); - assertFalse(f.moveAllowed(45, 46, - new Figure[64])); + int src = Figure.fieldLength * 5 + 5; + int dst = src + 1; + + assertFalse(f.moveAllowed(src, dst, + new Figure[Figure.fieldLength * Figure.fieldLength])); } } \ No newline at end of file From 6e5c52fe37167cb44d9348038cd3dc31e5ef5066 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 13:58:18 +0100 Subject: [PATCH 36/39] test: bishop invalid step 2 --- fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java | 2 +- .../src/test/java/de/fd/fh/FigureBishopTest.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java index 55f4abd..34f473c 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -10,7 +10,7 @@ public class FigureBishop extends Figure return false; } - if (dst - src == 1) // 1 Feld nach rechts + if (dst - src == 1 || dst - src == 6) // 1 Feld nach rechts { return false; } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index e0173d6..b0288d0 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -29,4 +29,13 @@ class FigureBishopTest assertFalse(f.moveAllowed(src, dst, new Figure[Figure.fieldLength * Figure.fieldLength])); } + + @Test + void checkInvalidMovesBishopRight2() + { + Figure f = new FigureBishop(); + + assertFalse(f.moveAllowed(45, 51, + new Figure[64])); + } } \ No newline at end of file From 90baf93b1473615865f821c4c1b93dc236ed054f Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 14:25:00 +0100 Subject: [PATCH 37/39] refactoring: FigureBishopTest --- .../src/test/java/de/fd/fh/FigureBishopTest.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index b0288d0..1393304 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -6,6 +6,8 @@ import static org.junit.jupiter.api.Assertions.*; class FigureBishopTest { + Figure[] field = new Figure[Figure.fieldLength * Figure.fieldLength]; + @Test void checkInvalidMovesBishopUpward() { @@ -14,8 +16,7 @@ class FigureBishopTest int src = Figure.fieldLength * 5 + 5; int dst = src - Figure.fieldLength; - assertFalse(f.moveAllowed(src, dst, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertFalse(f.moveAllowed(src, dst, field)); } @Test @@ -26,8 +27,7 @@ class FigureBishopTest int src = Figure.fieldLength * 5 + 5; int dst = src + 1; - assertFalse(f.moveAllowed(src, dst, - new Figure[Figure.fieldLength * Figure.fieldLength])); + assertFalse(f.moveAllowed(src, dst, field)); } @Test @@ -35,7 +35,9 @@ class FigureBishopTest { Figure f = new FigureBishop(); - assertFalse(f.moveAllowed(45, 51, - new Figure[64])); + int src = Figure.fieldLength * 5 + 5; + int dst = src + 6; + + assertFalse(f.moveAllowed(src, dst, field)); } } \ No newline at end of file From 9fc411904577537cb850c4fc2e80074d5acde048 Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 14:30:18 +0100 Subject: [PATCH 38/39] test: bishop invalid step 3 --- fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java | 3 ++- .../src/test/java/de/fd/fh/FigureBishopTest.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java index 34f473c..b46b56b 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -10,7 +10,8 @@ public class FigureBishop extends Figure return false; } - if (dst - src == 1 || dst - src == 6) // 1 Feld nach rechts + if (dst - src == 1 || dst - src == 6 + || dst - src == 10) // 1 Feld nach rechts { return false; } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index 1393304..6c203fc 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -40,4 +40,12 @@ class FigureBishopTest assertFalse(f.moveAllowed(src, dst, field)); } + + @Test + void checkValidMovesBishopRight3() + { + Figure f = new FigureBishop(); + + assertFalse(f.moveAllowed(45, 55, field)); + } } \ No newline at end of file From d9b9c2ac1bd9c3731d68d38219865a37f1a947cf Mon Sep 17 00:00:00 2001 From: Julius Dewender Date: Fri, 5 Feb 2021 14:45:53 +0100 Subject: [PATCH 39/39] refactoring: optimized bishop move validation --- fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java | 6 ++---- .../src/test/java/de/fd/fh/FigureBishopTest.java | 9 ++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java index b46b56b..6e829b0 100644 --- a/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java +++ b/fh.fd.ci.client/src/main/java/de/fd/fh/FigureBishop.java @@ -10,11 +10,9 @@ public class FigureBishop extends Figure return false; } - if (dst - src == 1 || dst - src == 6 - || dst - src == 10) // 1 Feld nach rechts - { + if ((dst-src) % 7 != 0 + && (dst-src) % 9 != 0) return false; - } return super.moveAllowed(src, dst, field); } diff --git a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java index 6c203fc..6ea3d81 100644 --- a/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java +++ b/fh.fd.ci.client/src/test/java/de/fd/fh/FigureBishopTest.java @@ -2,7 +2,7 @@ package de.fd.fh; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; class FigureBishopTest { @@ -42,10 +42,13 @@ class FigureBishopTest } @Test - void checkValidMovesBishopRight3() + void checkInvalidMovesBishopRight3() { Figure f = new FigureBishop(); - assertFalse(f.moveAllowed(45, 55, field)); + int src = Figure.fieldLength * 5 + 5; + int dst = src + 10; + + assertFalse(f.moveAllowed(src, dst, field)); } } \ No newline at end of file