Vinay Joseph

27 papers A* 4Journal 15Unranked 8
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Access
Sushi Anna George, Vinay Joseph
2025 J jnl
CoRR
Sushi Anna George, Vinay Joseph
2025 J jnl
IEEE Access
Sushi Anna George, Vinay Joseph
2024 J jnl
CoRR
Sushi Anna George, Vinay Joseph
2023 conf
ICC
Sushi Anna George, Vinay Joseph
2023 J jnl
Syst. Control. Lett.
Vinay Joseph, Gustavo de Veciana
2022 conf
VTC Fall
Sreelakshmi Pazhoor, Jesy Pachat, Nujoom Sageer Karat, Vinay Joseph, P. P. Deepthi, B. Sundar Rajan
2022 J jnl
CoRR
Sushi Anna George, Vinay Joseph
2019 J jnl
IEEE J. Sel. Areas Commun.
Mostafa Khoshnevisan, Vinay Joseph, Piyush Gupta, Farhad Meshkati, Rajat Prakash, Peerapol Tinnakornsrisuphap
2016 J jnl
IEEE/ACM Trans. Netw.
Vinay Joseph, Sem C. Borst, Martin I. Reiman
2015 J jnl
IEEE Trans. Autom. Control.
Vinay Joseph, Gustavo de Veciana, Ari Arapostathis
2014 A* conf
INFOCOM
Vinay Joseph, Gustavo de Veciana
2014 A* conf
INFOCOM
Vinay Joseph, Sem C. Borst, Martin I. Reiman
2013 J jnl
CoRR
Vinay Joseph, Gustavo de Veciana
2012 A* conf
INFOCOM
Vinay Joseph, Gustavo de Veciana
2012 J jnl
CoRR
Vinay Joseph, Gustavo de Veciana, Ari Arapostathis
2012 conf
Allerton Conference
Vinay Joseph, Gustavo de Veciana, Ari Arapostathis
2011 A* conf
SIGMETRICS
Vinay Joseph, Gustavo de Veciana
2011 J jnl
CoRR
Vinay Joseph, Gustavo de Veciana
2010 J jnl
IEEE Trans. Wirel. Commun.
Vinod Sharma, Utpal Mukherji, Vinay Joseph, Shrey Gupta
2010 conf
Allerton
Vinay Joseph, Vinod Sharma, Utpal Mukherji
2009 conf
ICUMT
Vinay Joseph, Vinod Sharma, Utpal Mukherji, Manjunath Kashyap
2009 conf
PM2HW2N@MSWiM
Vinay Joseph, Vinod Sharma, Utpal Mukherji
2009 conf
ICC
Vinay Joseph, Vinod Sharma, Utpal Mukherji
2008 J jnl
CoRR
Vinod Sharma, Utpal Mukherji, Vinay Joseph
2008 conf
Allerton
Vinod Sharma, Utpal Mukherji, Vinay Joseph
2008 J jnl
CoRR
Vinod Sharma, Utpal Mukherji, Vinay Joseph, Shrey Gupta
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