Venkatesan N. Ekambaram

21 papers A* 1A 1B 3Journal 9Unranked 5
YearRankTypeTitle / Venue / Authors
2017 J jnl
IEEE Trans. Veh. Technol.
Urs Niesen, Venkatesan N. Ekambaram, Jubin Jose, Xinzhou Wu
2016 J jnl
IEEE Trans. Veh. Technol.
Venkatesan N. Ekambaram, Kannan Ramchandran, Raja Sengupta
2015 ch.
Multimodal Location Estimation of Videos and Images
Venkatesan N. Ekambaram, Kannan Ramchandran, Jaeyoung Choi, Gerald Friedland
2015 ch.
Multimodal Location Estimation of Videos and Images
Jaeyoung Choi, Howard Lei, Venkatesan N. Ekambaram, Pascal Kelm, Luke R. Gottlieb, Thomas Sikora, Kannan Ramchandran, Gerald Friedland
2015 J jnl
J. Intell. Transp. Syst.
Jerald Jariyasunant, Maya Abou-Zeid, Andre Carrel, Venkatesan N. Ekambaram, David Gaker, Raja Sengupta, Joan L. Walker
2015 J jnl
IEEE Trans. Signal Inf. Process. over Networks
Venkatesan N. Ekambaram, Giulia Cecilia Fanti, Babak Ayazifar, Kannan Ramchandran
2015 J jnl
CoRR
Urs Niesen, Venkatesan N. Ekambaram, Jubin Jose, Xinzhou Wu
2013 B conf
ICIP
Venkatesan N. Ekambaram, Giulia Cecilia Fanti, Babak Ayazifar, Kannan Ramchandran
2013 conf
GlobalSIP
Sameer Pawar, Venkatesan N. Ekambaram, Kannan Ramchandran
2013 conf
GlobalSIP
Venkatesan N. Ekambaram, Giulia Fanti, Babak Ayazifar, Kannan Ramchandran
2013 A* conf
ACM Multimedia
Jaeyoung Choi, Howard Lei, Venkatesan N. Ekambaram, Pascal Kelm, Luke R. Gottlieb, Thomas Sikora, Kannan Ramchandran, Gerald Friedland
2013 conf
GlobalSIP
Venkatesan N. Ekambaram, Giulia Fanti, Babak Ayazifar, Kannan Ramchandran
2012 J jnl
CoRR
Venkatesan N. Ekambaram, Kannan Ramchandran, Raja Sengupta
2012 A conf
ICME
Jaeyoung Choi, Gerald Friedland, Venkatesan N. Ekambaram, Kannan Ramchandran
2012 conf
SSP
Venkatesan N. Ekambaram, Kannan Ramchandran
2012 J jnl
CoRR
Venkatesan N. Ekambaram, Giulia Fanti, Kannan Ramchandran
2012 conf
MediaEval
Jaeyoung Choi, Venkatesan N. Ekambaram, Gerald Friedland, Kannan Ramchandran
2012 J jnl
ACM Trans. Sens. Networks
Swaprava Nath, Venkatesan N. Ekambaram, Anurag Kumar, P. Vijay Kumar
2011 B conf
GLOBECOM
Venkatesan N. Ekambaram, Kannan Ramchandran, Raja Sengupta
2010 J jnl
CoRR
Venkatesan N. Ekambaram, Kannan Ramchandran
2010 B conf
GLOBECOM
Venkatesan N. Ekambaram, Kannan Ramchandran
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