Nardenio Almeida Martins

14 papers A 1Journal 3Unranked 8
YearRankTypeTitle / Venue / Authors
2022 book
Nardenio Almeida Martins, Douglas Wildgrube Bertol
2020 J jnl
Int. J. Comput. Appl. Technol.
Ebrahim Samer Elyoussef, Nardenio Almeida Martins, Douglas Wildgrube Bertol, Edson Roberto de Pieri, Ubirajara Franco Moreno
2018 J jnl
J. Intell. Fuzzy Syst.
Mauricio Begnini, Douglas Wildgrube Bertol, Nardenio Almeida Martins
2016 J jnl
J. Real Time Image Process.
Danilo Filitto, Júlio Kiyoshi Hasegawa, Airton Marco Polidório, Nardenio Almeida Martins, Franklin César Flores
2015 conf
EUROCON
Pietro Martins de Oliveira, Franklin César Flores, Nardenio Almeida Martins
2012 conf
ICANN (1)
Nardenio Almeida Martins, Maycol de Alencar, Warody C. Lombardi, Douglas Bertol, Edson R. de Pieri, Humberto Filho
2012
Nardenio Almeida Martins
2009 conf
IWANN (2)
Nardenio Almeida Martins, Douglas Bertol, Edson R. de Pieri, Eugênio B. Castelan
2009 conf
ICANN (2)
Nardenio Almeida Martins, Douglas Bertol, Edson R. de Pieri
2008 conf
SBRN
Nardenio Almeida Martins, Douglas Bertol, Warody C. Lombardi, Edson R. de Pieri, Maria M. Dias
2008 conf
CIMCA/IAWTIC/ISE
Nardenio Almeida Martins, Douglas Bertol, Edson R. de Pieri, Eugênio B. Castelan, Maria M. Dias
2005 conf
CIRA
Nardenio Almeida Martins, Maycol de Alencar
2005 A conf
IROS
Nardenio Almeida Martins, Maurício F. Figueiredo, Paulo César Gonçalves, Maycol de Alencar, Francisco Alexandre Ribeiro de Alencar
2003 conf
CIRA
Nardenio Almeida Martins, Maycol de Alencar
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