Kaibo Hu

51 papers Journal 50Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Guangwei Gao, Kaibo Hu, Buyang Li, Ganghui Zhang
2026 J jnl
CoRR
Patrick E. Farrell, Mingdong He, Kaibo Hu, Ganghui Zhang
2026 J jnl
SIAM J. Sci. Comput.
Mingdong He, Patrick E. Farrell, Kaibo Hu, Boris D. Andrews
2025 J jnl
CoRR
Chengbin Zhu, Snorre H. Christiansen, Kaibo Hu, Anil N. Hirani
2025 J jnl
CoRR
Daniele A. Di Pietro, Jérôme Droniou, Kaibo Hu, Arax Leroy
2025 J jnl
SIAM J. Appl. Algebra Geom.
Kaibo Hu, Ting Lin, Qian Zhang
2025 J jnl
CoRR
Kaibo Hu, Ting Lin
2025 J jnl
CoRR
Marien-Lorenzo Hanot, Kaibo Hu
2025 J jnl
SIAM J. Numer. Anal.
Andrea Dziubek, Kaibo Hu, Michael Karow, Michael Neunteufel
2025 J jnl
CoRR
Kaibo Hu
2025 J jnl
CoRR
Mingdong He, Patrick E. Farrell, Kaibo Hu, Boris D. Andrews
2024 J jnl
Numerische Mathematik
Snorre H. Christiansen, Jay Gopalakrishnan, Johnny Guzmán, Kaibo Hu
2024 J jnl
Found. Comput. Math.
Andreas Cap, Kaibo Hu
2024 J jnl
CoRR
Andrea Dziubek, Kaibo Hu, Michael Karow, Michael Neunteufel
2024 J jnl
CoRR
Francis R. A. Aznaran, Kaibo Hu, Charles Parker
2023 J jnl
CoRR
Francesco Bonaldi, Daniele A. Di Pietro, Jérôme Droniou, Kaibo Hu
2023 J jnl
CoRR
Andreas Cap, Kaibo Hu
2023 J jnl
CoRR
Francesca Bonizzoni, Kaibo Hu, Guido Kanschat, Duygu Sap
2023 J jnl
CoRR
Kaibo Hu, Ting Lin, Qian Zhang
2023 J jnl
CoRR
Snorre H. Christiansen, Kaibo Hu, Ting Lin
2023 J jnl
Found. Comput. Math.
Snorre H. Christiansen, Kaibo Hu
2023 J jnl
CoRR
Kaibo Hu, Ting Lin, Bowen Shi
2023 J jnl
CoRR
Kaibo Hu
2023 J jnl
CoRR
Kaibo Hu, Jiguang Sun, Qian Zhang
2023 J jnl
J. Comput. Phys.
Fabian Laakmann, Kaibo Hu, Patrick E. Farrell
2022 J jnl
SIAM J. Numer. Anal.
Kaibo Hu, Qian Zhang, Zhimin Zhang
2022 J jnl
CoRR
Andreas Cap, Kaibo Hu
2022 J jnl
CoRR
Kaibo Hu
2022 J jnl
Comput. Methods Appl. Math.
Jun Hu, Kaibo Hu, Qian Zhang
2022 J jnl
CoRR
Jun Hu, Kaibo Hu, Qian Zhang
2022 J jnl
CoRR
Fabian Laakmann, Patrick E. Farrell, Kaibo Hu
2021 J jnl
Found. Comput. Math.
Douglas N. Arnold, Kaibo Hu
2021 J jnl
J. Comput. Phys.
Kaibo Hu, Young-Ju Lee, Jinchao Xu
2021 J jnl
CoRR
Kaibo Hu, Qian Zhang, Jiayu Han, Lixiu Wang, Zhimin Zhang
2020 J jnl
Adv. Comput. Math.
Michael S. Floater, Kaibo Hu
2020 J jnl
CoRR
Snorre H. Christiansen, Jay Gopalakrishnan, Johnny Guzmán, Kaibo Hu
2020 J jnl
CoRR
Kaibo Hu, Qian Zhang, Zhimin Zhang
2020 conf
ICITEE
Mingzeng Zhu, Xiaolan Liu, Hongyu Zhou, Kaibo Hu, Xinhua Huang, Hao Qiu
2020 J jnl
CoRR
Douglas N. Arnold, Kaibo Hu
2020 J jnl
J. Comput. Appl. Math.
Kaibo Hu, Weifeng Qiu, Ke Shi
2020 J jnl
CoRR
Kaibo Hu, Young-Ju Lee, Jinchao Xu
2020 J jnl
SIAM J. Sci. Comput.
Kaibo Hu, Qian Zhang, Zhimin Zhang
2020 J jnl
CoRR
Kaibo Hu, Qian Zhang, Zhimin Zhang
2019 J jnl
CoRR
Michael S. Floater, Kaibo Hu
2019 J jnl
CoRR
Snorre H. Christiansen, Kaibo Hu
2019 J jnl
Numerische Mathematik
Juncai He, Kaibo Hu, Jinchao Xu
2019 J jnl
Math. Comput.
Kaibo Hu, Jinchao Xu
2018 J jnl
Numerische Mathematik
Snorre H. Christiansen, Kaibo Hu
2018 J jnl
Numerische Mathematik
Snorre H. Christiansen, Jun Hu, Kaibo Hu
2017 J jnl
Numerische Mathematik
Kaibo Hu, Yicong Ma, Jinchao Xu
2016 J jnl
J. Comput. Phys.
Yicong Ma, Kaibo Hu, Xiaozhe Hu, Jinchao Xu
tests/unit/test_decompile_function_type.py
← Index tests/unit/test_decompile_function_type.py python
"""Unit tests for bninja/function_type.py."""
import sys
import pytest
from unittest.mock import MagicMock

