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)));
|
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(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage());
|
||||||
assertEquals(1, game.getCurrentState().getRound());
|
assertEquals(1, game.getCurrentState().getRound());
|
||||||
assertNotNull(game.getCurrentState().getCurrentPlayer());
|
assertNotNull(game.getCurrentState().getCurrentPlayer());
|
||||||
@@ -706,6 +708,7 @@ class GameTest {
|
|||||||
for (int expectedRound = 1; expectedRound < 10; expectedRound++) {
|
for (int expectedRound = 1; expectedRound < 10; expectedRound++) {
|
||||||
assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage());
|
assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage());
|
||||||
assertEquals(expectedRound, game.getCurrentState().getRound());
|
assertEquals(expectedRound, game.getCurrentState().getRound());
|
||||||
|
assertEquals(nPlayers, game.getCurrentPlayerNumber());
|
||||||
|
|
||||||
playOneFullRound(game);
|
playOneFullRound(game);
|
||||||
|
|
||||||
@@ -721,6 +724,7 @@ class GameTest {
|
|||||||
"The round should increase after completing round " + expectedRound + "."
|
"The round should increase after completing round " + expectedRound + "."
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assertEquals(nPlayers, game.getCurrentPlayerNumber());
|
||||||
assertNotNull(game.getCurrentState().getCurrentPlayer());
|
assertNotNull(game.getCurrentState().getCurrentPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -735,11 +739,8 @@ class GameTest {
|
|||||||
"The game should end after completing round 10 with " + nPlayers + " players."
|
"The game should end after completing round 10 with " + nPlayers + " players."
|
||||||
);
|
);
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(10, game.getCurrentState().getRound());
|
||||||
10,
|
assertEquals(nPlayers, game.getPlayers().size());
|
||||||
game.getCurrentState().getRound(),
|
|
||||||
"The game should end at round 10 with " + nPlayers + " players."
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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