Every card is unique.

This commit is contained in:
aminecmi 2021-10-30 16:45:25 +02:00
parent 1e29bd41e9
commit 1a20205bfc
2 changed files with 14 additions and 3 deletions

View File

@ -48,6 +48,7 @@ public class GameService {
}
public void createDeck() {
deck = new Stack<>();
Arrays.stream(Shape.values()).forEach(shape -> {
Arrays.stream(Number.values()).forEach(number -> {
deck.push(new Card(shape, number));
@ -72,6 +73,7 @@ public class GameService {
for (int i = 0; i < this.cardHandNumber; i++) {
hand.add(this.deck.pop());
}
logger.info("Hand : " + hand);
return hand;
} else {
throw new HttpClientErrorException(HttpStatus.TOO_MANY_REQUESTS);

View File

@ -11,6 +11,7 @@ import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.web.client.HttpClientErrorException;
import java.util.List;
import java.util.stream.Collectors;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@ -47,15 +48,23 @@ class CartesApplicationTests {
@Test()
void testExceptionTooManyPlayers() {
int maxNumberOfPlayers = (int) Math.floor(DECK_SIZE / CARDS_PER_HAND);
for (int i = 0; i < maxNumberOfPlayers; i++) {
for (int i = 0; i < getMaxNumberOfPlayers(); i++) {
gameService.cardHand();
}
Assertions.assertThrows(HttpClientErrorException.class, () -> gameService.cardHand());
}
private int getMaxNumberOfPlayers() {
int maxNumberOfPlayers = (int) Math.floor(DECK_SIZE / CARDS_PER_HAND);
return maxNumberOfPlayers;
}
@Test
void contextLoads() {
void isAllUniqueCards() {
for (int i = 0; i < getMaxNumberOfPlayers(); i++) {
List<Card> hand = gameService.cardHand().stream().distinct().collect(Collectors.toList());
assertThat(hand.size()).isEqualTo(CARDS_PER_HAND);
}
}
}