Wei Wang

14 papers Journal 12Unranked 2
YearRankTypeTitle / Venue / Authors
2024 J jnl
Remote. Sens.
Dong Li, Jinlin Wang, Kefa Zhou, Jiantao Bi, Qing Zhang, Wei Wang, Guangjun Qu, Chao Li, Heshun Qiu, Tao Liao, Chong Zhao, Yingpeng Lu
2024 J jnl
Remote. Sens.
Hao Guo, Yunfei Tian, Junli Li, Chunrui Guo, Xiangchen Meng, Wei Wang, Philippe De Maeyer
2024 J jnl
Remote. Sens.
Qinghou Hang, Hao Guo, Xiangchen Meng, Wei Wang, Ying Cao, Rui Liu, Philippe De Maeyer, Yunqian Wang
2023 J jnl
Int. J. Digit. Earth
Wei Wang, Alim Samat, Jilili Abuduwaili, Philippe De Maeyer, Tim Van de Voorde
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Wei Wang, Alim Samat, Jilili Abuduwaili, Chen Wang, Philippe De Maeyer, Tim Van de Voorde
2022 J jnl
Remote. Sens.
Zhibin Liu, Tie Liu, Yue Huang, Yangchao Duan, Xiaohui Pan, Wei Wang
2022 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Alim Samat, Erzhu Li, Wei Wang, Sicong Liu, Ximing Liu
2022 J jnl
Remote. Sens.
Alim Samat, Paolo Gamba, Wei Wang, Jieqiong Luo, Erzhu Li, Sicong Liu, Peijun Du, Jilili Abuduwaili
2022 J jnl
Sensors
Ximing Liu, Alim Samat, Erzhu Li, Wei Wang, Jilili Abuduwaili
2020 J jnl
J. Imaging
Alim Samat, Erzhu Li, Sicong Liu, Zelang Miao, Wei Wang
2020 J jnl
Remote. Sens.
Alim Samat, Erzhu Li, Wei Wang, Sicong Liu, Cong Lin, Jilili Abuduwaili
2020 J jnl
Remote. Sens.
Wei Wang, Alim Samat, Yongxiao Ge, Long Ma, Abula Tuheti, Shan Zou, Jilili Abuduwaili
2009 conf
WKDD
Jinlin Wang, Xi Chen, Kefa Zhou, Haibo Zhang, Wei Wang
2008 conf
CSSE (4)
Jinlin Wang, Xi Chen, Kefa Zhou, Wei Wang
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