|
1 | 1 | # coding=utf-8 |
2 | 2 |
|
3 | | -from rummy.deck.card import Card |
4 | | -from rummy.game.score import Score |
5 | | -from rummy.player.ai import AI |
6 | | -from rummy.player.human import Human |
7 | | -from rummy.ui.view import View |
8 | | - |
9 | 3 |
|
10 | 4 | class TestView: |
11 | | - |
12 | | - def test_render(self, mocker): |
13 | | - mocker.patch('builtins.print') |
14 | | - View.render("Test print", end="\t\n") |
15 | | - print.assert_called_with("Test print", end="\t\n") |
16 | | - |
17 | | - def test_render_template(self, mocker): |
18 | | - expected = '\x1b[0;31mA Player has knocked, this is your last turn!!!\x1b[0m\n' |
19 | | - output_message = View.prepare_template('/knocked.txt') |
20 | | - assert output_message == expected |
21 | | - |
22 | | - def test_render_turn_start(self, mocker): |
23 | | - player = Human(1) |
24 | | - player.round = mocker.MagicMock() |
25 | | - player.round.turn = 1 |
26 | | - player.round.current_player = 0 |
27 | | - player.round.deck.show_discard.return_value = 'Empty' |
28 | | - player.hand.hand = [Card(x, y) for x, y in [("8", "S"), ("9", "S"), ("K", "S"), ("4", "H"), |
29 | | - ("8", "D"), ("J", "C"), ("K", "C")]] |
30 | | - expected = "\x1b[0;34m#############################\x1b[0m\n" \ |
31 | | - "Turn 1\n" \ |
32 | | - "\x1b[0;37m-----------------------------\x1b[0m\n" \ |
33 | | - "Player 1's turn\n" \ |
34 | | - "\x1b[0;37m.............................\x1b[0m\n" \ |
35 | | - "Hand Score: 66\n" \ |
36 | | - "8♠, 9♠, K♠, 4\x1b[0;31m♥\x1b[0m, 8\x1b[0;31m♦\x1b[0m, J♣, K♣\n" \ |
37 | | - "Discard Pile: Empty\n" \ |
38 | | - "\x1b[0;37m.............................\x1b[0m\n" |
39 | | - output_message = View.template_turn_start(player) |
40 | | - assert output_message == expected |
41 | | - |
42 | | - def test_render_player_turn_end(self): |
43 | | - player = Human(1) |
44 | | - player.hand.hand = [Card(x, y) for x, y in [("8", "S"), ("9", "S"), ("J", "S"), ("K", "S"), |
45 | | - ("4", "H"), ("8", "D"), ("J", "C"), ("K", "C")]] |
46 | | - expected = "\x1b[0;37m.............................\x1b[0m\n" \ |
47 | | - "8♠, 9♠, J♠, K♠, 4\x1b[0;31m♥\x1b[0m, 8\x1b[0;31m♦\x1b[0m, J♣, K♣\n" \ |
48 | | - "\x1b[0;32m1\x1b[0m, \x1b[0;32m2\x1b[0m, \x1b[0;32m3\x1b[0m, \x1b[0;32m4\x1b[0m, " \ |
49 | | - "\x1b[0;32m5\x1b[0m, \x1b[0;32m6\x1b[0m, \x1b[0;32m7\x1b[0m, \x1b[0;32m8\x1b[0m\n" \ |
50 | | - "\x1b[0;37m.............................\x1b[0m\n" |
51 | | - output_message = View.template_player_turn_end(player) |
52 | | - assert output_message == expected |
53 | | - |
54 | | - def test_render_ai_thought(self, mocker): |
55 | | - ai = AI(2, False) |
56 | | - expected = "Drawing from deck\nPlayer is thinking...\n" |
57 | | - output_message = View.template_ai_thought(ai, 'Drawing from deck') |
58 | | - assert output_message == expected |
59 | | - ai.ai_only = True |
60 | | - output_message = View.template_ai_thought(ai, 'Drawing from deck') |
61 | | - assert output_message == expected |
62 | | - |
63 | | - def test_render_ai_turn_start(self, mocker): |
64 | | - ai = AI(2, False) |
65 | | - ai.round = mocker.MagicMock() |
66 | | - ai.round.turn = 2 |
67 | | - ai.round.current_player = 1 |
68 | | - ai.round.deck.show_discard.return_value = str(Card("8", "S")) |
69 | | - expected = "\x1b[0;34m#############################\x1b[0m\n" \ |
70 | | - "Turn 2\n" \ |
71 | | - "\x1b[0;37m-----------------------------\x1b[0m\n" \ |
72 | | - "Player 2's turn\n" \ |
73 | | - "\x1b[0;37m.............................\x1b[0m\n" \ |
74 | | - "Discard Pile: 8♠\n" |
75 | | - output_message = View.template_ai_turn_start(ai) |
76 | | - assert output_message == expected |
77 | | - |
78 | | - def test_render_ai_turn_end(self): |
79 | | - ai = AI(2, False) |
80 | | - ai.hand.hand = [Card(x, y) for x, y in [("A", "H"), ("A", "S"), ("A", "C"), ("A", "D")]] |
81 | | - expected = "\x1b[0;37m.............................\x1b[0m\n" \ |
82 | | - "A♠, A\x1b[0;31m♥\x1b[0m, A\x1b[0;31m♦\x1b[0m, A♣\n" \ |
83 | | - "\x1b[0;37m.............................\x1b[0m\n" |
84 | | - output_message = View.template_ai_turn_end(ai) |
85 | | - assert output_message == expected |
86 | | - |
87 | | - def test_template_end_of_round_scores(self, mocker): |
88 | | - player = Human(1) |
89 | | - player.hand.hand = [Card(x, y) for x, y in [("A", "S"), ("2", "S"), ("3", "S"), ("4", "S"), |
90 | | - ("A", "C"), ("2", "C"), ("3", "C")]] |
91 | | - expected = "Player 1\n" \ |
92 | | - "Hand Score: 0\n" \ |
93 | | - "A♠, 2♠, 3♠, 4♠, A♣, 2♣, 3♣\n" \ |
94 | | - "\x1b[0;37m.............................\x1b[0m\n" |
95 | | - output_message = View.template_end_of_round_scores(player) |
96 | | - assert output_message == expected |
97 | | - |
98 | | - def test_template_this_round_score(self): |
99 | | - player = Human(1) |
100 | | - player.hand.hand = [Card(x, y) for x, y in [("A", "S"), ("2", "S"), ("3", "S"), ("4", "S"), |
101 | | - ("A", "C"), ("2", "C"), ("3", "C")]] |
102 | | - score = Score([player]) |
103 | | - expected = "\x1b[0;34m#############################\x1b[0m\n" \ |
104 | | - "\n" \ |
105 | | - "Round Scores\n" \ |
106 | | - "\x1b[0;37m-----------------------------\x1b[0m\n" \ |
107 | | - "Player 1\n" \ |
108 | | - "Hand Score: 0\n" \ |
109 | | - "A♠, 2♠, 3♠, 4♠, A♣, 2♣, 3♣\n" \ |
110 | | - "\x1b[0;37m.............................\x1b[0m\n" \ |
111 | | - "\n" \ |
112 | | - "Game Scores\n" \ |
113 | | - "\x1b[0;37m-----------------------------\x1b[0m\n" \ |
114 | | - "Player 1: 0\n" \ |
115 | | - "\n" |
116 | | - output_message = View.template_this_round_score(score.get_end_of_round_scores(), |
117 | | - score.get_current_game_scores()) |
118 | | - assert output_message == expected |
| 5 | + pass |
0 commit comments