Veronica Tozzo

17 papers A* 3B 1C 1Journal 5Unranked 6
YearRankTypeTitle / Venue / Authors
2022 A* conf
ICML
Lily H. Zhang, Veronica Tozzo, John M. Higgins, Rajesh Ranganath
2022 J jnl
CoRR
Lily H. Zhang, Veronica Tozzo, John M. Higgins, Rajesh Ranganath
2022 J jnl
J. Comput. Biol.
Veronica Tozzo, Chloé-Agathe Azencott, Samuele Fiorini, Emanuele Fava, Andrea Trucco, Annalisa Barla
2021 A* conf
KDD
Veronica Tozzo, Federico Ciech, Davide Garbarino, Alessandro Verri
2021 J jnl
CoRR
Federico Ciech, Veronica Tozzo
2020 C conf
WAW
Davide Garbarino, Veronica Tozzo, Andrea Vian, Annalisa Barla
2020
Veronica Tozzo
2020 conf
PGM
Veronica Tozzo, Davide Garbarino, Annalisa Barla
2020 B conf
ICPR
Federico Tomasi, Veronica Tozzo, Annalisa Barla
2019 conf
COMPLEX NETWORKS (1)
Veronica Tozzo, Annalisa Barla
2018 conf
PGM
Federico Tomasi, Veronica Tozzo, Alessandro Verri, Saverio Salzo
2018 J jnl
CoRR
Veronica Tozzo, Federico Tomasi, Margherita Squillario, Annalisa Barla
2018 A* conf
KDD
Federico Tomasi, Veronica Tozzo, Saverio Salzo, Alessandro Verri
2018 J jnl
CoRR
Federico Tomasi, Veronica Tozzo, Saverio Salzo, Alessandro Verri
2018 conf
MLHC
Vanessa D'Amario, Federico Tomasi, Veronica Tozzo, Gabriele Arnulfo, Annalisa Barla, Lino Nobili
2017 conf
CIBB
Veronica Tozzo, Annalisa Barla
2017 conf
ICCSW
Veronica Tozzo, Vanessa D'Amario, Annalisa Barla
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