-
Notifications
You must be signed in to change notification settings - Fork 0
/
tests.py
155 lines (130 loc) · 3.86 KB
/
tests.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
from unittest import TestCase
from tictactoe import TicTacToe
class TicTacToeBoardTestCase(TestCase):
def test_correct_board_should_return_true_if_board_is_square(self):
game = TicTacToe([
'...',
'...',
'...',
])
self.assertTrue(game.is_correct())
def test_correct_board_should_return_false_if_board_is_not_square(self):
game = TicTacToe([
'XXOO.',
'...X.',
'OOOO',
'..',
'.....',
])
self.assertFalse(game.is_correct())
class TicTacToeWinnerTestCase(TestCase):
def test_check_rows_should_return_none_if_row_is_incomplete(self):
game = TicTacToe([
'XXX.',
'X...',
'.OOO',
'....',
])
self.assertIsNone(game.check_rows())
def test_check_rows_should_return_winner_if_row_is_complete(self):
game = TicTacToe([
'X...',
'....',
'OOOO',
'X...',
])
self.assertEqual('O', game.check_rows())
game = TicTacToe([
'X...',
'....',
'XXXX',
'X...',
])
self.assertEqual('X', game.check_rows())
def test_check_columns_should_return_none_if_column_is_incomplete(self):
game = TicTacToe([
'X...',
'X...',
'X...',
'....',
])
self.assertIsNone(game.check_columns())
def test_check_columns_should_return_winner_if_column_is_complete(self):
game = TicTacToe([
'X...',
'X...',
'X...',
'X...',
])
self.assertEqual('X', game.check_columns())
game = TicTacToe([
'O...',
'O...',
'O...',
'O...',
])
self.assertEqual('O', game.check_columns())
def test_check_diagonals_should_return_none_if_diagonal_is_incomplete(self):
game = TicTacToe([
'X...',
'.X..',
'..X.',
'....',
])
self.assertIsNone(game.check_diagonals())
game = TicTacToe([
'...X',
'..X.',
'.X..',
'....',
])
self.assertIsNone(game.check_diagonals())
def test_check_diagonals_should_return_winner_if_diagonal_is_complete(self):
game = TicTacToe([
'X...',
'.X..',
'..X.',
'...X',
])
self.assertEqual('X', game.check_diagonals())
game = TicTacToe([
'...O',
'..O.',
'.O..',
'O...',
])
self.assertEqual('O', game.check_diagonals())
def test_result_should_return_dot_if_no_winner(self):
game = TicTacToe([
'XO.',
'.Ox',
'.X.',
])
self.assertEqual('.', game.result())
def test_result_should_return_winner_if_row_is_complete(self):
game = TicTacToe([
'XXX',
'.Ox',
'.X.',
])
self.assertEqual('X', game.result())
class TicTacToeComprehensiveTestCase(TestCase):
def setUp(self):
self.game = TicTacToe([
'XOXOXO',
'O..O.X',
'.XXO..',
'OOXO.O',
'X.XO.X',
'..XOX.',
])
def test_board_should_be_correct(self):
self.assertTrue(self.game.is_correct())
def test_should_not_detect_complete_row(self):
self.assertIsNone(self.game.check_rows())
def test_should_not_detect_complete_diagonal(self):
self.assertIsNone(self.game.check_diagonals())
def test_should_detect_complete_column(self):
self.assertEqual('O', self.game.check_columns())
def test_should_return_winner_based_on_complete_column(self):
self.assertEqual('O', self.game.result())