Indhumathi Raman

41 papers B 2C 4Journal 22Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Theor. Comput. Sci.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2026 J jnl
Acta Informatica
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2025 conf
CALDAM
Zhidan Feng, Henning Fernau, Kevin Mann, Indhumathi Raman, Silas Cato Sacher
2025 conf
DCFS
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman, György Vaszil
2025 conf
SOFSEM (1)
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2025 conf
UCNC
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2024 J jnl
Int. J. Comput. Math. Comput. Syst. Theory
Indhumathi Raman
2024 C conf
CiE
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2024 J jnl
CoRR
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2024 J jnl
Theor. Comput. Sci.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2024 J jnl
J. Autom. Lang. Comb.
Indhumathi Raman, Lakshmanan Kuppusamy
2024 C conf
MCU
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2023 conf
AFL
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2022 J jnl
Discret. Appl. Math.
Henning Fernau, Lakshmanan Kuppusamy, Rufus O. Oladele, Indhumathi Raman
2022 J jnl
Inf. Comput.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2021 J jnl
Fundam. Informaticae
Henning Fernau, Lakshmanan Kuppusamy, Rufus O. Oladele, Indhumathi Raman
2021 J jnl
Nat. Comput.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2020 conf
Int. Conf. on Membrane Computing
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2020 conf
DCFS
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2019 J jnl
Nat. Comput.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2019 conf
DCFS
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2019 conf
CALDAM
Henning Fernau, Lakshmanan Kuppusamy, Rufus O. Oladele, Indhumathi Raman
2019 B conf
SOFSEM
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2019 J jnl
Acta Informatica
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2018 conf
UCNC
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2018 J jnl
Nat. Comput.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2018 C conf
MCU
Henning Fernau, Lakshmanan Kuppusamy, Rufus O. Oladele, Indhumathi Raman
2018 J jnl
RAIRO Theor. Informatics Appl.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2018 J jnl
J. Autom. Lang. Comb.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2017 C conf
CIAA
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2017 conf
DCFS
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2017 J jnl
J. Autom. Lang. Comb.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2017 J jnl
Theor. Comput. Sci.
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2016 J jnl
Int. J. Comput. Math. Comput. Syst. Theory
Indhumathi Raman
2016 conf
DCFS
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2016 conf
UCNC
Henning Fernau, Lakshmanan Kuppusamy, Indhumathi Raman
2016 J jnl
Int. J. Found. Comput. Sci.
Lakshmanan Kuppusamy, Indhumathi Raman, Kamala Krithivasan
2014 J jnl
J. Comput. Networks Commun.
Indhumathi Raman, Lakshmanan Kuppusamy
2013 J jnl
J. Discrete Algorithms
Indhumathi Raman, Sheshayya A. Choudum
2013 B conf
WALCOM
Indhumathi Raman
2009 J jnl
Inf. Sci.
Sheshayya A. Choudum, Indhumathi Raman
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