void test_deck_compareCards() { struct Card *card1 = deck_createCard(DIAMONDS, VALUES[2]); struct Card *card2 = deck_createCard(DIAMONDS, VALUES[2]); cut_assert_equal_int(CARD_NULL, deck_compareCards(card1, NULL, DIAMONDS)); cut_assert_equal_int(CARD_NULL, deck_compareCards(NULL, card2, DIAMONDS)); cut_assert_equal_int(CARD_NULL, deck_compareCards(NULL, NULL, DIAMONDS)); cut_assert_equal_int(0, deck_compareCards(card1, card2, SuitEnd)); card1->value = VALUES[3]; cut_assert_equal_int(1, deck_compareCards(card1, card2, SuitEnd)); cut_assert_equal_int(1, deck_compareCards(card1, card2, DIAMONDS)); cut_assert_equal_int(1, deck_compareCards(card1, card2, CLUBS)); cut_assert_equal_int(2, deck_compareCards(card2, card1, SuitEnd)); cut_assert_equal_int(2, deck_compareCards(card2, card1, DIAMONDS)); cut_assert_equal_int(2, deck_compareCards(card2, card1, CLUBS)); card2->suit = CLUBS; cut_assert_equal_int(1, deck_compareCards(card1, card2, DIAMONDS)); cut_assert_equal_int(1, deck_compareCards(card1, card2, SuitEnd)); cut_assert_equal_int(1, deck_compareCards(card1, card2, SPADES)); cut_assert_equal_int(2, deck_compareCards(card2, card1, DIAMONDS)); cut_assert_equal_int(1, deck_compareCards(card2, card1, SuitEnd)); cut_assert_equal_int(1, deck_compareCards(card2, card1, SPADES)); deck_deleteCard(&card1); deck_deleteCard(&card2); }
void test_hand_checkCard() { struct Hand *hand = hand_createHand(); struct Player *players[3]; struct Card *card; for (int i = 0; i < 3; i++) { players[i] = player_createPlayer("A", i); hand_addPlayer(hand, players[i]); } for (int i = 0; i != SuitEnd; i++ ) for (int j = 0; j < 6; j++) { card = deck_createCard(i, VALUES[j]); player_addCard(players[j % 3], &card); } cut_assert_equal_int(1, hand_checkCard(hand, players[0], 0, NULL)); cut_assert_equal_int(1, hand_checkCard(hand, players[0], 2, NULL)); cut_assert_equal_int(1, hand_checkCard(hand, players[0], 4, NULL)); cut_assert_equal_int(1, hand_checkCard(hand, players[0], 6, NULL)); hand_addCard(hand, players[0], &players[0]->hand[0]); cut_assert_equal_int(0, hand_checkCard(hand, players[1], 2, NULL)); cut_assert_equal_int(1, hand_checkCard(hand, players[1], 0, NULL)); deck_deleteCard(&(players[1]->hand[0])); deck_deleteCard(&(players[1]->hand[1])); cut_assert_equal_int(1, hand_checkCard(hand, players[1], 2, NULL)); hand_addCard(hand, players[1], &players[1]->hand[2]); card = deck_createCard(CLUBS, VALUES[6]); cut_assert_equal_int(0, hand_checkCard(hand, players[2], 2, card)); cut_assert_equal_int(0, hand_checkCard(hand, players[2], 4, card)); cut_assert_equal_int(1, hand_checkCard(hand, players[2], 0, card)); cut_assert_equal_int(1, hand_checkCard(hand, players[2], 1, card)); deck_deleteCard(&(players[2]->hand[0])); deck_deleteCard(&(players[2]->hand[1])); cut_assert_equal_int(1, hand_checkCard(hand, players[2], 2, card)); cut_assert_equal_int(0, hand_checkCard(hand, players[2], 4, card)); deck_deleteCard(&(players[2]->hand[2])); deck_deleteCard(&(players[2]->hand[3])); cut_assert_equal_int(1, hand_checkCard(hand, players[2], 4, card)); cut_assert_equal_int(1, hand_checkCard(hand, players[2], 6, card)); deck_deleteCard(&card); hand_deleteHand(&hand); for (int i = 0; i < 3; i++) { for (int j = 0; j < MAX_CARDS; j++) deck_deleteCard(&players[i]->hand[j]); player_deletePlayer(&players[i]); } }
void test_deck_createCard() { struct Card *card; cut_assert_equal_pointer(NULL, deck_createCard(SuitEnd, VALUES[0])); cut_assert_equal_pointer(NULL, deck_createCard(DIAMONDS, -1)); cut_assert_equal_pointer(NULL, deck_createCard(SuitEnd, -1)); for (int i = 0; i < SuitEnd; i++) for (int j = 0; VALUES[j] != -1; j++) { card = deck_createCard(i, VALUES[j]); cut_assert_equal_int(card->suit, i); cut_assert_equal_int(card->value, VALUES[j]); deck_deleteCard(&card); } }
void test_deck_deleteCard() { struct Card *card = deck_createCard(DIAMONDS, VALUES[0]); cut_assert_equal_int(POINTER_NULL, deck_deleteCard(NULL)); cut_assert_equal_int(FUNCTIOON_NO_ERROR, deck_deleteCard(&card)); cut_assert_equal_pointer(NULL, card); cut_assert_equal_int(CARD_NULL, deck_deleteCard(&card)); }
/** * This function initializes a deck by iterating over all values and suits * available. The deck will be always the same. */ struct Deck *deck_createDeck() { struct Deck *deck = malloc(sizeof(struct Deck)); if (deck == NULL) return NULL; int k = 0; for (enum Suit i = 0; i < SuitEnd; i++) { for (int j = 0; VALUES[j] != -1; j++) { struct Card *card = deck_createCard(i, VALUES[j]); deck->cards[k++] = card; } } return deck; }
void test_round_addTrump() { struct Round *round = round_createRound(MIN_CARDS); struct Card *trump = deck_createCard(DIAMONDS, VALUES[0]); struct Card *trump2 = trump; cut_assert_equal_int(ROUND_NULL, round_addTrump(NULL, &trump)); cut_assert_equal_int(POINTER_NULL, round_addTrump(round, NULL)); cut_assert_operator_int(0, >, round_addTrump(NULL, NULL)); cut_assert_equal_int(FUNCTIOON_NO_ERROR, round_addTrump(round, &trump)); cut_assert_equal_pointer(NULL, trump); cut_assert_equal_pointer(trump2, round->trump); cut_assert_equal_int(FUNCTIOON_NO_ERROR, round_addTrump(round, &trump)); cut_assert_equal_pointer(NULL, trump); cut_assert_equal_pointer(NULL, round->trump); round_deleteRound(&round); }
void test_round_getPlayerWhichWonHand() { struct Round *round = round_createRound(1); struct Player *player; struct Card *cards[6]; cut_assert_equal_pointer(NULL, round_getPlayerWhichWonHand(NULL)); cut_assert_equal_pointer(NULL, round_getPlayerWhichWonHand(round)); round->hand = hand_createHand(); cut_assert_equal_pointer(NULL, round_getPlayerWhichWonHand(round)); for (int i = 0; i < 6; i++) { player = player_createPlayer("A", i); round_addPlayer(round, player); hand_addPlayer(round->hand, player); player = NULL; } cards[0] = deck_createCard(DIAMONDS, 6); cards[1] = deck_createCard(DIAMONDS, 7); cards[2] = deck_createCard(DIAMONDS, 8); cards[3] = deck_createCard(DIAMONDS, 15); cards[4] = deck_createCard(CLUBS, 14); cards[5] = deck_createCard(SPADES, 7); cut_assert_equal_pointer(NULL, round_getPlayerWhichWonHand(round)); for (int i = 0; i < 6; i++) hand_addCard(round->hand, round->hand->players[i], &cards[i]); struct Card *trump = deck_createCard(DIAMONDS, 14); cut_assert_equal_pointer(round->hand->players[3], round_getPlayerWhichWonHand(round)); round->trump = trump; cut_assert_equal_pointer(round->hand->players[3], round_getPlayerWhichWonHand(round)); round->trump->suit = CLUBS; cut_assert_equal_pointer(round->hand->players[4], round_getPlayerWhichWonHand(round)); round->trump->suit = SPADES; cut_assert_equal_pointer(round->hand->players[5], round_getPlayerWhichWonHand(round)); round->trump->suit = HEARTS; cut_assert_equal_pointer(round->hand->players[3], round_getPlayerWhichWonHand(round)); round->hand->cards[0]->suit = HEARTS; cut_assert_equal_pointer(round->hand->players[0], round_getPlayerWhichWonHand(round)); round->trump = NULL; cut_assert_equal_pointer(round->hand->players[0], round_getPlayerWhichWonHand(round)); round->trump = trump; round->trump->suit = DIAMONDS; cut_assert_equal_pointer(round->hand->players[3], round_getPlayerWhichWonHand(round)); round->trump->suit = CLUBS; cut_assert_equal_pointer(round->hand->players[4], round_getPlayerWhichWonHand(round)); round->trump->suit = SPADES; cut_assert_equal_pointer(round->hand->players[5], round_getPlayerWhichWonHand(round)); for (int i = 0; i < 6; i++) player_deletePlayer(&round->players[i]); round_deleteRound(&round); }