Manaswini Piduguralla

17 papers C 3Misc 4Journal 7Unranked 3
YearRankTypeTitle / Venue / Authors
2026 Misc conf
ICDCIT
Phani Sahasra Akkinepally, Manaswini Piduguralla, Sushant Joshi, Sathya Peri, Sandeep S. Kulkarni
2025 C conf
SSS
Sanyam Kaul, Manaswini Piduguralla, Gayathri Shreeya Patnala, Sathya Peri
2025 conf
Euro-Par (3)
Chryssis Georgiou, Manaswini Piduguralla, Sathya Peri
2025 J jnl
CoRR
Chryssis Georgiou, Manaswini Piduguralla, Sathya Peri
2025 J jnl
CoRR
Sanyam Kaul, Manaswini Piduguralla, Gayathri Shreeya Patnala, Sathya Peri
2025 C conf
PRDC
Ankit Ravish, Yaron Hay, Manaswini Piduguralla, Rishabh Jain, Roy Friedman, Sathya Peri
2025 J jnl
CoRR
Phani Sahasra Akkinepally, Manaswini Piduguralla, Sushant Joshi, Sathya Peri, Sandeep S. Kulkarni
2025 C conf
SSS
Ajay D. Kshemkalyani, Manaswini Piduguralla, Sathya Peri, Anshuman Misra
2025 Misc conf
ICDCN
Ajay D. Kshemkalyani, Manaswini Piduguralla, Sathya Peri, Anshuman Misra
2025 Misc conf
ICDCIT
Ankit Ravish, Akshay Tejwani, Manaswini Piduguralla, Sathya Peri
2024 conf
NCC
Manaswini Piduguralla, Jignesh S. Bhatt
2024 J jnl
CoRR
Ajay D. Kshemkalyani, Manaswini Piduguralla, Sathya Peri, Anshuman Misra
2024 Misc conf
ICDCN
Manaswini Piduguralla, Souvik Sarkar, Sathya Peri
2024 J jnl
CoRR
Ankit Ravish, Akshay Tejwani, Manaswini Piduguralla, Sathya Peri
2023 J jnl
CoRR
Manaswini Piduguralla, Saheli Chakraborty, Parwat Singh Anjana, Sathya Peri
2023 conf
Euro-Par
Manaswini Piduguralla, Saheli Chakraborty, Parwat Singh Anjana, Sathya Peri
2021 J jnl
CoRR
Manaswini Piduguralla, Jignesh S. Bhatt
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