Xiaochuan Sun

39 papers A 1C 1Journal 37
YearRankTypeTitle / Venue / Authors
2026 J jnl
Biomed. Signal Process. Control.
Mingjun Wei, Qian Wu, Jinghao Jia, Weibin Chen, Ao Cai, Hui Li, Xiaochuan Sun, Jinyun Liu
2025 J jnl
IEEE Trans. Wirel. Commun.
Xiaochuan Sun, Jinpeng Han, Yingqi Li, Kaiyu Zhu, Haijun Zhang
2025 J jnl
IEEE Trans. Veh. Technol.
Xiaochuan Sun, Changcheng Wu, Yingqi Li, Tianyu Huang, Jike Yu, Haijun Zhang
2024 J jnl
IEEE Internet Things J.
Mingxiang Hao, Xiaochuan Sun, Yingqi Li, Tianyu Huang
2024 J jnl
IEEE Trans. Netw. Sci. Eng.
Mingxiang Hao, Xiaochuan Sun, Yingqi Li, Haijun Zhang
2024 J jnl
IEEE Wirel. Commun. Lett.
Xiaochuan Sun, Jike Yu, Changcheng Wu, Yingqi Li, Haijun Zhang
2024 J jnl
Computing
Xiaochuan Sun, Qi Chen, Mingxiang Hao, Yingqi Li, Bo Sun
2024 J jnl
IEEE Netw. Lett.
Yingqi Li, Mingxiang Hao, Xiaochuan Sun, Haijun Zhang
2024 J jnl
J. Intell. Fuzzy Syst.
Xiaochuan Sun, Yu Wang, Mingxiang Hao, Yingqi Li, Tianyu Huang
2024 J jnl
Phys. Commun.
Xiaochuan Sun, Zhenteng Qin, Qi Zhang, Yingqi Li
2024 J jnl
J. Intell. Fuzzy Syst.
Zhigang Li, Wenhao Nian, Xiaochuan Sun, Shujie Li
2023 J jnl
IEEE Internet Things J.
Xiaochuan Sun, Jingchang Fu, Biao Wei, Zhigang Li, Yingqi Li, Ning Wang
2023 J jnl
Phys. Commun.
Zhigang Li, Wentao Zhang, Yutong Wang, Shujie Li, Xiaochuan Sun
2023 J jnl
Phys. Commun.
Zhigang Li, Yutong Wang, Wentao Zhang, Shujie Li, Xiaochuan Sun
2023 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Zhigang Li, Qimei Guo, Bo Sun, Difei Cao, Yingqi Li, Xiaochuan Sun
2023 J jnl
Entropy
Zhigang Li, Ting Sun, Yu Wang, Yujie Liu, Xiaochuan Sun
2023 J jnl
IEEE Commun. Lett.
Qi Zhang, Zhigang Li, Zhenteng Qin, Xiaochuan Sun, Haijun Zhang
2023 J jnl
Inf.
Xiaochuan Sun, Jiahui Gao, Yu Wang
2023 J jnl
J. Commun. Inf. Networks
Xiaochuan Sun, Xiaoyu Niu, Yutong Wang, Yingqi Li
2022 J jnl
Entropy
Xiaochuan Sun, Mingxiang Hao, Yutong Wang, Yu Wang, Zhigang Li, Yingqi Li
2021 J jnl
IEEE Wirel. Commun.
Yingqi Li, Xiaochuan Sun, Haijun Zhang, Zhigang Li, Linlin Qin, Chenwei Sun, Zhanlin Ji
2020 J jnl
IEEE Internet Things J.
Xiaochuan Sun, Shuhao Ma, Yingqi Li, Duo Wang, Zhigang Li, Ning Wang, Guan Gui
2020 J jnl
IEEE Access
Xiaochuan Sun, Xin Wang, Di Cai, Zhigang Li, Yuanyuan Gao, Xusheng Wang
2020 J jnl
IEEE Internet Things J.
Yingqi Li, Di Cai, Jialin Wang, Xiaochuan Sun, Zhigang Li, Haijun Zhang, Ning Wang
2020 J jnl
IEEE Access
Zhigang Li, Gang Wang, Juan Wang, Jialin Wang, Di Cai, Yingqi Li, Changxin Cai, Xiaochuan Sun, Ning Wang, Jiabo Zhang, Huixin Liu
2020 J jnl
IEEE Trans. Veh. Technol.
Yingqi Li, Juan Wang, Xiaochuan Sun, Zhigang Li, Miao Liu, Guan Gui
2020 J jnl
IEEE Internet Things J.
Xiaochuan Sun, Yingqi Li, Ning Wang, Zhigang Li, Miao Liu, Guan Gui
2019 J jnl
IEEE Access
Zhigang Li, Ning Wang, Yingqi Li, Xiaochuan Sun, Meijie Huo, Haijun Zhang
2019 J jnl
J. Supercomput.
Yongli An, Ruihua Sun, Xinwen Wu, Xiaochuan Sun
2019 J jnl
IEEE Access
Xiaochuan Sun, Yingqi Li, Guan Gui, Hikmet Sari
2019 J jnl
IEEE Access
Zhigang Li, Gang Wang, Di Cai, Jialin Wang, Yingqi Li, Guan Gui, Xiaochuan Sun, Ning Wang, Jiabo Zhang, Huixin Liu
2019 J jnl
IEEE Internet Things J.
Xiaochuan Sun, Guan Gui, Yingqi Li, Ren Ping Liu, Yongli An
2019 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Qun Li, Fu Xiao, Le An, Xianzhong Long, Xiaochuan Sun
2018 J jnl
Prod. Eng.
Xiaochuan Sun, Luiz F. Kawashita, Tino Wollmann, Sebastian Spitzer, Albert Langkamp, Maik Gude
2018 J jnl
Neurocomputing
Xiaochuan Sun, Tao Li, Yingqi Li, Qun Li, Yue Huang, Jiayu Liu
2017 J jnl
Knowl. Based Syst.
Xiaochuan Sun, Tao Li, Qun Li, Yue Huang, Yingqi Li
2015 J jnl
Neurocomputing
Chao Ge, Weiwei Zhang, Wei Li, Xiaochuan Sun
2011 A conf
IROS
Xiaochuan Sun, Shahram Payandeh
2009 C conf
IAS
Wang Mei, Xiaochuan Sun, Zheng Hao
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