# Install binaryninja stubs before importing
from tests.unit.conftest_binja_stubs import install_binja_stubs, SymbolType
install_binja_stubs()

from redb.extractors.decompiler.bninja.function_type import (
    FunctionType,
    FunctionTypeAnalysis,
)


# ============================================================================
# 4a. FunctionType / FunctionTypeAnalysis
# ============================================================================


class TestFunctionTypeEnum:
    def test_function_type_enum_values(self):
        assert FunctionType.USER.value == "USER"
        assert FunctionType.LIBRARY.value == "LIBRARY"
        assert FunctionType.EXTERNAL.value == "EXTERNAL"
        assert FunctionType.THUNK.value == "THUNK"
        assert FunctionType.UNKNOWN.value == "UNKNOWN"


class TestFunctionTypeAnalysis:
    def _make_function(self, symbol_type=None, is_thunk=False, raise_on_symbol=False):
        func = MagicMock()
        func.is_thunk = is_thunk
        if raise_on_symbol:
            type(func).symbol = property(lambda self: (_ for _ in ()).throw(Exception("no symbol")))
        else:
            func.symbol.type = symbol_type if symbol_type is not None else SymbolType.FunctionSymbol
        return func

    def test_user_function_type(self):
        func = self._make_function(symbol_type=SymbolType.FunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.USER

    def test_external_function_type(self):
        func = self._make_function(symbol_type=SymbolType.ImportedFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.EXTERNAL

    def test_library_function_type(self):
        func = self._make_function(symbol_type=SymbolType.LibraryFunctionSymbol)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.LIBRARY

    def test_thunk_function_type(self):
        # Thunk overrides the symbol type
        func = self._make_function(
            symbol_type=SymbolType.FunctionSymbol, is_thunk=True
        )
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.THUNK

    def test_exception_returns_unknown(self):
        func = self._make_function(raise_on_symbol=True)
        analysis = FunctionTypeAnalysis(func)
        assert analysis.get_function_type() == FunctionType.UNKNOWN