Files
oops/src/test/java/oving4/card/CardHandTest.java
Andreas Omholt Olsen 7dd68c1ed8 Add oving 4
2026-02-02 10:57:55 +01:00

76 lines
1.9 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 CardHandTest {
private CardHand cardHand;
private static void checkHand(CardHand hand, String deckAsString) {
String[] toStrings = deckAsString.split(",");
assertEquals(toStrings.length, hand.getCardCount(),
"The number of cards in the hand was incorrect");
int i = 0;
for (String toString : toStrings) {
Card card = hand.getCard(i);
String cardString = String.valueOf(card.getSuit()) + card.getFace();
assertEquals(toString, cardString, String.format(
"The card at position %d was incorrect. The hand should have contained %s",
i + 1, toStrings));
i++;
}
}
@BeforeEach
public void setUp() {
cardHand = new CardHand();
}
@Test
@DisplayName("Check that CardHand is initialized to empty")
public void testConstructor() {
CardDeck deck = new CardDeck(2);
deck.deal(cardHand, 3);
CardHandTest.checkHand(cardHand, "C2,C1,D2");
}
@Test
@DisplayName("Test the addCard method")
public void testAddCard() {
CardDeck deck = new CardDeck(2);
deck.deal(cardHand, 3);
CardHandTest.checkHand(cardHand, "C2,C1,D2");
cardHand.addCard(new Card('H', 1));
CardHandTest.checkHand(cardHand, "C2,C1,D2,H1");
assertThrows(IllegalArgumentException.class, () -> {
cardHand.addCard(null);
}, "Cannot add null card");
}
@Test
@DisplayName("Test the deal and play methods")
public void testDealPlay() {
CardDeck deck = new CardDeck(2);
deck.deal(cardHand, 3);
CardHandTest.checkHand(cardHand, "C2,C1,D2");
cardHand.play(1);
CardHandTest.checkHand(cardHand, "C2,D2");
cardHand.play(0);
CardHandTest.checkHand(cardHand, "D2");
cardHand.play(0);
assertEquals(cardHand.getCardCount(), 0);
}
}