Iris F. A. Vis

33 papers C 1Misc 1Journal 31
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Engineering Management
Lieve A. J. W. Baars, Tri Mikael Tran, Iris F. A. Vis
2023 J jnl
Comput. Oper. Res.
Niels A. Wouda, Ayse Aslan, Iris F. A. Vis
2020 J jnl
Eur. J. Oper. Res.
Ayse Aslan, Ilke Bakir, Iris F. A. Vis
2020 J jnl
Comput. Oper. Res.
Lieke M. van der Heide, Leandro C. Coelho, Iris F. A. Vis, Roel G. van Anholt
2019 J jnl
Transp. Sci.
Albert H. Schrotenboer, Evrim Ursavas, Iris F. A. Vis
2019 J jnl
CoRR
Albert H. Schrotenboer, Susanne Wruck, Iris F. A. Vis, Kees Jan Roodbergen
2017 J jnl
Int. J. Prod. Res.
Susanne Wruck, Iris F. A. Vis, Jaap Boter
2017 J jnl
Transp. Sci.
René de Koster, Kevin R. Gue, Iris F. A. Vis
2017 J jnl
Eur. J. Oper. Res.
Marjolein Veenstra, Kees Jan Roodbergen, Iris F. A. Vis, Leandro C. Coelho
2016 J jnl
Transp. Sci.
Roel G. van Anholt, Leandro C. Coelho, Gilbert Laporte, Iris F. A. Vis
2016 J jnl
Comput. Ind. Eng.
Marjolein Veenstra, Iris F. A. Vis
2014 J jnl
Comput. Ind. Eng.
A. J. J. (Jan) Braaksma, Jasper Veldman, Iris F. A. Vis
2014 J jnl
Eur. J. Oper. Res.
Héctor J. Carlo, Iris F. A. Vis, Kees Jan Roodbergen
2014 J jnl
Eur. J. Oper. Res.
Paul Buijs, Iris F. A. Vis, Héctor J. Carlo
2014 J jnl
Eur. J. Oper. Res.
Héctor J. Carlo, Iris F. A. Vis, Kees Jan Roodbergen
2013 J jnl
J. Oper. Res. Soc.
Susanne Wruck, Iris F. A. Vis, Jaap Boter
2012 J jnl
J. Oper. Res. Soc.
Marco Bijvank, Iris F. A. Vis
2012 J jnl
Eur. J. Oper. Res.
Marco Bijvank, Iris F. A. Vis
2012 Misc conf
WSC
Roel G. van Anholt, Iris F. A. Vis
2011 J jnl
Comput. Ind. Eng.
Iris F. A. Vis, Kees Jan Roodbergen
2011 J jnl
Eur. J. Oper. Res.
Marco Bijvank, Iris F. A. Vis
2010 C conf
PRO-VE
Delia Richardson, Sander de Leeuw, Iris F. A. Vis
2010 J jnl
Eur. J. Oper. Res.
Marco Bijvank, Ger Koole, Iris F. A. Vis
2010 J jnl
OR Spectr.
Iris F. A. Vis, Roel G. van Anholt
2010 J jnl
Transp. Sci.
Iris F. A. Vis, Héctor J. Carlo
2009 J jnl
Eur. J. Oper. Res.
Kees Jan Roodbergen, Iris F. A. Vis
2009 J jnl
Oper. Res.
Iris F. A. Vis, Kees Jan Roodbergen
2008 J jnl
Comput. Ind. Eng.
Iris F. A. Vis, Kees Jan Roodbergen
2006 J jnl
Eur. J. Oper. Res.
Iris F. A. Vis
2005 J jnl
Transp. Sci.
Iris F. A. Vis, René M. B. M. de Koster, Martin W. P. Savelsbergh
2004 J jnl
OR Spectr.
Iris F. A. Vis, Ismael Harika
2003 J jnl
Eur. J. Oper. Res.
Iris F. A. Vis, René M. B. M. de Koster
2001 J jnl
J. Oper. Res. Soc.
Iris F. A. Vis, René de Koster, Kees Jan Roodbergen, Leon W. P. Peeters
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