def setUp(self): self.game_policy = GamePolicy() self.board_width = 3
class GamePolicyTest(unittest.TestCase): def setUp(self): self.game_policy = GamePolicy() self.board_width = 3 def get_empty_board(self, board_width): return [[Marks.empty]*board_width for n in range(board_width)] def test_is_full_when_its_empty(self): empty_board = self.get_empty_board(self.board_width) self.assertFalse(self.game_policy.is_full(empty_board)) def test_is_full_when_its_not_empty(self): board = self.get_empty_board(self.board_width) board[0][0] = Marks.cross self.assertFalse(self.game_policy.is_full(board)) def test_win_when_rows_are_win(self): mark = Marks.cross board = self.get_empty_board(self.board_width) for row in range(len(board)): board = self.set_mark_row(board, mark, row) self.assertTrue(self.game_policy.row_win(row, board, mark)) self.assertTrue(self.game_policy.win(board, Marks.cross)) def set_mark_row(self, board, mark, row): for column in range(len(board)): board[row][column] = mark return board def test_win_when_column_are_win(self): mark = Marks.cross board = self.get_empty_board(self.board_width) for column in range(len(board)): board = self.set_mark_column(board, mark, column) self.assertTrue(self.game_policy.column_win(column, board, mark)) self.assertTrue(self.game_policy.win(board, Marks.cross)) def set_mark_column(self, board, mark, column): for row in range(len(board)): board[row][column] = mark return board def test_win_when_dial_one_win(self): diagonal = 0 mark = Marks.cross board = self.get_empty_board(self.board_width) for position in range(self.board_width): board[position][position] = mark self.assertTrue(self.game_policy.diagonal_win(diagonal, board, mark)) self.assertTrue(self.game_policy.win(board, mark)) def test_win_when_dial_two_win(self): diagonal = 1 mark = Marks.cross board = self.get_empty_board(self.board_width) for position in range(self.board_width): board[position][self.board_width - position - 1] = mark self.assertTrue(self.game_policy.diagonal_win(diagonal, board, mark)) self.assertTrue(self.game_policy.win(board, mark)) def test_check_tie_when_its_tie(self): board = self.get_empty_board(self.board_width) board[0][0] = Marks.cross board[0][1] = Marks.nought board[0][2] = Marks.cross board[1][0] = Marks.nought board[1][1] = Marks.nought board[1][2] = Marks.cross board[2][0] = Marks.nought board[2][1] = Marks.cross board[2][2] = Marks.nought self.assertTrue(self.game_policy.check_tie(board)) def test_check_tie_when_board_is_not_full(self): board = self.get_empty_board(self.board_width) board[0][0] = Marks.cross board[0][1] = Marks.nought board[0][2] = Marks.cross board[1][0] = Marks.empty board[1][1] = Marks.nought board[1][2] = Marks.cross board[2][0] = Marks.nought board[2][1] = Marks.cross board[2][2] = Marks.nought self.assertFalse(self.game_policy.check_tie(board)) def test_check_tie_when_its_full_and_win(self): board = self.get_empty_board(self.board_width) board[0][0] = Marks.cross board[0][1] = Marks.cross board[0][2] = Marks.cross board[1][0] = Marks.cross board[1][1] = Marks.cross board[1][2] = Marks.cross board[2][0] = Marks.cross board[2][1] = Marks.cross board[2][2] = Marks.cross self.assertFalse(self.game_policy.check_tie(board))