Carlotta Guiducci

17 papers A 2C 1Journal 8Unranked 5
YearRankTypeTitle / Venue / Authors
2017 conf
ICICDT
Carlotta Guiducci
2013 J jnl
IEEE Trans. Biomed. Circuits Syst.
Viswanathan Balasubramanian, Pierre-François Ruedi, Yuksel Temiz, Anna Ferretti, Carlotta Guiducci, Christian C. Enz
2013 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Carlotta Guiducci
2012 conf
EMBC
Elena Bianchi, Enrica Rollo, Samuel Kilchenmann, Francesco M. Bellati, Enrico Accastelli, Carlotta Guiducci
2012 J jnl
Sensors
Stefano Cagnin, Elisa Cimetta, Carlotta Guiducci, Paolo G. V. Martini, Gerolamo Lanfranchi
2010 conf
APCCAS
Carlotta Guiducci, Yuksel Temiz, Yusuf Leblebici, Enrico Accastelli, Anna Ferretti, Giulia Cappi, Elena Bianchi
2009 J jnl
Sensors
Stefano Cagnin, Marcelo Caraballo, Carlotta Guiducci, Paolo G. V. Martini, Marty Ross, Mark SantaAna, David Danley, Todd West, Gerolamo Lanfranchi
2008 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Carlotta Guiducci, Christine Nardini
2008 A conf
DATE
Carlotta Guiducci, Alexandre Schmid, Frank K. Gürkaynak, Yusuf Leblebici
2007 J jnl
IEEE Des. Test Comput.
Luca Benini, Carlotta Guiducci, Christian Paulus
2006 J jnl
IEEE J. Solid State Circuits
Claudio Stagni, Carlotta Guiducci, Luca Benini, Bruno Riccò, Sandro Carrara, Bruno Samorì, Christian Paulus, Meinrad Schienle, Marcin K. Augustyniak, Roland Thewes
2006 conf
ISSCC
Claudio Stagni, D. Esposti, Carlotta Guiducci, Christian Paulus, Meinrad Schienle, Marcin K. Augustyniak, Giampaolo Zuccheri, Bruno Samorì, Luca Benini, Bruno Riccò, Roland Thewes
2006 C conf
VLSI-SoC
Carlotta Guiducci, Claudio Stagni, M. Brocchi, Massimo Lanzoni, Bruno Riccò, Augusto Nascetti, Davide Caputo, Giampiero de Cesare
2006 conf
VLSI-SoC (Selected Papers)
Carlotta Guiducci, Claudio Stagni, M. Brocchi, Massimo Lanzoni, Bruno Riccò, Augusto Nascetti, Davide Caputo, A. De Cesare
2006 J jnl
Microelectron. J.
Luca Benini, Elisabetta Farella, Carlotta Guiducci
2005
Carlotta Guiducci
2005 A conf
DATE
Claudio Stagni, Carlotta Guiducci, Massimo Lanzoni, Luca Benini, Bruno Riccò
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