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 dd11d00..1f5bb4e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java @@ -699,6 +699,8 @@ class GameTest { assertTrue(game.addPlayer(new Player("p" + nPlayers + "_" + i))); } + assertEquals(nPlayers, game.getCurrentPlayerNumber()); + assertEquals(nPlayers, game.getPlayers().size()); assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); assertEquals(1, game.getCurrentState().getRound()); assertNotNull(game.getCurrentState().getCurrentPlayer()); @@ -706,6 +708,7 @@ class GameTest { for (int expectedRound = 1; expectedRound < 10; expectedRound++) { assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); assertEquals(expectedRound, game.getCurrentState().getRound()); + assertEquals(nPlayers, game.getCurrentPlayerNumber()); playOneFullRound(game); @@ -721,6 +724,7 @@ class GameTest { "The round should increase after completing round " + expectedRound + "." ); + assertEquals(nPlayers, game.getCurrentPlayerNumber()); assertNotNull(game.getCurrentState().getCurrentPlayer()); } @@ -735,11 +739,8 @@ class GameTest { "The game should end after completing round 10 with " + nPlayers + " players." ); - assertEquals( - 10, - game.getCurrentState().getRound(), - "The game should end at round 10 with " + nPlayers + " players." - ); + assertEquals(10, game.getCurrentState().getRound()); + assertEquals(nPlayers, game.getPlayers().size()); } } @@ -1095,4 +1096,105 @@ class GameTest { ); } + @Test + void skipDrawingShouldRejectWrongPlayer() { + Game game = new Game(3); + + List players = addPlayers(game, 3, "skip_wrong_"); + + completeSlotChoice(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + Player wrongPlayer = players.stream() + .filter(p -> !p.equals(current)) + .findFirst() + .orElseThrow(); + + assertFalse(game.SkipLowerDrawing(wrongPlayer)); + assertFalse(game.SkipUpperDrawing(wrongPlayer)); + } + + @Test + void skipDrawingShouldReturnFalseWhenDrawableCardsExist() { + Game game = new Game(3); + + addPlayers(game, 3, "skip_drawable_"); + + completeSlotChoice(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + assertNotNull(current); + + boolean checkedAtLeastOneSkip = false; + + if (game.getCurrentState().getNLower() > 0 + && firstNonEventIndexOrMinusOne(game.getLowerListTribeCards()) != -1) { + assertFalse(game.SkipLowerDrawing(current)); + checkedAtLeastOneSkip = true; + } + + if (game.getCurrentState().getNUpper() > 0 + && firstNonEventIndexOrMinusOne(game.getUpperListTribeCards()) != -1) { + assertFalse(game.SkipUpperDrawing(current)); + checkedAtLeastOneSkip = true; + } + + assertTrue( + checkedAtLeastOneSkip, + "The test should check at least one skip rejection when drawable cards exist." + ); + } + + @Test + void pickOptionalTribeCardShouldRejectEventCard() { + Game game = new Game(3); + + List players = addPlayers(game, 3, "optional_event_"); + + giveOptionalEffectToAllPlayers(players.get(0), players.get(1), players.get(2)); + + completeSlotChoice(game); + resolveActionsUntilOptionalCardEffect(game); + + Player current = game.getCurrentState().getCurrentPlayer(); + assertNotNull(current); + + int eventIndex = firstEventIndexOrMinusOne(game.getUpperListTribeCards()); + + assertNotEquals( + -1, + eventIndex, + "There should be at least one event card in the upper tribe list to test rejection." + ); + + assertFalse(game.PickOptionalTribeCardByIndex(current, eventIndex)); + } + + @Test + void cardListsShouldReturnCopiesOfLists() { + Game game = new Game(3); + + List upper = game.getUpperListTribeCards(); + int originalSize = upper.size(); + + upper.clear(); + + assertEquals(originalSize, game.getUpperListTribeCards().size()); + } + + @Test + void getPlayersShouldReturnAddedPlayers() { + Game game = new Game(3); + + Player p1 = new Player("gp1"); + Player p2 = new Player("gp2"); + + assertTrue(game.addPlayer(p1)); + assertTrue(game.addPlayer(p2)); + + assertEquals(2, game.getPlayers().size()); + assertTrue(game.getPlayers().contains(p1)); + assertTrue(game.getPlayers().contains(p2)); + } + } \ No newline at end of file