diff --git a/src/ch/zhaw/catan/SiedlerGame.java b/src/ch/zhaw/catan/SiedlerGame.java index fcf3534..eff8ac0 100644 --- a/src/ch/zhaw/catan/SiedlerGame.java +++ b/src/ch/zhaw/catan/SiedlerGame.java @@ -32,6 +32,9 @@ public class SiedlerGame { * or players is not between two and four */ public SiedlerGame(int winPoints, int numberOfPlayers) { + if (winPoints < 3 || numberOfPlayers < Config.MIN_NUMBER_OF_PLAYERS || numberOfPlayers > 4) { + throw new IllegalArgumentException(); + } bank = new Bank(); board = new SiedlerBoard(); board.createFixGameField(); diff --git a/test/ch/zhaw/catan/SiedlerGameTest.java b/test/ch/zhaw/catan/SiedlerGameTest.java index 29fa1e7..744e1e1 100644 --- a/test/ch/zhaw/catan/SiedlerGameTest.java +++ b/test/ch/zhaw/catan/SiedlerGameTest.java @@ -1,39 +1,35 @@ package ch.zhaw.catan; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import org.junit.jupiter.api.*; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import java.awt.*; -import java.util.*; +import java.awt.Point; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; - -/*** - * TODO Write your own tests in this class. - * - * Note: Have a look at {@link ch.zhaw.catan.games.ThreePlayerStandard}. It can be used - * to get several different game states. - * - */ +import static org.junit.jupiter.api.Assertions.assertThrows; /** * @class SiedlerGameTest - * + *
* contains all of the test cases for SiedlerGame class. * The Test cases are categorized into - * - Positive TestCases - * Tests the methods of SiedlerGame with the intended values - * - * - Negative TestCases - * Tests the methods of SiedlerGame with values, that results to errors and failure - * - * - SystemTestCases - * Tests the coordination of all methods and simulates a game with all moves programmed - * Checks if the methods are being executed and the values are set correctly + * - Positive TestCases + * Tests the methods of SiedlerGame with the intended values + *
+ * - Negative TestCases + * Tests the methods of SiedlerGame with values, that results to errors and failure + *
+ * - SystemTestCases + * Tests the coordination of all methods and simulates a game with programmed moves + * Checks if the methods are being executed and the values are set correctly */ public class SiedlerGameTest { @@ -42,20 +38,20 @@ public class SiedlerGameTest { /** * Property START_SETTLEMENT_POSITIONS - * + *
* Lists all positions of Settlement for every faction in the initialization phase.
* Each faction is assigned to a list of specific settlements, which represents as a list of points
*/
private final static Map
* Lists all endpoints of roads for every faction in the initialization phase.
* Each faction is assigned to a specific Road, which represents as a tuple of 2 points
*/
@@ -87,7 +83,7 @@ public class SiedlerGameTest {
public void TestGameInitializationWithAllPlayercounts(int playerAmount) {
SiedlerGame game = new SiedlerGame(DEFAULT_WINPOINTS, playerAmount);
- for (Config.Faction faction: game.getPlayerFactions()) {
+ for (Config.Faction faction : game.getPlayerFactions()) {
HashMap
+ * Method does not halve a resource, when the amount is below 7.
+ * Player has gotten 8 wool resources and throws a 7 with the dice
+ *
+ * expected: throwDice with a 7 will halve wool resource, the amount should be 4
*/
@Test
- @DisplayName("Test")
- public void TestHandle7() {
- SiedlerGame game = startGame();
- //todo
+ @DisplayName("Test Throw Dice with value 7, expected half the resources")
+ public void TestThrowDiceWith7() {
+ SiedlerGame game = gameAfterSetupPhase();
+
+ throwDiceSeveralTimes(game, 8, 1);
+
+ throwDiceSeveralTimes(game, 7, 1);
+ Assertions.assertEquals(2, game.getCurrentPlayerResource().get(Config.Resource.WOOL));
+
+ throwDiceSeveralTimes(game, 8, 1);
+ throwDiceSeveralTimes(game, 8, 1);
+ throwDiceSeveralTimes(game, 8, 1);
+
+ Assertions.assertEquals(8, game.getCurrentPlayerResource().get(Config.Resource.WOOL));
+
+ throwDiceSeveralTimes(game, 7, 1);
+ Assertions.assertEquals(4, game.getCurrentPlayerResource().get(Config.Resource.WOOL));
}
}
/**
* @Class NegAtiveTestcases
- *
+ *
* contains all negative test cases
*/
@Nested
@@ -142,7 +157,6 @@ public class SiedlerGameTest {
@Test
@DisplayName("Starting Siedler game with one player, expects fail")
public void startSiedlerGameWithLowerThanMinimumWinPoints() {
-
Exception exc = assertThrows(IllegalArgumentException.class, () -> {
SiedlerGame game = new SiedlerGame(1, 4);
});
@@ -154,7 +168,7 @@ public class SiedlerGameTest {
/**
* This testcase will test, if the methods placeInitialRoad and placeInitialSettlement are overwritting
* already occupied positions if the same faction or any other faction are calling the method with the same positions
- *
+ *
* Expected: Method placeInitialRoad placeInitialSettlement should return false, independent of the current faction playing
*/
@Test
@@ -179,23 +193,11 @@ public class SiedlerGameTest {
Assertions.assertFalse(game.placeInitialSettlement(settlementPoint, false));
}
-
- /**
- * This testcase will test, if the methods buildRoad, buildCity buildSettlement are overwritting
- * already occupied positions if the same faction or any other faction are calling the method with the same positions
- *
- * Expected: Method placeInitialRoad placeInitialSettlement should return false, independent of the current faction playing
- */
- @Test
- @DisplayName("Test buildRoad, buildCity and buildSettlement with already occupied positions")
- public void testBuildStructuresOnOccupiedFields() {
-
- }
}
/**
* @Class SystemTestCases
- *
+ *
* This class simulates a running game and tests multiple sequences of this game.
*/
@Nested
@@ -229,50 +231,12 @@ public class SiedlerGameTest {
public void TestGameAfterSetupPhase() {
SiedlerGame game = gameAfterSetupPhase();
- System.out.println(game.getBoard().toString());
-
- throwDiceSeveralTimes(game, 5, 5);
- throwDiceSeveralTimes(game, 5, 5);
- throwDiceSeveralTimes(game, 5, 5);
- throwDiceSeveralTimes(game, 5, 5);
- throwDiceSeveralTimes(game, 5, 5);
-
- //game.switchToNextPlayer();
-
- //throwDiceSeveralTimes(game, 6, 5);
- //throwDiceSeveralTimes(game, 6, 5);
- //throwDiceSeveralTimes(game, 6, 5);
- //throwDiceSeveralTimes(game, 6, 5);
- //throwDiceSeveralTimes(game, 6, 5);
-
- soutDistribution(game);
- }
-
-
- /**
- * tests, if a player wins when reached the amount of points.
- */
- @Test
- @DisplayName("End of Game test")
- public void TestGameEnd() {
+ throwDiceSeveralTimes(game, 8, 1);
+ Assertions.assertEquals(2, game.getCurrentPlayerResourceStock(Config.Resource.WOOL));
}
- //TEMPORARY METHOD, WILL BE REMOVED SOON
- private static void soutDistribution(SiedlerGame game) {
- System.out.println("\n\nVerteilung \n\n");
- for (int i = 0 ; i < game.getPlayerFactions().size(); i++) {
- HashMap