def test__draw_check_when_draw(self):
        env = Environment(3, 3)
        env.board.fill(1)
        env.set_o(1, 1)
        env.print_array(env.board)

        env._draw_check()

        self.assertEqual(True, env.draw)
    def test_get_state_number(self):
        env = Environment(3, 3)
        env.set_x(0, 0) # 1
        env.set_x(0, 1) # 3
        env.set_x(0, 2) # 9
        env.set_o(1, 1) # 3^4 * 2 = 162
        state_number = env.get_state_number(env.board)

        self.assertEqual(175, state_number)
    def test__game_ended_row_check_when_game_not_ended(self):
        env = Environment(3, 3)
        env.set_o(0, 0)
        env.set_o(0, 1)
        env.set_x(0, 2)

        if_game_ended = env._game_ended_row_check()

        env.print_array(env.board)
        self.assertEqual(False, if_game_ended)
    def test__draw_check_when_no_draw(self):
        env = Environment(3, 3)
        env.set_x(0, 0)
        env.set_x(1, 0)
        env.set_o(2, 0)
        env.print_array(env.board)

        env._draw_check()

        self.assertEqual(False, env.draw)
    def test2__game_ended_diagonal_check_on_12x12_board(self):
        env = Environment(12, 12)
        env.set_o(4, 4)
        env.set_o(5, 5)
        env.set_o(6, 6)
        env.print_array(env.board)

        if_game_ended = env._game_ended_diagonal_check()

        self.assertEqual(True, if_game_ended)
    def test__game_ended_diagonal_check_on_12x12_board(self):
        env = Environment(12, 12)
        env.set_o(9, 2)
        env.set_o(10, 1)
        env.set_o(11, 0)
        env.print_array(env.board)

        if_game_ended = env._game_ended_diagonal_check()

        self.assertEqual(True, if_game_ended)
    def test__game_ended_diagonal_check_when_not_ended_on_4x4_board(self):
        env = Environment(4, 4)
        env.set_o(0, 0)
        env.set_o(2, 2)
        env.set_o(3, 3)
        env.print_array(env.board)

        if_game_ended = env._game_ended_diagonal_check()

        self.assertEqual(False, if_game_ended)
    def test2__game_ended_diagonal_check_when_ended_right_to_left_on_4x4_board(self):
        env = Environment(4, 4)
        env.set_o(1, 2)
        env.set_o(2, 1)
        env.set_o(3, 0)
        env.print_array(env.board)

        if_game_ended = env._game_ended_diagonal_check()

        self.assertEqual(True, if_game_ended)
    def test__game_ended_column_check_when_game_not_ended_4x3_board(self):
        env = Environment(4, 3)
        env.set_o(0, 1)
        env.set_o(2, 1)
        env.set_o(3, 1)

        env.print_array(env.board)
        if_game_ended = env._game_ended_column_check()

        self.assertEqual(False, if_game_ended)
    def test__game_ended_row_check_when_game_not_ended_on4x4_board(self):
        env = Environment(4, 4)

        env.set_o(2, 0)
        env.set_o(2, 2)
        env.set_o(2, 3)

        if_game_ended = env._game_ended_row_check()

        env.print_array(env.board)
        self.assertEqual(False, if_game_ended)
    def test_rows_columns_number(self):
        # given
        env = Environment(4, 3)

        # when
        env.set_x(0, 0) # x denoted as 1 in numpy array
        env.set_o(0, 1) # o denoted as 2 in numpy array

        # then
        self.assertEqual(env.rows, 4)
        self.assertEqual(env.columns, 3)

        self.assertEqual(env.board[0, 0], 1)
        self.assertEqual(env.board[0, 1], 2)