Kalyanam Krishnamoorthy

20 papers C 6Journal 9Unranked 5
YearRankTypeTitle / Venue / Authors
2018 J jnl
CoRR
Sai Krishna Kanth Hari, Sivakumar Rathinam, Swaroop Darbha, Kalyanam Krishnamoorthy, Satyanarayana Gupta Manyam, David W. Casbeer
2017 J jnl
IEEE Trans. Control. Syst. Technol.
Hua Chen, Kalyanam Krishnamoorthy, Wei Zhang, David W. Casbeer
2017 J jnl
J. Aerosp. Inf. Syst.
Kalyanam Krishnamoorthy, David W. Casbeer, Meir Pachter
2017 C conf
ACC
Shreyas Sundaram, Kalyanam Krishnamoorthy, David W. Casbeer
2016 J jnl
IEEE Trans. Hum. Mach. Syst.
Kalyanam Krishnamoorthy, Meir Pachter, Michael Patzek, Clayton Rothwell, Swaroop Darbha
2016 J jnl
IEEE Trans Autom. Sci. Eng.
Myoungkuk Park, Kalyanam Krishnamoorthy, Swaroop Darbha, Pramod P. Khargonekar, Meir Pachter, Phillip R. Chandler
2016 J jnl
SIAM J. Control. Optim.
Kalyanam Krishnamoorthy, David W. Casbeer, Meir Pachter
2016 J jnl
CoRR
Shreyas Sundaram, Kalyanam Krishnamoorthy, David W. Casbeer
2015 C conf
ACC
Kalyanam Krishnamoorthy, David W. Casbeer, Meir Pachter
2014 conf
CDC
David W. Casbeer, Kalyanam Krishnamoorthy, Phillip R. Chandler, Meir Pachter
2013 C conf
ACC
Kalyanam Krishnamoorthy, Swaroop Darbha, Pramod P. Khargonekar, David W. Casbeer, Phillip R. Chandler, Meir Pachter
2012 conf
Infotech@Aerospace
Kalyanam Krishnamoorthy, Swaroop Darbha, Myoungkuk Park, Meir Pachter, Phillip R. Chandler, David W. Casbeer
2012 C conf
ACC
Kalyanam Krishnamoorthy, Myoungkuk Park, Swaroop Darbha, Meir Pachter, Phillip R. Chandler
2012 conf
Infotech@Aerospace
David W. Casbeer, Kalyanam Krishnamoorthy, Alexa Eggert, Phillip R. Chandler, Meir Pachter
2012 J jnl
Oper. Res. Lett.
Myoungkuk Park, Kalyanam Krishnamoorthy, Swaroop Darbha, Phillip R. Chandler, Meir Pachter
2012 conf
CDC
Kalyanam Krishnamoorthy, David W. Casbeer, Phillip R. Chandler, Meir Pachter, Swaroop Darbha
2011 J jnl
CoRR
Myoungkuk Park, Kalyanam Krishnamoorthy, Swaroop Darbha, Phillip R. Chandler, Meir Pachter
2011 C conf
CCA
Kalyanam Krishnamoorthy, Meir Pachter, Phillip R. Chandler
2011 C conf
ACC
Kalyanam Krishnamoorthy, Meir Pachter, Phillip R. Chandler, David W. Casbeer, Swaroop Darbha
2010 conf
CDC
Swaroop Darbha, Kalyanam Krishnamoorthy, Meir Pachter, Phillip R. Chandler
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