diff --git a/.idea/misc.xml b/.idea/misc.xml
index b573818..c3dfb30 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/test/ch/zhaw/catan/SiedlerGameTest.java b/test/ch/zhaw/catan/SiedlerGameTest.java
index 3dd6fe8..60b91f7 100644
--- a/test/ch/zhaw/catan/SiedlerGameTest.java
+++ b/test/ch/zhaw/catan/SiedlerGameTest.java
@@ -7,10 +7,7 @@ import ch.zhaw.catan.games.ThreePlayerStandard;
import org.beryx.textio.TextIO;
import org.beryx.textio.TextIoFactory;
import org.beryx.textio.TextTerminal;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.*;
import java.awt.*;
import java.util.*;
@@ -28,158 +25,236 @@ import java.util.List;
public class SiedlerGameTest {
- private final static int DEFAULT_WINPOINTS = 10;
+ private final static int DEFAULT_WINPOINTS = 5;
private final static int DEFAULT_PLAYERAMOUNT = 4;
- private final static Map START_SETTLEMENT_POSITIONS = new HashMap<>(
- Map.of(
- Config.Faction.BLUE, new Point(5, 7),
- Config.Faction.RED, new Point(1, 3),
- Config.Faction.GREEN, new Point(11, 13),
- Config.Faction.YELLOW, new Point(13, 5)
- ));
- private final static Map> START_ROADS_POSITIONS = new HashMap<>(
- Map.of(
- Config.Faction.BLUE, new Tuple<>(new Point(5, 6), new Point(5, 6)),
- Config.Faction.RED, new Tuple<>(new Point(1, 2), new Point(1, 1)),
- Config.Faction.GREEN, new Tuple<>(new Point(12, 12), new Point(13, 11)),
- Config.Faction.YELLOW, new Tuple<>(new Point(13, 6), new Point(13, 7))
- ));
+ @Nested
+ @DisplayName("Positive test cases")
+ class PositiveTestcases {
+
+ /**
+ * To Test getLongestRoad in SiedlerBoard
+ *
+ */
+ @Test
+ public void testLongestRoad() {
+ HashMap currentLongestRoad = new HashMap<>();
+ //currentLongestRoad.put(Config.Faction.RED,5);
+ List factionList = Arrays.asList(Config.Faction.values());
+
+ SiedlerBoard board = new SiedlerBoard();
+ board.createFixGamefield();
+ board.setEdge(new Point(6, 6), new Point(5, 7), new Road(Config.Faction.BLUE,new Point(6, 6),new Point(5, 7)));
+ board.setEdge(new Point(4, 6), new Point(5, 7), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(5, 7)));
+ board.setEdge(new Point(4, 6), new Point(4, 4), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(4, 4)));
+ board.setEdge(new Point(4, 6), new Point(3, 7), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(3, 7)));
+ board.setEdge(new Point(3, 7), new Point(3, 9), new Road(Config.Faction.BLUE,new Point(3, 7),new Point(3, 9)));
+ board.setEdge(new Point(3, 9), new Point(4, 10), new Road(Config.Faction.BLUE,new Point(3, 9),new Point(4, 10)));
+ board.setEdge(new Point(4, 10), new Point(5, 9), new Road(Config.Faction.BLUE,new Point(4, 10),new Point(5, 9)));
+ board.setCorner(new Point(3,7),new Settlement(Config.Faction.BLUE,new Point(3,7)));
+ board.getLongestRoadFaction(currentLongestRoad,factionList);
+ assertEquals(6,currentLongestRoad.get(Config.Faction.BLUE));
+
+ }
+
+ /**
+ *
+ */
+ @Test
+ @DisplayName("Test")
+ public void TestHandle7() {
+
+ SiedlerGame game = SystemTestcases.startGame();
+
+ }
+ }
+
+ @Nested
+ @DisplayName("Negative test cases")
+ class NegativeTestcases {
+ /**
+ * Tests if the method will fail when given false Data
+ * {@link ThreePlayerStandard#getAfterSetupPhaseAlmostEmptyBank(int)}
+ */
+ @Test
+ public void destructiveTestBuildCity() {
+ SiedlerGame model = ThreePlayerStandard.getAfterSetupPhaseAlmostEmptyBank(DEFAULT_WINPOINTS);
+
+ //Too
+ Assertions.assertFalse(model.buildCity(new Point(50, 60)));
+
+ //Factions wants to build a city on a city from another faction
+ Assertions.assertFalse(model.buildCity(new Point(3, 3)));
+ }
+
+ /**
+ * Tests if the method fails when given false Data
+ * {@link ThreePlayerStandard#getAfterSetupPhase(int)}
+ */
+ @Test
+ public void destructiveTestBuildRoad() {
+
+ SiedlerGame model = ThreePlayerStandard.getAfterSetupPhase(DEFAULT_WINPOINTS);
+
+ System.out.println(model.buildRoad(new Point(3, 7),new Point(3, 9)));
+ }
+
+ /**
+ * Tests if the method fails when trading material with the same material
+ * {@link ThreePlayerStandard#getAfterSetupPhaseAlmostEmptyBank(int)}
+ */
+ @Test
+ public void destructiveTestTradeWithBank() {
+ SiedlerGame model = ThreePlayerStandard.getAfterSetupPhaseAlmostEmptyBank(DEFAULT_WINPOINTS);
+ model.switchToNextPlayer();
+
+ Map expectedResourceCards = ThreePlayerStandard.BANK_ALMOST_EMPTY_RESOURCE_CARD_STOCK.get(model.getCurrentPlayerFaction());
+ assertEquals(expectedResourceCards.get(Config.Resource.WOOL), model.getCurrentPlayerResourceStock(Config.Resource.WOOL));
+ assertEquals(expectedResourceCards.get(Config.Resource.LUMBER), model.getCurrentPlayerResourceStock(Config.Resource.LUMBER));
+
+ System.out.println(model.tradeWithBankFourToOne(Config.Resource.WOOL, Config.Resource.WOOL));
+ }
+ }
/**
- * To Test getLongestRoad in SiedlerBoard
+ * @Class SystemTestCases
+ *
+ * This class simulates a running game and tests multiple sequences of this game.
+ * Those test cases will be
*
*/
- @Test
- public void testLongestRoad() {
- HashMap currentLongestRoad = new HashMap<>();
- //currentLongestRoad.put(Config.Faction.RED,5);
- List factionList = Arrays.asList(Config.Faction.values());
+ @Nested
+ @DisplayName("System test cases")
+ class SystemTestcases {
- SiedlerBoard board = new SiedlerBoard();
- board.createFixGamefield();
- board.setEdge(new Point(6, 6), new Point(5, 7), new Road(Config.Faction.BLUE,new Point(6, 6),new Point(5, 7)));
- board.setEdge(new Point(4, 6), new Point(5, 7), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(5, 7)));
- board.setEdge(new Point(4, 6), new Point(4, 4), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(4, 4)));
- board.setEdge(new Point(4, 6), new Point(3, 7), new Road(Config.Faction.BLUE,new Point(4, 6),new Point(3, 7)));
- board.setEdge(new Point(3, 7), new Point(3, 9), new Road(Config.Faction.BLUE,new Point(3, 7),new Point(3, 9)));
- board.setEdge(new Point(3, 9), new Point(4, 10), new Road(Config.Faction.BLUE,new Point(3, 9),new Point(4, 10)));
- board.setEdge(new Point(4, 10), new Point(5, 9), new Road(Config.Faction.BLUE,new Point(4, 10),new Point(5, 9)));
- board.setCorner(new Point(3,7),new Settlement(Config.Faction.BLUE,new Point(3,7)));
- board.getLongestRoadFaction(currentLongestRoad,factionList);
- assertEquals(6,currentLongestRoad.get(Config.Faction.BLUE));
+ private final static Map START_SETTLEMENT_POSITIONS = new HashMap<>(
+ Map.of(
+ Config.Faction.BLUE, new Point(4, 4),
+ Config.Faction.RED, new Point(10, 4),
+ Config.Faction.GREEN, new Point(4, 18),
+ Config.Faction.YELLOW, new Point(10, 18)
+ ));
- }
+ /**
+ * @Datafield START_ROADS_POSITION
+ *
+ * This are a set of Roads, that have been
+ */
+ private final static Map> START_ROADS_POSITIONS = new HashMap<>(
+ Map.of(
+ Config.Faction.BLUE, new Tuple<>(new Point(4, 4), new Point(4, 6)),
+ Config.Faction.RED, new Tuple<>(new Point(10, 4), new Point(10, 6)),
+ Config.Faction.GREEN, new Tuple<>(new Point(4, 18), new Point(4, 16)),
+ Config.Faction.YELLOW, new Tuple<>(new Point(10, 18), new Point(10, 16))
+ ));
- /**
- * Tests if the method will fail when given false Data
- * {@link ThreePlayerStandard#getAfterSetupPhaseAlmostEmptyBank(int)}
- */
- @Test
- public void destructiveTestBuildCity() {
- SiedlerGame model = ThreePlayerStandard.getAfterSetupPhaseAlmostEmptyBank(DEFAULT_WINPOINTS);
-
- //Too
- Assertions.assertFalse(model.buildCity(new Point(50, 60)));
-
- //Factions wants to build a city on a city from another faction
- Assertions.assertFalse(model.buildCity(new Point(3, 3)));
- }
-
- /**
- * Tests if the method fails when given false Data
- * {@link ThreePlayerStandard#getAfterSetupPhase(int)}
- */
- @Test
- public void destructiveTestBuildRoad() {
-
- SiedlerGame model = ThreePlayerStandard.getAfterSetupPhase(DEFAULT_WINPOINTS);
-
- System.out.println(model.buildRoad(new Point(3, 7),new Point(3, 9)));
- }
-
- /**
- * Tests if the method fails when trading material with the same material
- * {@link ThreePlayerStandard#getAfterSetupPhaseAlmostEmptyBank(int)}
- */
- @Test
- public void destructiveTestTradeWithBank() {
- SiedlerGame model = ThreePlayerStandard.getAfterSetupPhaseAlmostEmptyBank(DEFAULT_WINPOINTS);
- model.switchToNextPlayer();
-
- Map expectedResourceCards = ThreePlayerStandard.BANK_ALMOST_EMPTY_RESOURCE_CARD_STOCK.get(model.getCurrentPlayerFaction());
- assertEquals(expectedResourceCards.get(Config.Resource.WOOL), model.getCurrentPlayerResourceStock(Config.Resource.WOOL));
- assertEquals(expectedResourceCards.get(Config.Resource.LUMBER), model.getCurrentPlayerResourceStock(Config.Resource.LUMBER));
-
- System.out.println(model.tradeWithBankFourToOne(Config.Resource.WOOL, Config.Resource.WOOL));
- }
-
- @Test
- public void TestGameInSetupPhase() {
- SiedlerGame game = startGame();
-
- for (Config.Faction faction: game.getPlayerFactions()) {
- HashMap resources = game.getCurrentPlayerResource();
-
- Assertions.assertEquals(0, resources.get(Config.Resource.BRICK));
- Assertions.assertEquals(0, resources.get(Config.Resource.GRAIN));
- Assertions.assertEquals(0, resources.get(Config.Resource.LUMBER));
- Assertions.assertEquals(0, resources.get(Config.Resource.ORE));
- Assertions.assertEquals(0, resources.get(Config.Resource.WOOL));
-
- game.switchToNextPlayer();
- }
- }
-
- @Test
- public void TestGameAfterSetupPhase() {
- SiedlerGame game = gameAfterSetupPhase();
-
- throwDiceSeveralTimes(game, 5, 5);
-
- System.out.println("\n\nVerteilung \n\n");
- for (Config.Faction faction: game.getPlayerFactions()) {
- HashMap resources = game.getCurrentPlayerResource();
- System.out.println(faction.toString() + "\n");
- System.out.println(" BRICK " + resources.get(Config.Resource.BRICK).toString());
- System.out.println(" GRAIN " + resources.get(Config.Resource.GRAIN));
- System.out.println(" LUMBER " + resources.get(Config.Resource.LUMBER));
- System.out.println(" ORE " + resources.get(Config.Resource.ORE));
- System.out.println(" WOOL " + resources.get(Config.Resource.WOOL));
-
- game.switchToNextPlayer();
- }
- }
-
- @Test
- public void TestGameInMiddle() {
-
- }
-
- private SiedlerGame startGame() {
- return new SiedlerGame(DEFAULT_WINPOINTS, DEFAULT_PLAYERAMOUNT);
- }
-
- private void throwDiceSeveralTimes(SiedlerGame game, int dice, int amountDiceThrows) {
- for (int i = 0; i < amountDiceThrows; i++) {
- System.out.println(game.getCurrentPlayerFaction().toString());
- game.throwDice(dice);
- }
- }
-
- private SiedlerGame gameAfterSetupPhase() {
- SiedlerGame game = startGame();
-
- for (Config.Faction faction: game.getPlayerFactions()) {
-
- game.buildSettlement(START_SETTLEMENT_POSITIONS.get(faction));
- game.buildRoad(START_ROADS_POSITIONS.get(faction).first, START_ROADS_POSITIONS.get(faction).second);
-
- game.switchToNextPlayer();
+ private static SiedlerGame startGame() {
+ return new SiedlerGame(DEFAULT_WINPOINTS, DEFAULT_PLAYERAMOUNT);
}
- return game;
+
+ @Test
+ @DisplayName("Game initializing")
+ public void TestGameInitialization() {
+ SiedlerGame game = startGame();
+
+ for (Config.Faction faction: game.getPlayerFactions()) {
+ HashMap resources = game.getCurrentPlayerResource();
+
+ Assertions.assertEquals(0, resources.get(Config.Resource.BRICK));
+ Assertions.assertEquals(0, resources.get(Config.Resource.GRAIN));
+ Assertions.assertEquals(0, resources.get(Config.Resource.LUMBER));
+ Assertions.assertEquals(0, resources.get(Config.Resource.ORE));
+ Assertions.assertEquals(0, resources.get(Config.Resource.WOOL));
+
+ game.switchToNextPlayer();
+ }
+ }
+
+ /**
+ * This will test when
+ */
+ @Test
+ public void TestGameInSetupPhase() {
+ SiedlerGame game = gameInSetupPhase();
+
+ for (Config.Faction faction: game.getPlayerFactions()) {
+ HashMap resources = game.getCurrentPlayerResource();
+
+ Assertions.assertEquals(0, resources.get(Config.Resource.BRICK));
+ Assertions.assertEquals(0, resources.get(Config.Resource.GRAIN));
+ Assertions.assertEquals(0, resources.get(Config.Resource.LUMBER));
+ Assertions.assertEquals(0, resources.get(Config.Resource.ORE));
+ Assertions.assertEquals(0, resources.get(Config.Resource.WOOL));
+
+ game.switchToNextPlayer();
+ }
+ }
+
+ private static SiedlerGame gameInSetupPhase() {
+ SiedlerGame game = startGame();
+
+ for (Config.Faction faction: game.getPlayerFactions()) {
+
+ game.placeInitialSettlement(START_SETTLEMENT_POSITIONS.get(faction), false);
+ game.placeInitialRoad(START_ROADS_POSITIONS.get(faction).first, START_ROADS_POSITIONS.get(faction).second);
+
+ game.switchToNextPlayer();
+ }
+
+ return game;
+ }
+
+ @Test
+ public void TestGameAfterSetupPhase() {
+ SiedlerGame game = gameAfterSetupPhase();
+
+ throwDiceSeveralTimes(game, 5, 5);
+
+ System.out.println("\n\nVerteilung \n\n");
+ for (Config.Faction faction: game.getPlayerFactions()) {
+ HashMap resources = game.getCurrentPlayerResource();
+ System.out.println(faction.toString() + "\n");
+ System.out.println(" BRICK " + resources.get(Config.Resource.BRICK).toString());
+ System.out.println(" GRAIN " + resources.get(Config.Resource.GRAIN));
+ System.out.println(" LUMBER " + resources.get(Config.Resource.LUMBER));
+ System.out.println(" ORE " + resources.get(Config.Resource.ORE));
+ System.out.println(" WOOL " + resources.get(Config.Resource.WOOL));
+
+ game.switchToNextPlayer();
+ }
+ }
+
+ private static SiedlerGame gameAfterSetupPhase() {
+ SiedlerGame game = gameInSetupPhase();
+
+
+
+ return game;
+ }
+
+ @Test
+ @DisplayName("End of Game test")
+ public void TestGameEnd() {
+
+ }
+
+ private static SiedlerGame gameNearEnd() {
+ SiedlerGame game = gameAfterSetupPhase();
+
+ return game;
+
+ }
+
+ private static void throwDiceSeveralTimes(SiedlerGame game, int dice, int amountDiceThrows) {
+ for (int i = 0; i < amountDiceThrows; i++) {
+ System.out.println(game.getCurrentPlayerFaction().toString());
+ game.throwDice(dice);
+ }
+ }
+
+
}
}
\ No newline at end of file