Esempio n. 1
0
class TestCard(unittest.TestCase):
    def setUp(self):
        self.card = Card('HQ')
        self.kinds = ['S', 'C', 'D', 'H']
        self.values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']

    def test_value(self):
        self.assertEqual(self.card.value(), 'Q')

    def test_kind(self):
        self.assertEqual(self.card.kind(), 'H')

    def test_valueName(self):
        self.assertEqual(self.card.valueName(), 'Queen')

    def test_kindName(self):
        self.assertEqual(self.card.kindName(), 'Hearts')

    def test_fullName(self):
        self.assertEqual(self.card.fullName(), 'The Queen of Hearts')

    def test_str(self):
        self.assertEqual(str(self.card), 'HQ')

    def test_invalidKind(self):
        self.assertRaises(ValueError, Card, 'P8')

    def test_invalidValue(self):
        self.assertRaises(ValueError, Card, 'DB')

    def test_generateDeck(self):
        deck = Card.generateDeck()
        self.assertEqual(type(deck), list)
        self.assertEqual(52, len(deck))
        for kind in self.kinds:
            for value in self.values:
                self.assertTrue(Card(kind+value) in deck)

    def test_sorting(self):
        deck = Card.generateDeck()
        shuffle(deck)
        deck = sorted(deck)
        for i in range(0, 52-1):
            if self.kinds.index(deck[i].kind()) == self.kinds.index(deck[i+1].kind()):
                self.assertTrue(self.values.index(deck[i].value()) < self.values.index(deck[i+1].value()))
            else:
                self.assertTrue(self.kinds.index(deck[i].kind()) < self.kinds.index(deck[i+1].kind()))