Fix: full game flow test and add: edge case coverage
This commit is contained in:
@@ -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<Player> 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<Player> 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<TribeCard> 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));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user