Iga Rudawska

18 papers B 4Journal 1Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eng. Appl. Artif. Intell.
Jaroslaw Watróbski, Iga Rudawska, Aleksandra Baczkiewicz, Jowita Rudawska
2025 conf
ICCS (Workshops 2)
Aleksandra Baczkiewicz, Jaroslaw Watróbski, Iga Rudawska
2024 conf
ICCS (4)
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2024 conf
ISD
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2024 conf
PACIS
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2024 conf
AMCIS
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2023 conf
ACIIDS (Companion)
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Robert Król, Iga Rudawska
2023 conf
PACIS
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2023 conf
ISD
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Robert Król, Iga Rudawska
2023 conf
AMCIS
Jaroslaw Watróbski, Iga Rudawska, Aleksandra Baczkiewicz
2022 B conf
KES
Iga Rudawska
2022 B conf
KES
Malgorzata Porada Rochon, Iga Rudawska, Barbara Kryk, Malgorzata Godlewskad, Sylwia Morawska, Przemyslaw Banasik, Daria Jaskula, Natalia Skalska
2022 conf
ISD
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2022 conf
ISD
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2022 conf
AMCIS
Jaroslaw Watróbski, Aleksandra Baczkiewicz, Iga Rudawska
2021 B conf
KES
Iga Rudawska
2020 B conf
KES
Iga Rudawska
2006 conf
GfKl
Iga Rudawska, Adam Sagan
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