def test_noargs(self): # if no args are given then the deck should be initialized to 52 cards x = Deck() self.assertEqual(len(x), 52) expected_elements = list(Deck.iter_cards()) self.assertListEqual(x, expected_elements) rlock_type = type(threading.RLock()) self.assertIs(type(x.lock), rlock_type)
def test_values(self): suits_left = set([Card.SPADE, Card.HEART, Card.DIAMOND, Card.CLUB]) x = Deck.iter_cards() while suits_left: card = next(x) self.assertIn(card.suit, suits_left) suits_left.remove(card.suit) expected_suit = card.suit self.assertEqual(card.rank, 13) for rank in (12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1): card = next(x) self.assertEqual(card.rank, rank) self.assertEqual(card.suit, expected_suit) with self.assertRaises(StopIteration): next(x)
def do_test_reset(self, deck): deck.reset() expected = list(Deck.iter_cards()) self.assertListEqual(deck, expected)
def test_type(self): x = Deck.iter_cards() for card in x: self.assertIsInstance(card, Card)
def test_count(self): x = Deck.iter_cards() count = 0 for unused in x: count += 1 self.assertEqual(count, 52)
def test_next(self): x = Deck.iter_cards() result = next(x) # make sure it is actually iterable self.assertIsNotNone(result)