From d62283ca8d1181a3a57aad76c08f890ee879f5e7 Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Wed, 29 Apr 2026 16:48:46 +0200 Subject: [PATCH] Fix: GameTest --- .../it/polimi/ingsw/gc14/Model/GameTest.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java index 9346b9b..8bb92ca 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java @@ -72,32 +72,28 @@ class GameTest { Player current = game.getCurrentState().getCurrentPlayer(); assertNotNull(current); - if (game.getCurrentState().getNLower() > 0) { + if (game.getCurrentState().getNLower() > 0 && hasDrawableLower(game)) { int index = firstNonEventIndexOrMinusOne(game.getLowerListTribeCards()); if (index != -1) { assertTrue(game.DrawLowerTribeCardByIndex(current, index)); - } else if (!game.getLowerListBuilding().isEmpty()) { + } else { current.addFood(100); assertTrue(game.DrawLowerBuildingCardByIndex(current, 0)); - } else { - fail("No valid lower card available."); } - } else if (game.getCurrentState().getNUpper() > 0) { + } else if (game.getCurrentState().getNUpper() > 0 && hasDrawableUpper(game)) { int index = firstNonEventIndexOrMinusOne(game.getUpperListTribeCards()); if (index != -1) { assertTrue(game.DrawUpperTribeCardByIndex(current, index)); - } else if (!game.getUpperListBuilding().isEmpty()) { + } else { current.addFood(100); assertTrue(game.DrawUpperBuildingCardByIndex(current, 0)); - } else { - fail("No valid upper card available."); } } else { - fail("Current player has no remaining draws."); + fail("Current player has no drawable cards, although the game is still resolving actions."); } } @@ -222,6 +218,16 @@ class GameTest { resolveOptionalPhaseIfPresent(game); } + private boolean hasDrawableLower(Game game) { + return firstNonEventIndexOrMinusOne(game.getLowerListTribeCards()) != -1 + || !game.getLowerListBuilding().isEmpty(); + } + + private boolean hasDrawableUpper(Game game) { + return firstNonEventIndexOrMinusOne(game.getUpperListTribeCards()) != -1 + || !game.getUpperListBuilding().isEmpty(); + } + @Test void constructorShouldInitializeGameCorrectly() { int nPlayers = 3; @@ -954,8 +960,8 @@ class GameTest { } @Test - void fullGameShouldEndAfterTenRoundsForTwoThreeAndFourPlayersUsingOnlyPublicGameFlow() { - for (int nPlayers : new int[]{2, 3, 4}) { + void fullGameShouldEndAfterTenRoundsForTwoThreeFourAndFivePlayersUsingOnlyPublicGameFlow() { + for (int nPlayers : new int[]{2, 3, 4, 5}) { Game game = new Game(nPlayers); for (int i = 1; i <= nPlayers; i++) {