-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest-game_circle.py
77 lines (59 loc) · 2.18 KB
/
test-game_circle.py
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import unittest
from unittest import TestCase
from io import StringIO
import sys
from card import Card
from game import Game
class BasicStub(Game):
def invite_players(self):
return ['John', 'Jane']
def start(self):
players_names = self.invite_players()
self.init_and_arrange_first_turn_order(players_names)
class GameCircle(TestCase):
def test_user_lost(self):
class Stub(BasicStub):
def small_circle(self, attackers, attacker_index, defender):
attacker = attackers[attacker_index]
attacker_cards = [attacker.place_card(f"{card.get_suit()}:{card.get_value()}") for card in attacker.get_cards()]
defender.draw_cards(attacker_cards)
return 1
game = Stub()
game.start()
game.deck.deck = []
player_cards = [
[Card(suit='heart', value=6), Card(suit='heart', value=7)],
[Card(suit='diamond', value=6), Card(suit='diamond', value=7), Card(suit='diamond', value=8)]
]
for i, player in enumerate(game.players):
player.cards = player_cards[i]
captured_output = StringIO()
sys.stdout = captured_output
game.game_circle()
actual_output = captured_output.getvalue()
sys.stdout = sys.__stdout__
self.assertEqual(actual_output, f"Game over! {game.players[1].get_name().title()} you lost\n")
def test_draw(self):
class Stub(BasicStub):
def small_circle(self, attackers, attacker_index, defender):
for attacker in attackers:
attacker.cards = []
defender.cards = []
return 0
game = Stub()
game.start()
game.deck.deck = []
player_cards = [
[Card(suit='heart', value=6), Card(suit='diamond', value=7)],
[Card(suit='heart', value=7), Card(suit='diamond', value=8)]
]
for i, player in enumerate(game.players):
player.cards = player_cards[i]
captured_output = StringIO()
sys.stdout = captured_output
game.game_circle()
actual_output = captured_output.getvalue()
sys.stdout = sys.__stdout__
self.assertEqual(actual_output, "Game over! Draw!\n")
if __name__ == '__main__':
unittest.main()