-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_program.py
186 lines (150 loc) · 5.85 KB
/
test_program.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#!/usr/bin/env python3
from Game import Game
from Player import Player
from Robot import Robot
import unittest
class GameTest(unittest.TestCase):
def test_create_grid(self):
game = Game('X', 'O')
grid = game.create_grid()
self.assertEqual(len(grid), 8)
def test_initialize_grid_one(self):
game = Game('X', 'O')
self.assertEqual(game.grid[3][3], 'X')
self.assertEqual(game.grid[4][4], 'X')
def test_initialize_grid_two(self):
game = Game('X', 'O')
self.assertEqual(game.grid[3][4], 'O')
self.assertEqual(game.grid[4][3], 'O')
def test_get_grid_copy_one(self):
game = Game('X', 'O')
copy_grid = game.get_grid_copy()
self.assertEqual(len(copy_grid), 8)
def test_get_grid_copy_two(self):
game = Game('X', 'O')
copy_grid = game.get_grid_copy()
self.assertEqual(copy_grid[3][3], 'X')
self.assertEqual(copy_grid[4][4], 'X')
def test_get_grid_copy_three(self):
game = Game('X', 'O')
copy_grid = game.get_grid_copy()
self.assertEqual(copy_grid[3][4], 'O')
self.assertEqual(copy_grid[4][3], 'O')
def test_in_grid_upper_left(self):
game = Game('X', 'O')
result = game.in_grid(-1, 0)
self.assertFalse(result)
def test_in_grid_upper_right(self):
game = Game('X', 'O')
result = game.in_grid(8, 0)
self.assertFalse(result)
def test_in_grid_lower_left(self):
game = Game('X', 'O')
result = game.in_grid(-1, 7)
self.assertFalse(result)
def test_in_grid_lower_right(self):
game = Game('X', 'O')
result = game.in_grid(8, 7)
self.assertFalse(result)
def test_in_grid_center(self):
game = Game('X', 'O')
result = game.in_grid(3, 3)
self.assertTrue(result)
def test_is_on_corner_one(self):
game = Game('X', 'O')
result = game.is_on_corner(0, 0)
self.assertTrue(result)
def test_is_on_corner_two(self):
game = Game('X', 'O')
result = game.is_on_corner(7, 0)
self.assertTrue(result)
def test_is_on_corner_three(self):
game = Game('X', 'O')
result = game.is_on_corner(0, 7)
self.assertTrue(result)
def test_is_on_corner_four(self):
game = Game('X', 'O')
result = game.is_on_corner(7, 7)
self.assertTrue(result)
def test_is_on_corner_five(self):
game = Game('X', 'O')
result = game.is_on_corner(4, 4)
self.assertFalse(result)
def test_create_state_one(self):
game = Game('X', 'O')
self.assertEqual(game.state['Empty'], 60)
def test_create_state_two(self):
game = Game('X', 'O')
self.assertEqual(game.state['X'], 2)
def test_create_state_three(self):
game = Game('X', 'O')
self.assertEqual(game.state['O'], 2)
def test_get_score_of_grid(self):
game = Game('X', 'O')
scores = game.get_score_of_grid(game.grid)
self.assertEqual(scores['X'], 2)
self.assertEqual(scores['O'], 2)
def test_is_valid_move_true_x(self):
game = Game('X', 'O')
self.assertTrue(game.is_valid_move(3, 5, 'X', 'O') is not False)
def test_is_valid_move_true_o(self):
game = Game('X', 'O')
self.assertTrue(game.is_valid_move(3, 2, 'O', 'X') is not False)
def test_is_valid_move_false_x(self):
game = Game('X', 'O')
self.assertFalse(game.is_valid_move(3, 2, 'X', 'O'))
def test_is_valid_move_false_o(self):
game = Game('X', 'O')
self.assertFalse(game.is_valid_move(3, 5, 'O', 'X'))
def test_get_valid_moves_x(self):
game = Game('X', 'O')
moves = game.get_valid_moves('X', 'O')
for e in moves:
self.assertTrue(game.is_valid_move(e[0], e[1], 'X', 'O')
is not False)
def test_get_valid_moves_o(self):
game = Game('X', 'O')
moves = game.get_valid_moves('O', 'X')
for e in moves:
self.assertTrue(game.is_valid_move(e[0], e[1], 'O', 'X')
is not False)
def test_make_move(self):
game = Game('X', 'O')
copy_grid = game.get_grid_copy()
game.make_move(copy_grid, 3, 5, 'X', 'O')
self.assertTrue(copy_grid[3][5] == 'X')
self.assertTrue(copy_grid[3][4] == 'X')
def test_player_x(self):
game = Game('X', 'O')
player = Player()
player.do_correct_move_player(game, 3, 5, 'X', 'O')
self.assertTrue(game.grid[3][5] == 'X')
self.assertTrue(game.grid[3][4] == 'X')
def test_player_o(self):
game = Game('X', 'O')
player = Player()
player.do_correct_move_player(game, 3, 2, 'O', 'X')
self.assertTrue(game.grid[3][2] == 'O')
self.assertTrue(game.grid[3][3] == 'O')
def test_player_false(self):
game = Game('X', 'O')
player = Player()
self.assertFalse(player.do_correct_move_player(game, 3, 2, 'X', 'O'))
def test_robot_best(self):
game = Game('X', 'O')
robot = Robot()
score = game.get_score_of_grid(game.grid)
x, y = robot.get_best_move_robot(game)
robot.do_move_robot(game, x, y)
new_score = game.get_score_of_grid(game.grid)
self.assertTrue(score['O'] < new_score['O'])
def test_robot_random(self):
game = Game('X', 'O')
robot = Robot()
score = game.get_score_of_grid(game.grid)
x, y = robot.get_random_move_robot(game)
robot.do_move_robot(game, x, y)
new_score = game.get_score_of_grid(game.grid)
self.assertTrue(score['O'] < new_score['O'])
if __name__ == '__main__':
unittest.main()