Vasiliki Kougia

19 papers Journal 10Unranked 9
YearRankTypeTitle / Venue / Authors
2024 conf
BioNLP@ACL
Vasiliki Kougia, Anastasiia Sedova, Andreas Stephan, Klim Zaporojets, Benjamin Roth
2024 J jnl
CoRR
Vasiliki Kougia, Anastasiia Sedova, Andreas Stephan, Klim Zaporojets, Benjamin Roth
2024 J jnl
CoRR
Yuxi Xia, Anastasiia Sedova, Pedro Henrique Luz de Araujo, Vasiliki Kougia, Lisa Nußbaumer, Benjamin Roth
2023 conf
EMNLP (Findings)
John Pavlopoulos, Vasiliki Kougia, Paraskevi Platanou, Holger Essler
2023 conf
ICDAR Workshops (1)
Asimina Paparrigopoulou, Vasiliki Kougia, Maria Konstantinidou, John Pavlopoulos
2023 conf
ICDAR (1)
Vasiliki Kougia, Simon Fetzel, Thomas Kirchmair, Erion Çano, Sina Moayed Baharlou, Sahand Sharifzadeh, Benjamin Roth
2023 J jnl
CoRR
Vasiliki Kougia, Simon Fetzel, Thomas Kirchmair, Erion Çano, Sina Moayed Baharlou, Sahand Sharifzadeh, Benjamin Roth
2023 J jnl
Artif. Intell. Medicine
Zhendong Wang, Isak Samsten, Vasiliki Kougia, Panagiotis Papapetrou
2022 J jnl
Knowl. Inf. Syst.
John Pavlopoulos, Vasiliki Kougia, Ion Androutsopoulos, Dimitris Papamichail
2022 conf
EMNLP (Findings)
Andreas Stephan, Vasiliki Kougia, Benjamin Roth
2022 J jnl
CoRR
Andreas Stephan, Vasiliki Kougia, Benjamin Roth
2021 conf
CLEF (Working Notes)
Foivos Charalampakos, Vasilis Karatzas, Vasiliki Kougia, John Pavlopoulos, Ion Androutsopoulos
2021 J jnl
CoRR
John Pavlopoulos, Vasiliki Kougia, Ion Androutsopoulos, Dimitris Papamichail
2021 J jnl
J. Am. Medical Informatics Assoc.
Vasiliki Kougia, John Pavlopoulos, Panagiotis Papapetrou, Max Gordon
2020 conf
CLEF (Working Notes)
Basil Karatzas, John Pavlopoulos, Vasiliki Kougia, Ion Androutsopoulos
2020 conf
CLEF
Vasiliki Kougia, John Pavlopoulos, Ion Androutsopoulos
2020 J jnl
CoRR
Vasiliki Kougia, John Pavlopoulos, Panagiotis Papapetrou, Max Gordon
2019 J jnl
CoRR
Vasiliki Kougia, John Pavlopoulos, Ion Androutsopoulos
2019 conf
CLEF (Working Notes)
Vasiliki Kougia, John Pavlopoulos, Ion Androutsopoulos
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