def test_play_no_winner_large(self): # [ # ["X", "O", "X", "O"], # ["O", "O", "X", "O"], # ["X", "X", "O", "X"], # ["X", "X", "O", "O"], # ] move(self.game_large, self.x, position=(0, 0)) move(self.game_large, self.o, position=(0, 1)) move(self.game_large, self.x, position=(0, 2)) move(self.game_large, self.o, position=(1, 0)) move(self.game_large, self.x, position=(1, 2)) move(self.game_large, self.o, position=(1, 1)) move(self.game_large, self.x, position=(2, 0)) move(self.game_large, self.o, position=(2, 2)) move(self.game_large, self.x, position=(2, 3)) move(self.game_large, self.o, position=(0, 3)) move(self.game_large, self.x, position=(3, 1)) move(self.game_large, self.o, position=(1, 3)) move(self.game_large, self.x, position=(3, 0)) move(self.game_large, self.o, position=(3, 3)) move(self.game_large, self.x, position=(3, 2)) with self.assertRaisesRegexp(GameOver, 'Game is tied!'): move(self.game_large, self.o, position=(2, 1)) self.assertEqual(get_winner(self.game_large), None) self.assertTrue(_board_is_full(self.game_large['board'])) with self.assertRaisesRegexp(InvalidMovement, 'Game is over.'): move(self.game_large, self.x, position=(0, 0))
def test_play_X_wins(self): # [ # ["X", "X", "X"], <--- "X" wins # ["O", "O", "-"], # ["-", "-", "-"], # ] move(self.game, self.x, position=(0, 0)) move(self.game, self.o, position=(1, 0)) move(self.game, self.x, position=(0, 1)) move(self.game, self.o, position=(1, 1)) with self.assertRaisesRegexp(GameOver, '"X" wins!'): move(self.game, self.x, position=(0, 2)) self.assertEqual(get_winner(self.game), self.x) with self.assertRaisesRegexp(InvalidMovement, 'Game is over'): move(self.game, self.o, position=(2, 2))
def test_play_no_winner(self): # [ # ["X", "O", "X"], # ["O", "O", "X"], # ["X", "X", "O"], # ] move(self.game, self.x, position=(0, 0)) move(self.game, self.o, position=(0, 1)) move(self.game, self.x, position=(0, 2)) move(self.game, self.o, position=(1, 0)) move(self.game, self.x, position=(1, 2)) move(self.game, self.o, position=(1, 1)) move(self.game, self.x, position=(2, 0)) move(self.game, self.o, position=(2, 2)) with self.assertRaisesRegexp(GameOver, 'Game is tied!'): move(self.game, self.x, position=(2, 1)) self.assertEqual(get_winner(self.game), None) self.assertTrue(_board_is_full(self.game['board'])) with self.assertRaisesRegexp(InvalidMovement, 'Game is over.'): move(self.game, self.o, position=(0, 0))
test_board_moves = [(0, 1), (0, 2), (1, 2), (2, 0), (2, 1)] all_moves = [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] no_moves = list() assert get_valid_moves(empty_board) == all_moves assert get_valid_moves(full_board) == no_moves assert get_valid_moves(test_board) == test_board_moves # Test get_winner() function # diagonal win board_1 = [["X", "X", None], ["O", "X", "O"], ["O", "O", "X"]] assert get_winner(board_1) == "X" # horizontal win board_2 = [["X", "X", "X"], ["O", "X", "O"], ["O", "O", None]] assert get_winner(board_2) == "X" # vertical win board_3 = [["O", "X", "X"], ["O", "X", "O"], ["O", "O", "X"]] assert get_winner(board_3) == "O" # game in progress, no winner board_4 = [["X", "X", None], ["O", "X", "O"], ["O", "O", None]] assert get_winner(board_4) == None