Jakub Chledowski

12 papers A* 1B 1Misc 1Journal 8Unranked 1
YearRankTypeTitle / Venue / Authors
2025 conf
MedInfo
Jakub Chledowski, Benjamin Stadnick, Jan Witowski, Vishwaesh Rajiv, Farah E. Shamout, Kyunghyun Cho, Krzysztof J. Geras
2024 J jnl
IEEE Trans. Medical Imaging
Jungkyu Park, Jakub Chledowski, Stanislaw Jastrzebski, Jan Witowski, Yanqi Xu, Linda Du, Sushma Gaddam, Eric Kim, Alana Lewin, Ujas Parikh, Anastasia Plaunova, Sardius Chen, Alexandra Millet, James Park, Kristine Pysarenko, Shalin Patel, Julia E. Goldberg, Melanie Wegener, Linda Moy, Laura Heacock, Beatriu Reig, Krzysztof J. Geras
2023 Misc conf
DICTA
Jakub Chledowski, Jungkyu Park, Krzysztof J. Geras
2022 J jnl
CoRR
Jungkyu Park, Jakub Chledowski, Stanislaw Jastrzebski, Jan Witowski, Yanqi Xu, Linda Du, Sushma Gaddam, Eric Kim, Alana Lewin, Ujas Parikh, Anastasia Plaunova, Sardius Chen, Alexandra Millet, James Park, Kristine Pysarenko, Shalin Patel, Julia E. Goldberg, Melanie Wegener, Linda Moy, Laura Heacock, Beatriu Reig, Krzysztof J. Geras
2021 J jnl
Nat. Mach. Intell.
Jungkyu Park, Yoel Shoshan, Robert Martí, Pablo Gómez del Campo, Vadim Ratner, Daniel Khapun, Aviad Zlotnick, Ella Barkan, Flora Gilboa-Solomon, Jakub Chledowski, Jan Witowski, Alexandra Millet, Eric Kim, Alana Lewin, Kristine Pysarenko, Sardius Chen, Julia E. Goldberg, Shalin Patel, Anastasia Plaunova, Melanie Wegener, Stacey Wolfson, Jiyon Lee, Sana Hava, Sindhoora Murthy, Linda Du, Sushma Gaddam, Ujas Parikh, Laura Heacock, Linda Moy, Beatriu Reig, Michal Rosen-Zvi, Krzysztof J. Geras
2021 J jnl
CoRR
Benjamin Stadnick, Jan Witowski, Vishwaesh Rajiv, Jakub Chledowski, Farah E. Shamout, Kyunghyun Cho, Krzysztof J. Geras
2021 A* conf
ICML
Jakub Chledowski, Adam Polak, Bartosz Szabucki, Konrad Tomasz Zolna
2021 J jnl
CoRR
Jakub Chledowski, Adam Polak, Bartosz Szabucki, Konrad Zolna
2021 J jnl
CoRR
Kangning Liu, Yiqiu Shen, Nan Wu, Jakub Chledowski, Carlos Fernandez-Granda, Krzysztof J. Geras
2020 B conf
CoNLL
Tomasz Dwojak, Michal Pietruszka, Lukasz Borchmann, Jakub Chledowski, Filip Gralinski
2020 J jnl
CoRR
Tomasz Dwojak, Michal Pietruszka, Lukasz Borchmann, Jakub Chledowski, Filip Gralinski
2020 J jnl
CoRR
Tomasz Dwojak, Michal Pietruszka, Lukasz Borchmann, Filip Gralinski, Jakub Chledowski
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