class TestDeck(TestCase): def setUp(self): self.card1 = Card('Card A', 'black') self.card2 = Card('Card B', 'blue') self.card3 = Card('Card C', 'red') self.deck = Deck('discard') def tearDown(self): self.card1 = None self.card2 = None self.deck = None def test__len__(self): self.deck.add(self.card1) self.assertEqual(len(self.deck), 1) self.deck.add(self.card2) self.assertEqual(len(self.deck), 2) def test__iter__(self): self.deck.add(self.card1) self.deck.add(self.card2) i = 0 for card in self.deck: i += 1 self.assertEqual(i, 2) def test_instantiation_parameters(self): with self.assertRaises(ValueError): self.deck = Deck(0) def test_adding_card_to_deck(self): self.deck.add(self.card1) self.assertIn(self.card1, self.deck) def test_removing_card_from_a_deck(self): with self.assertRaises(ValueError): # Check removal from empty deck self.deck.remove(self.card1) self.deck.add(self.card1) self.deck.remove(self.card1) self.assertNotIn(self.card1, self.deck) def test_moving_card_to_a_deck(self): deck2 = Deck('exclude') self.deck.add(self.card1) self.deck.move(self.card1, deck2) self.assertNotIn(self.card1, self.deck) self.assertIn(self.card1, deck2) def test_clear_a_deck_and_check_if_empty(self): self.deck.add(self.card1) self.deck.clear() self.assertTrue(self.deck.is_empty()) def test_deck_has_no_parent(self): self.assertFalse(self.deck.has_parent()) def test_get_sorted_deck(self): self.deck.add(self.card2) self.deck.add(self.card1) self.deck.add(self.card3) self.assertEqual(self.deck.cards[0], self.card2) sorted = self.deck.sorted() self.assertEqual(sorted[0], self.card1) self.assertEqual(sorted[1], self.card2) self.assertEqual(sorted[2], self.card3)