Initial commit
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
import unittest
|
||||
from game import Stash, cards, Card_colors, Card_values,\
|
||||
RuleException, BridzikException, Card, Round
|
||||
|
||||
class StashCase(unittest.TestCase):
|
||||
def test_first_card(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
s = Stash(3)
|
||||
s.add_card(heart_7, 3)
|
||||
self.assertEqual(s.get_first_card(), heart_7)
|
||||
|
||||
heart_8 = Card(Card_colors['HEARTS'], Card_values['C8'])
|
||||
s.add_card(heart_8, 1)
|
||||
self.assertNotEqual(s.get_first_card(), heart_8)
|
||||
self.assertEqual(s.get_first_card(), heart_7)
|
||||
|
||||
def test_add_cart(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
leaves_7 = Card(Card_colors['LEAVES'], Card_values['C7'])
|
||||
leaves_ace = Card(Card_colors['LEAVES'], Card_values['ACE'])
|
||||
bells_10 = Card(Card_colors['BELLS'], Card_values['C10'])
|
||||
acorns_10 = Card(Card_colors['ACORNS'], Card_values['C10'])
|
||||
s = Stash(1)
|
||||
|
||||
s.add_card(heart_7, 1)
|
||||
self.assertEqual(s._cards[1], heart_7)
|
||||
s.add_card(leaves_7, 2)
|
||||
self.assertEqual(s._cards[2], leaves_7)
|
||||
s.add_card(leaves_ace, 3)
|
||||
self.assertEqual(s._cards[3], leaves_ace)
|
||||
s.add_card(bells_10, 0)
|
||||
self.assertEqual(s._cards[0], bells_10)
|
||||
|
||||
self.assertRaises(BridzikException, s.add_card, card=bells_10, player=4)
|
||||
self.assertRaises(BridzikException, s.add_card, card=acorns_10, player=0)
|
||||
|
||||
def test_get_winner(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
leaves_7 = Card(Card_colors['LEAVES'], Card_values['C7'])
|
||||
acorns_ace = Card(Card_colors['ACORNS'], Card_values['ACE'])
|
||||
bells_10 = Card(Card_colors['BELLS'], Card_values['C10'])
|
||||
|
||||
# only heart takes stash
|
||||
c1 = [leaves_7, heart_7, acorns_ace, bells_10]
|
||||
s1 = Stash(0)
|
||||
for i in range(4):
|
||||
s1.add_card(c1[i], i)
|
||||
self.assertEqual(s1.get_winner(), 1)
|
||||
|
||||
# highest color takes the stash
|
||||
leaves_8 = Card(Card_colors['LEAVES'], Card_values['C8'])
|
||||
leaves_lower = Card(Card_colors['LEAVES'], Card_values['LOWER'])
|
||||
c2 = [leaves_8, leaves_7, acorns_ace, leaves_lower]
|
||||
s2 = Stash(0)
|
||||
for i in range(4):
|
||||
s2.add_card(c2[i], i)
|
||||
self.assertEqual(s2.get_winner(), 3)
|
||||
|
||||
# no matching color and no heart in stash
|
||||
c3 = [bells_10, leaves_lower, acorns_ace, leaves_8]
|
||||
s3 = Stash(0)
|
||||
for i in range(4):
|
||||
s3.add_card(c3[i], i)
|
||||
self.assertEqual(s3.get_winner(), 0)
|
||||
|
||||
# highest heart takes the stash
|
||||
heart_upper = Card(Card_colors['HEARTS'], Card_values['UPPER'])
|
||||
c4 = [leaves_8, leaves_lower, heart_7, heart_upper]
|
||||
s4 = Stash(0)
|
||||
for i in range(4):
|
||||
s4.add_card(c4[i], i)
|
||||
self.assertEqual(s4.get_winner(), 3)
|
||||
|
||||
# test exceptions
|
||||
s5 = Stash(3)
|
||||
self.assertRaises(BridzikException, s5.get_winner)
|
||||
|
||||
def test_get_cards(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
leaves_7 = Card(Card_colors['LEAVES'], Card_values['C7'])
|
||||
acorns_ace = Card(Card_colors['ACORNS'], Card_values['ACE'])
|
||||
bells_10 = Card(Card_colors['BELLS'], Card_values['C10'])
|
||||
s = Stash(0)
|
||||
self.assertEqual(s.get_cards(), {})
|
||||
s.add_card(heart_7, 2)
|
||||
self.assertEqual(s.get_cards(), {2: heart_7})
|
||||
s.add_card(leaves_7, 3)
|
||||
self.assertEqual(s.get_cards(), {2: heart_7, 3: leaves_7})
|
||||
s.add_card(acorns_ace, 0)
|
||||
self.assertEqual(s.get_cards(), {2: heart_7, 3: leaves_7, 0: acorns_ace})
|
||||
s.add_card(bells_10, 1)
|
||||
self.assertEqual(s.get_cards(), {2: heart_7, 3: leaves_7, 0: acorns_ace, 1: bells_10})
|
||||
|
||||
def test_is_complete(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
leaves_7 = Card(Card_colors['LEAVES'], Card_values['C7'])
|
||||
acorns_ace = Card(Card_colors['ACORNS'], Card_values['ACE'])
|
||||
bells_10 = Card(Card_colors['BELLS'], Card_values['C10'])
|
||||
s = Stash(0)
|
||||
c = [heart_7, leaves_7, acorns_ace, bells_10]
|
||||
for i in range(4):
|
||||
self.assertFalse(s.is_completed())
|
||||
s.add_card(c[0], i)
|
||||
self.assertTrue(s.is_completed())
|
||||
|
||||
def test_get_active_player(self):
|
||||
heart_7 = Card(Card_colors['HEARTS'], Card_values['C7'])
|
||||
leaves_7 = Card(Card_colors['LEAVES'], Card_values['C7'])
|
||||
leaves_ace = Card(Card_colors['LEAVES'], Card_values['ACE'])
|
||||
bells_10 = Card(Card_colors['BELLS'], Card_values['C10'])
|
||||
s = Stash(1)
|
||||
|
||||
self.assertEqual(s.get_active_player(), 1)
|
||||
s.add_card(heart_7, 1)
|
||||
self.assertEqual(s.get_active_player(), 2)
|
||||
s.add_card(leaves_7, 2)
|
||||
self.assertEqual(s.get_active_player(), 3)
|
||||
s.add_card(leaves_ace, 3)
|
||||
self.assertEqual(s.get_active_player(), 0)
|
||||
s.add_card(bells_10, 0)
|
||||
self.assertRaises(BridzikException, s.get_active_player)
|
||||
|
||||
|
||||
class RoundCase(unittest.TestCase):
|
||||
def test_add_player_guess(self):
|
||||
r = Round(0, 1, cards)
|
||||
|
||||
self.assertRaises(BridzikException, r.add_player_guess, player=2, guess=0)
|
||||
|
||||
r.add_player_guess(1, 1)
|
||||
self.assertEqual(r.guesses[1], 1)
|
||||
self.assertRaises(BridzikException, r.add_player_guess, player=1, guess=0)
|
||||
|
||||
r.add_player_guess(2, 0)
|
||||
self.assertEqual(r.guesses[2], 0)
|
||||
r.add_player_guess(3, 2)
|
||||
self.assertEqual(r.guesses[3], 2)
|
||||
|
||||
self.assertEqual(r.stashes, [])
|
||||
|
||||
self.assertRaises(BridzikException, r.add_player_guess, player=0, guess=5)
|
||||
|
||||
r.add_player_guess(0, 4)
|
||||
self.assertEqual(r.guesses[0], 4)
|
||||
self.assertEqual(r.stashes[0].first_player, 0)
|
||||
|
||||
def test_get_highest_guessing_player(self):
|
||||
r1 = Round(0, 0, cards)
|
||||
r1.add_player_guess(0, 2)
|
||||
r1.add_player_guess(1, 1)
|
||||
r1.add_player_guess(2, 3)
|
||||
self.assertRaises(BridzikException, r1.get_highest_guessing_player)
|
||||
r1.add_player_guess(3, 4)
|
||||
self.assertEqual(r1.get_highest_guessing_player(), 3)
|
||||
|
||||
r2 = Round(0, 2, cards)
|
||||
r2.add_player_guess(2, 5)
|
||||
r2.add_player_guess(3, 0)
|
||||
r2.add_player_guess(0, 1)
|
||||
r2.add_player_guess(1, 1)
|
||||
self.assertEqual(r2.get_highest_guessing_player(), 2)
|
||||
|
||||
def test_get_active_player(self):
|
||||
r = Round(6, 1, cards)
|
||||
self.assertEqual(r.get_active_player(), 1)
|
||||
r.add_player_guess(1, 1)
|
||||
self.assertEqual(r.get_active_player(), 2)
|
||||
r.add_player_guess(2, 0)
|
||||
self.assertEqual(r.get_active_player(), 3)
|
||||
r.add_player_guess(3, 2)
|
||||
self.assertEqual(r.get_active_player(), 0)
|
||||
r.add_player_guess(0, 4)
|
||||
self.assertEqual(r.get_active_player(), 0)
|
||||
|
||||
# TODO dokoncit pre prebiehajuce kolo
|
||||
|
||||
def test_play_card(self):
|
||||
shuffler = lambda list: None
|
||||
c0 = [
|
||||
Card(Card_colors['BELLS'], Card_values['UPPER']),
|
||||
Card(Card_colors['HEARTS'], Card_values['UPPER'])
|
||||
]
|
||||
c1 = [
|
||||
Card(Card_colors['BELLS'], Card_values['C7']),
|
||||
Card(Card_colors['HEARTS'], Card_values['C10'])
|
||||
]
|
||||
c2 = [
|
||||
Card(Card_colors['BELLS'], Card_values['ACE']),
|
||||
Card(Card_colors['BELLS'], Card_values['C8'])
|
||||
]
|
||||
c3 = [
|
||||
Card(Card_colors['LEAVES'], Card_values['C7']),
|
||||
Card(Card_colors['BELLS'], Card_values['LOWER'])
|
||||
]
|
||||
c = ['dummy']*24 + c0 + c1 + c2 + c3
|
||||
r = Round(6, 1, c, shuffler)
|
||||
r.add_player_guess(1, 0)
|
||||
r.add_player_guess(2, 0)
|
||||
r.add_player_guess(3, 1)
|
||||
self.assertRaises(BridzikException, r.play_card, player=0, card=c0[0]) # neukoncene tipovanie
|
||||
r.add_player_guess(0, 2)
|
||||
self.assertRaises(BridzikException, r.play_card, player=1, card=c1[0]) # mimo poradia
|
||||
|
||||
r.play_card(0, c0[0])
|
||||
self.assertRaises(BridzikException, r.play_card, player=1, card=c1[1]) # cerven namiesto farby
|
||||
r.play_card(1, c1[0])
|
||||
r.play_card(2, c2[0])
|
||||
self.assertRaises(BridzikException, r.play_card, player=3, card=c3[0]) # ina farba
|
||||
r.play_card(3, c3[1])
|
||||
|
||||
# print(c2)
|
||||
# print(r.player_cards[2])
|
||||
|
||||
r.play_card(2, c2[1])
|
||||
r.play_card(3, c3[0])
|
||||
self.assertRaises(BridzikException, r.play_card, player=0, card=c0[0]) # uz zahrana karta
|
||||
r.play_card(0, c0[1])
|
||||
r.play_card(1, c1[1])
|
||||
|
||||
self.assertEqual(len(r.stashes), 2)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
Reference in New Issue
Block a user