Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
 def test_tic_tac_toe(self):
     with app.test_client() as tester:
         response = tester.get('/')
         self.assertEqual(response.status_code, 200)