Oren Solomon

19 papers Misc 5Journal 12Unranked 2
YearRankTypeTitle / Venue / Authors
2023 J jnl
Medical Image Anal.
Oren Solomon, Rémi Patriat, Henry Braun, Tara E. Palnitkar, Steen Moeller, Edward J. Auerbach, Kâmil Ugurbil, Guillermo Sapiro, Noam Harel
2021 J jnl
IEEE Trans. Medical Imaging
Ruud J. G. van Sloun, Oren Solomon, Matthew Bruce, Zin Z. Khaing, Hessel Wijkstra, Yonina C. Eldar, Massimo Mischi
2020 J jnl
IEEE Access
Jinyoung Kim, Rémi Patriat, Jordan Kaplan, Oren Solomon, Noam Harel
2020 J jnl
CoRR
Jinyoung Kim, Rémi Patriat, Jordan Kaplan, Oren Solomon, Noam Harel
2020 J jnl
IEEE Trans. Medical Imaging
Oren Solomon, Regev Cohen, Yi Zhang, Yi Yang, Qiong He, Jianwen Luo, Ruud J. G. van Sloun, Yonina C. Eldar
2019 Misc conf
ICASSP
Regev Cohen, Yi Zhang, Oren Solomon, Daniel Toberman, Liran Taieb, Ruud J. G. van Sloun, Yonina C. Eldar
2019 Misc conf
ICASSP
Ruud J. G. van Sloun, Oren Solomon, Matthew Bruce, Zin Z. Khaing, Yonina C. Eldar, Massimo Mischi
2019 J jnl
SIAM J. Imaging Sci.
Oren Solomon, Yonina C. Eldar, Maor Mutzafi, Mordechai Segev
2019 Misc conf
ICASSP
Oren Solomon, Ruud J. G. van Sloun, Massimo Mischi, Yonina C. Eldar
2018 J jnl
CoRR
Oren Solomon, Regev Cohen, Yi Zhang, Yi Yang, Qiong He, Jianwen Luo, Ruud J. G. van Sloun, Yonina C. Eldar
2018 J jnl
CoRR
Ruud J. G. van Sloun, Oren Solomon, Matthew Bruce, Zin Z. Khaing, Hessel Wijkstra, Yonina C. Eldar, Massimo Mischi
2018 Misc conf
ICASSP
Shahar Tsiper, Oren Solomon, Yonina C. Eldar
2017 J jnl
IEEE Trans. Medical Imaging
Avinoam David Bar-Zion, Charles Tremblay-Darveau, Oren Solomon, Dan Adam, Yonina C. Eldar
2017 Misc conf
ICASSP
Oren Solomon, Maor Mutzafi, Mordechai Segev, Yonina C. Eldar
2016 J jnl
CoRR
Eliel Hojman, Thomas Chaigne, Oren Solomon, Sylvain Gigan, Emmanuel Bossy, Yonina C. Eldar, Ori Katz
2015 J jnl
Int. J. Control
Oren Solomon, Emilia Fridman
2014 conf
CDC
Oren Solomon, Emilia Fridman
2013 J jnl
Autom.
Oren Solomon, Emilia Fridman
2013 conf
CDC
Oren Solomon, Emilia Fridman
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