Ibrahim Sorkhoh

21 papers B 3C 1Journal 10Unranked 7
YearRankTypeTitle / Venue / Authors
2025 conf
NoF
Ibrahim Sorkhoh, Muthucumaru Maheswaran, Emmanuel Thepie Fapi, Zhongwen Zhu
2025 conf
ICC Workshops
Priyavrat Dev Sharma, Ibrahim Sorkhoh, Muthucumaru Maheswaran
2025 J jnl
CoRR
Priyavrat Dev Sharma, Ibrahim Sorkhoh, Muthucumaru Maheswaran
2024 J jnl
CoRR
Majid Ghasemi, Amir Hossein Moosavi, Ibrahim Sorkhoh, Anjali Agrawal, Fadi Alzhouri, Dariush Ebrahimi
2023 B conf
GLOBECOM
Samuel Genois, Ibrahim Sorkhoh, Muthucumaru Maheswaran, Diala Naboulsi
2022 J jnl
IEEE Internet Things J.
Ali Muhammad, Ibrahim Sorkhoh, Moataz Samir, Dariush Ebrahimi, Chadi Assi
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Ibrahim Sorkhoh, Chadi Assi, Dariush Ebrahimi, Sanaa Sharafeddine
2022 conf
ICC
Ibrahim Sorkhoh, Mohamed Amine Arfaoui, Maurice Khabbaz, Chadi Assi
2021 J jnl
IEEE Trans. Netw. Serv. Manag.
Ali Muhammad, Ibrahim Sorkhoh, Long Qu, Chadi Assi
2021 J jnl
IEEE Trans. Intell. Veh.
Mohammad Ekramul Kabir, Ibrahim Sorkhoh, Bassam Moussa, Chadi Assi
2020 J jnl
IEEE Internet Things J.
Ibrahim Sorkhoh, Dariush Ebrahimi, Chadi Assi, Sanaa Sharafeddine, Maurice Khabbaz
2020 conf
CloudNet
Ibrahim Sorkhoh, Dariush Ebrahimi, Sanaa Sharafeddine, Chadi Assi
2019 conf
DIVANet
Ibrahim Sorkhoh, Dariush Ebrahimi, Sanaa Sharafeddine, Chadi Assi
2019 J jnl
IEEE Trans. Veh. Technol.
Ibrahim Sorkhoh, Dariush Ebrahimi, Ribal Atallah, Chadi Assi
2016 conf
ECCV Workshops (2)
Jiun-Yu Kao, Minh Nguyen, Luciano Nocera, Cyrus Shahabi, Antonio Ortega, Carolee J. Winstein, Ibrahim Sorkhoh, Yu-Chen Chung, Yi-An Chen, Helen Bacon
2013 J jnl
Inf. Syst. Frontiers
Ibrahim Sorkhoh, Khaled Mahdi, Maytham Safar
2012 B conf
ASONAM
Ibrahim Sorkhoh, Khaled Mahdi, Maytham Safar
2012 B conf
ASONAM
Ibrahim Sorkhoh, Khaled Mahdi, Maytham Safar
2011 conf
ANT/MobiWIS
Maytham Safar, Ibrahim Sorkhoh, Hisham Farahat, Khaled Mahdi
2010 C conf
iiWAS
Ibrahim Sorkhoh, Khaled Mahdi, Maytham Safar
2009 J jnl
J. Digit. Inf. Manag.
Khaled Mahdi, Maytham Safar, Ibrahim Sorkhoh, Ali Kassem
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