60 lines
1.6 KiB
Java
60 lines
1.6 KiB
Java
package oving4.card;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
public class CardDeckTest {
|
|
|
|
private CardDeck cardDeck;
|
|
|
|
private static void checkDeck(CardDeck deck, String deckAsString) {
|
|
String[] toStrings = deckAsString.split(",");
|
|
assertEquals(toStrings.length, deck.getCardCount(),
|
|
"CardDeck does not have the correct size");
|
|
|
|
int i = 0;
|
|
|
|
for (String toString : toStrings) {
|
|
Card card = deck.getCard(i);
|
|
String cardString = String.valueOf(card.getSuit()) + card.getFace();
|
|
assertEquals(toString, cardString,
|
|
String.format("Card at position %d was incorrect. CardDeck should have been %s",
|
|
i + 1, toStrings));
|
|
i++;
|
|
}
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
cardDeck = new CardDeck(2);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Check that CardDeck is initialized to S1,S2,H1,H2,D1,D2,C1,C2")
|
|
public void testConstructor() {
|
|
CardDeckTest.checkDeck(cardDeck, "S1,S2,H1,H2,D1,D2,C1,C2");
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Check that CardDeck is shuffled to S1,D1,S2,D2,H1,C1,H2,C2")
|
|
public void testShufflePerfectly() {
|
|
cardDeck.shufflePerfectly();
|
|
CardDeckTest.checkDeck(cardDeck, "S1,D1,S2,D2,H1,C1,H2,C2");
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Check that deal gives out the last three cards")
|
|
public void testDeal() {
|
|
CardHand hand = new CardHand();
|
|
cardDeck.deal(hand, 3);
|
|
CardDeckTest.checkDeck(cardDeck, "S1,S2,H1,H2,D1");
|
|
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
|
cardDeck.deal(null, 1);
|
|
}, "Cannot deal to null");
|
|
}
|
|
}
|