-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_Decks.py
More file actions
60 lines (51 loc) · 1.88 KB
/
test_Decks.py
File metadata and controls
60 lines (51 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Unit tests for Deck classes
#
# John Conery
# CIS 211 Project 3
# Spring 2014
#
import unittest
from Deck import *
class DeckTest(unittest.TestCase):
def test_04_deck(self):
d = Deck()
self.assertEqual(52, len(d), "deck doesn't have 52 cards")
suits = dict.fromkeys(range(4),0)
ranks = dict.fromkeys(range(13),0)
for x in d:
suits[x.suit()] += 1
ranks[x.rank()] += 1
self.assertEqual(list(suits.values()), [13]*4, "didn't find 13 cards in each suit")
self.assertEqual(list(ranks.values()), [4]*13, "didn't find 4 of each kind of card")
def test_05_shuffle(self):
d1 = Deck()
d2 = Deck()
d1.shuffle()
self.assertFalse(same_cards(d1,d2), "deck wasn't shuffled")
d1.sort()
self.assertTrue(same_cards(d1,d2), "deck wasn't sorted")
def test_06_hands(self):
d = Deck()
h = d.deal(5)
self.assertEqual(5, len(h), "hand doesn't have 5 cards")
self.assertEqual(47, len(d), "hand wasn't removed from deck")
d.restore(h)
self.assertEqual(52, len(d), "had wasn't put back in deck")
d.sort()
self.assertTrue(same_cards(d, Deck()), "restored deck incomplete")
def test_07_pinochle(self):
d = PinochleDeck()
suits = dict.fromkeys(range(4),0)
ranks = dict.fromkeys(range(7,13),0)
for x in d:
suits[x.suit()] += 1
ranks[x.rank()] += 1
self.assertEqual([12]*4, list(suits.values()), "didn't find 12 cards in each suit")
self.assertEqual([8]*6, list(ranks.values()), "didn't find 8 of each kind of card")
def same_cards(d1,d2):
if len(d1) != len(d2):
return False
for i in range(len(d1)):
if d1[i].rank() != d2[i].rank() or d1[i].suit() != d2[i].suit():
return False
return True