def testDeckCreateShuffled(self): """ Create a default deck, shuffle, and validate the cards were shuffled, the number of cards and point total. """ deck = Deck.initialize_deck() original_cards = [c for c in deck] self.assertEqual(39, len(deck)) self.assertEqual(624, sum([card.point_value for card in deck])) deck.shuffle() shuffled_cards = [c for c in deck] self.assertEqual(39, len(deck)) self.assertEqual(624, sum([card.point_value for card in deck])) self.assertNotEquals(original_cards, shuffled_cards) hand = Hand() for _ in range(len(deck)): hand.add_card(deck.deal_card()) self.assertEqual(0, len(deck)) self.assertEqual(624, hand.score) self.assertEquals(shuffled_cards, hand.cards)
def testHandRed(self): hand = Hand("Player Red") hand.add_card(Card(RED, 4)) hand.add_card(Card(RED, 5)) hand.add_card(Card(RED, 6)) self.assertEqual(45, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Red", cards=3, score=45)') self.assertEqual(repr(hand), 'Hand(name="Player Red", cards=3, score=45)')
def testHandGreen(self): hand = Hand("Player Green") hand.add_card(Card(GREEN, 4)) hand.add_card(Card(GREEN, 5)) hand.add_card(Card(GREEN, 6)) self.assertEqual(15, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Green", cards=3, score=15)') self.assertEqual(repr(hand), 'Hand(name="Player Green", cards=3, score=15)')
def testHandYellow(self): hand = Hand("Player Yellow") hand.add_card(Card(YELLOW, 4)) hand.add_card(Card(YELLOW, 5)) hand.add_card(Card(YELLOW, 6)) self.assertEqual(30, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Yellow", cards=3, score=30)') self.assertEqual(repr(hand), 'Hand(name="Player Yellow", cards=3, score=30)')
def testDeckCreateUnshuffled(self): """ Create a default deck, validate the number of cards and point total. """ deck = Deck.initialize_deck() self.assertEqual(39, len(deck)) self.assertEqual(624, sum([card.point_value for card in deck])) hand = Hand() for _ in range(len(deck)): hand.add_card(deck.deal_card()) self.assertEqual(0, len(deck)) self.assertEqual(624, hand.score)
def testDeckEmpty(self): """ Create a new deck, deal all cards, verify exception raised when deck is empty. """ deck = Deck.initialize_deck() self.assertEqual(39, len(deck)) self.assertEqual(624, sum([card.point_value for card in deck])) hand = Hand() for _ in range(len(deck)): hand.add_card(deck.deal_card()) self.assertEqual(0, len(deck)) with self.assertRaises(ValueError): card = deck.deal_card()
def testDeckOneHandMockDeal1(self): """ Create a new deck, shuffle, deal all cards, validate number of cards and point total. """ deck = Deck.initialize_deck() deck.shuffler = self.shuffler deck.shuffle() self.assertEqual(39, len(deck)) self.assertEqual(624, sum([card.point_value for card in deck])) hand = Hand() for _ in range(len(deck)): hand.add_card(deck.deal_card()) self.assertEqual(0, len(deck)) self.assertEqual(624, hand.score)
def testDeckOneHandMockDeal2(self): """ Create a new deck, shuffle, deal 5 cards to a single hand. Validate number of cards and point total. Deal 2 more cards from same deck into same hand. Validate new number of cards and point total. Deal 15 more cards from same deck into same hand. Validate new number of cards and point total. """ deck = Deck.initialize_deck() deck.shuffler = self.shuffler deck.shuffle() hand = Hand() for _ in range(5): hand.add_card(deck.deal_card()) self.assertEqual(34, len(deck)) self.assertEqual(5, len(hand)) self.assertEqual(64, hand.score) for _ in range(2): hand.add_card(deck.deal_card()) self.assertEqual(32, len(deck)) self.assertEqual(7, len(hand)) self.assertEqual(99, hand.score) for _ in range(15): hand.add_card(deck.deal_card()) self.assertEqual(17, len(deck)) self.assertEqual(22, len(hand)) self.assertEqual(391, hand.score)
def testDeckTwoHandsMockDeal4(self): """ Shuffle a clean deck twice, deal 2 hands, validate number of cards, score, and winner. Tests run with a mocked random number generator """ deck = Deck.initialize_deck(num_cards=20, colors=[RED]) deck.shuffler = Shuffler(0.3972) deck.shuffle(2) self.assertEqual(20, len(deck)) hand1 = Hand() hand2 = Hand() hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) self.assertEqual(3, len(hand1)) self.assertEqual(3, len(hand2)) self.assertEqual(111, hand1.score) self.assertEqual(135, hand2.score) self.assertFalse(hand1.is_winner(hand2)) self.assertTrue(hand2.is_winner(hand1)) n, winners = Hand.determine_winner([hand1, hand2]) self.assertEqual(n, len(winners)) self.assertEqual(1, len(winners)) self.assertEqual(135, winners[0].score)
def testDeckTwoHandsMockDeal1(self): """ Shuffle a clean deck twice, deal 3 hands, validate number of cards, score, and winner. Tests run with a mocked random number generator """ deck = Deck.initialize_deck() deck.shuffler = self.shuffler deck.shuffle() ## regular deck self.assertEqual(39, len(deck)) ## Deal 2 hands, 3 cards each hand1 = Hand("Player 1") hand2 = Hand("Player 2") hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) hand1.add_card(deck.deal_card()) hand2.add_card(deck.deal_card()) self.assertEqual(33, len(deck)) self.assertEqual(3, len(hand1)) self.assertEqual(3, len(hand2)) self.assertEqual(27, hand1.score) self.assertEqual(57, hand2.score) n, hands = Hand.determine_winner([hand1, hand2]) self.assertEqual(1, n) self.assertEqual(1, len(hands)) self.assertEqual(57, hands[0].score)