def test_tic_tac_toe_board(self): with app.test_client() as tester: response = tester.get('/') self.assertEqual(response.status_code, 200) board = get_initial_board(response) self.assertEqual(board, [[u" ", u" ", u" "], [u" ", u" ", u" "], [u" ", u" ", u" "]]) self.assertEqual(count_total_moves(board), 0) test_board_1 = ('[["X", " ", " "], ' '[" ", " ", " "], ' '[" ", " ", " "]]') test_board_2 = ('[["X", "O", "O"], ' '["O", "X", "X"], ' '["X", "X", "O"]]') test_board_3 = ('[["X", "X", "X"], ' '["X", "O", "O"], ' '[" ", "O", " "]]') response = tester.post('/', data={'layout': test_board_1}) board = json.loads(response.data) self.assertEqual(response.status_code, 200) self.assertEqual(count_total_moves(board), 1) url = '/is-draw?layout={}'.format(test_board_2) response = tester.get(url) self.assertEqual(response.status_code, 200) is_draw = False if response.data == 'False' else True self.assertEqual(is_draw, True) url = '/is-win?layout={}'.format(test_board_2) response = tester.get(url) self.assertEqual(response.status_code, 200) winner = None if response.data == '' else response.data self.assertEqual(winner, None) url = '/is-win?layout={}'.format(test_board_3) response = tester.get(url) self.assertEqual(response.status_code, 200) winner = None if response.data == '' else response.data self.assertEqual(winner, 'player') url = '/ai-move?layout={}'.format(test_board_1) response = tester.get(url) self.assertEqual(response.status_code, 200) self.assertNotEqual(response.data, test_board_1)
def test_center(self): start_board = ('[[" ", " ", " "], ' '[" ", " ", " "], ' '[" ", " ", " "]]') ai_move = ('[[" ", " ", " "], ' '[" ", "O", " "], ' '[" ", " ", " "]]') with app.test_client() as tester: url = '/ai-move?layout={}'.format(start_board) response = tester.get(url) self.assertEqual(response.status_code, 200) self.assertEqual(response.data, ai_move)
def test_any_side(self): moves = ( ('[["?", " ", "?"], ' '["?", "?", "?"], ' '["?", "?", "?"]]', '[["?", "O", "?"], ' '["?", "?", "?"], ' '["?", "?", "?"]]'), ('[["?", "?", "?"], ' '["?", "?", " "], ' '["?", "?", "?"]]', '[["?", "?", "?"], ' '["?", "?", "O"], ' '["?", "?", "?"]]'), ('[["?", "?", "?"], ' '["?", "?", "?"], ' '["?", " ", "?"]]', '[["?", "?", "?"], ' '["?", "?", "?"], ' '["?", "O", "?"]]'), ('[["?", "?", "?"], ' '[" ", "?", "?"], ' '["?", "?", "?"]]', '[["?", "?", "?"], ' '["O", "?", "?"], ' '["?", "?", "?"]]'), ) with app.test_client() as tester: for start_board, ai_move in moves: url = '/ai-move?layout={}'.format(start_board) response = tester.get(url) self.assertEqual(response.status_code, 200) self.assertEqual(response.data, ai_move)
def test_fork_block(self): moves = ( ('[[" ", "X", " "], ' '[" ", "O", "X"], ' '[" ", " ", " "]]', ['[[" ", "X", "O"], ' '[" ", "O", "X"], ' '[" ", " ", " "]]', '[[" ", "X", " "], ' '[" ", "O", "X"], ' '[" ", " ", "O"]]', '[["O", "X", " "], ' '[" ", "O", "X"], ' '[" ", " ", " "]]']), ('[[" ", "X", " "], ' '["X", "O", " "], ' '[" ", " ", " "]]', ['[["O", "X", " "], ' '["X", "O", " "], ' '[" ", " ", " "]]', '[[" ", "X", " "], ' '["X", "O", " "], ' '["O", " ", " "]]', '[[" ", "X", "O"], ' '["X", "O", " "], ' '[" ", " ", " "]]']), ('[[" ", " ", " "], ' '["X", "O", " "], ' '[" ", "X", " "]]', ['[[" ", " ", " "], ' '["X", "O", " "], ' '["O", "X", " "]]', '[["O", " ", " "], ' '["X", "O", " "], ' '[" ", "X", " "]]', '[[" ", " ", " "], ' '["X", "O", " "], ' '[" ", "X", "O"]]']), ('[[" ", " ", " "], ' '[" ", "O", "X"], ' '[" ", "X", " "]]', ['[[" ", " ", " "], ' '[" ", "O", "X"], ' '[" ", "X", "O"]]', '[[" ", " ", "O"], ' '[" ", "O", "X"], ' '[" ", "X", " "]]', '[[" ", " ", " "], ' '[" ", "O", "X"], ' '["O", "X", " "]]']), ('[["X", " ", " "], ' '[" ", "O", " "], ' '[" ", " ", "X"]]', ['[["X", "O", " "], ' '[" ", "O", " "], ' '[" ", " ", "X"]]', '[["X", " ", " "], ' '[" ", "O", "O"], ' '[" ", " ", "X"]]', '[["X", " ", " "], ' '[" ", "O", " "], ' '[" ", "O", "X"]]', '[["X", " ", " "], ' '["O", "O", " "], ' '[" ", " ", "X"]]']), ('[[" ", " ", "X"], ' '[" ", "O", " "], ' '["X", " ", " "]]', ['[[" ", "O", "X"], ' '[" ", "O", " "], ' '["X", " ", " "]]', '[[" ", " ", "X"], ' '[" ", "O", "O"], ' '["X", " ", " "]]', '[[" ", " ", "X"], ' '[" ", "O", " "], ' '["X", "O", " "]]', '[[" ", " ", "X"], ' '["O", "O", " "], ' '["X", " ", " "]]']), ) """ moves = ( ('[["X", " ", " "], ' '[" ", "O", " "], ' '[" ", " ", "X"]]', ['[["X", "O", " "], ' '[" ", "O", " "], ' '[" ", " ", "X"]]', '[["X", " ", " "], ' '[" ", "O", "O"], ' '[" ", " ", "X"]]', '[["X", " ", " "], ' '[" ", "O", " "], ' '[" ", "O", "X"]]', '[["X", " ", " "], ' '["O", "O", " "], ' '[" ", " ", "X"]]']), ) """ with app.test_client() as tester: for start_board, ai_moves in moves: url = '/ai-move?layout={}'.format(start_board) response = tester.get(url) self.assertEqual(response.status_code, 200) self.assertIn(response.data, ai_moves)
def test_tic_tac_toe(self): with app.test_client() as tester: response = tester.get('/') self.assertEqual(response.status_code, 200)