C. Yang

27 papers Misc 1Journal 16Unranked 10
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
D. Nash, D. A. Gates, W. S. Walsh, M. Slepchenkov, D. Guan, A. D. Cate, Bingyu Chen, M. Dickerson, W. Harris, U. Khera, M. Korman, S. Srinivasan, C. P. S. Swanson, A. van Riel, R. H. Wu, A. S. Basurto, B. Berzin, E. Brown, C. Chen, T. Ikuss, W. B. Kalb, C. Khurana, B. D. Koehne, T. G. Kruger, S. Noronha, J. Olatunji, R. Powser, K. Tamhankar, K. Tang, A. Tarifa, M. Savastianov, J. Wasserman, C. Yang
2023 conf
EMBC
C. Yang, Z. Sun, F. Zhang, H. Shu, J. Li, W. Xiang
2018 conf
ECOC
X. Zeng, Y. Li, L. Feng, S. Wu, C. Yang, W. Li, W. Tong, J. Wu
2018 conf
ECOC
Rui Lin, Aleksejs Udalcovs, Oskars Ozolins, Xiaodan Pang, Lin Gan, Li Shen, Ming Tang, Songnian Fu, Sergei Popov, C. Yang, Weijun Tong, Deming Liu, Thiago Ferreira da Silva, Guilherme B. Xavier, Jiajia Chen
2017 conf
ANT/SEIT
Xiaolong Xu, C. Yang, J. Shao
2016 conf
IEEE SENSORS
Y. Jiang, C. Yang, Q. Zhang, K. Yang, S. Kosolwattana, J. Joyner, H. Gullapalli, R. Vajtai
2015 J jnl
CoRR
H. Yu, C. Yang
2015 conf
ChinaSIP
Andrea Der, C. Yang, Dong-Yan Huang, M. Dong, H. Li
2014 conf
MFI
H. Reddivari, C. Yang, Zhaojie Ju, P. Liang, Z. Li, B. Xu
2012 J jnl
CoRR
C. Yang, C. Jiang, M. Wang
2011 J jnl
CoRR
C. Yang, C. Jiang, J. Wang
2011 J jnl
Microelectron. Reliab.
L. Hua, C. Yang
2010 J jnl
IET Commun.
Y. Liu, Naixue Xiong, Jong Hyuk Park, C. Yang, K. Xu
2010 J jnl
CoRR
C. Jiang, M. Wang, C. Yang
2010 J jnl
IEEE Trans. Instrum. Meas.
Q. Honglei, Q. Changquan, C. Li, C. Yang
2009 J jnl
J. Oper. Res. Soc.
John S. Liu, Wen-Min Lu, C. Yang, M. Chuang
2009 J jnl
J. Oper. Res. Soc.
Liang-Chu Chen, Wen-Min Lu, C. Yang
2009 J jnl
Int. J. Geogr. Inf. Sci.
C. Yang, R. Raskin
2009 J jnl
J. Comput. Appl. Math.
Fawang Liu, C. Yang, Kevin Burrage
2006 Misc conf
AMIA
Chrysanne Di Marco, Peter Bray, H. Dominic Covvey, Donald D. Cowan, Vic Di Ciccio, Eduard H. Hovy, Joan Lipa, C. Yang
2005 conf
ISCAS (5)
Yonghong Yang, Zine Abid, Wei Wang, Z. Zhang, C. Yang
2004 conf
CICC
Aurangzeb Khan, K. Ruparel, C. Joly, V. Ghanta, Due Le, T. Nguyen, J. Yu, Steven Yang, Irfan Ahmed, N. Burnside, V. Chagarlamudi, M. Cheung, F. Chiu, Yimu Fan, David Ge, Jaspal Gill, Pokai Huang, V. Jayapal, Oanh Kim, M. Li, Helder Mak, P. McKeever, S. Nguyen, K. Rajan, S. Riley, Peter Tran, H. Truong, A. Tsou, Demin Wang, C. Yang, J. Zhang, X. Zhong
2003 J jnl
Int. J. Comput. Eng. Sci.
C. Yang, T. N. Wong, Y. L. Leu, K. T. Ooi, J. C. Chai
2003 J jnl
Int. J. Comput. Eng. Sci.
K. T. Ooi, C. Yang, C. K. Chai, T. N. Wong, P. H. Ang
2003 J jnl
Int. J. Comput. Eng. Sci.
X. Y. Chen, C. Yang, K. C. Toh, J. C. Chai
2003 conf
WAA
Q. Zhang, J. M. Zheng, C. Yang
1998 J jnl
SIAM J. Matrix Anal. Appl.
Danny C. Sorensen, C. Yang
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