Victor Flores Mendes

12 papers Journal 6Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Access
Pedro Paulo Fontolan de Faria, Victor Flores Mendes
2024 J jnl
Comput. Electr. Eng.
Herbert O. Ramos, Hugo R. Torquato, Marcos A. S. Mendes, Frederico F. V. Matos, Clodualdo Venicio De Sousa, Waner Wodson Aparecido Goncalves Silva, Victor Flores Mendes
2023 J jnl
Int. J. Circuit Theory Appl.
Lucas S. Xavier, Clodualdo Venicio De Sousa, Heverton Augusto Pereira, Victor Flores Mendes
2021 J jnl
IEEE Access
Guilherme Monteiro De Rezende, Matheus Vieira De Almeida, Tiago De Sá Ferreira, Clodualdo Venicio De Sousa, Victor Flores Mendes
2018 conf
ICIT
Frederico F. V. Matos, Herbert O. Ramos, Caio E. Oliveira, Victor Flores Mendes, Marcos A. S. Mendes, Thierry Meynard
2018 conf
LARS/SBR/WRE
Vitor Gabriel Reis Caitité, Diego Maradona Goncalves dos Santos, Iago Conceicao Gregorio, Willian Braga da Silva, Victor Flores Mendes
2018 J jnl
Microelectron. Reliab.
E. M. S. Brito, Allan Fagner Cupertino, Paula Diaz Reigosa, Yongheng Yang, Victor Flores Mendes, Heverton Augusto Pereira
2018 J jnl
Microelectron. Reliab.
R. C. de Barros, E. M. S. Brito, Giovani G. Rodrigues, Victor Flores Mendes, Allan Fagner Cupertino, Heverton Augusto Pereira
2015 conf
ISIE
João Henrique De Oliveira, Luan P. Carlette, Allan Fagner Cupertino, Victor Flores Mendes, Wallace C. Boaventura, Heverton Augusto Pereira
2015 conf
ISIE
Guilherme V. Santos, Allan Fagner Cupertino, Victor Flores Mendes, Seleme I. Seleme Jr.
2015 conf
ISIE
Allan Fagner Cupertino, Guilherme V. Santos, Heverton Augusto Pereira, Selênio R. Silva, Victor Flores Mendes
2015 conf
ISIE
Lucas S. Xavier, João Henrique De Oliveira, Allan Fagner Cupertino, Victor Flores Mendes, Heverton Augusto Pereira
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