Manabu Ito

20 papers B 2Journal 8Unranked 10
YearRankTypeTitle / Venue / Authors
2022 conf
RACS
Manabu Ito, Konstantin Markov
2017 J jnl
Telecommun. Syst.
Manabu Ito, Nozomu Nishinaga, Yoshinori Kitatsuji
2017 B conf
KES
Manabu Ito, Motoki Miura
2016 conf
ICC
Manabu Ito, Nozomu Nishinaga, Yoshinori Kitatsuji, Masayuki Murata
2016 B conf
KES
Manabu Ito, Motoki Miura
2016 J jnl
IEEE Internet Things J.
Manabu Ito, Nozomu Nishinaga, Yoshinori Kitatsuji, Masayuki Murata
2015 conf
GCCE
Manabu Ito, Motoki Miura
2015 conf
GLOBECOM Workshops
Manabu Ito, Nozomu Nishinaga, Yoshinori Kitatsuji
2014 conf
CCNC
Yozo Shoji, Lei Zhong, Manabu Ito, Yoshinori Kitatsuji, Kiyohide Nakauchi, Hidetoshi Yokota
2014 conf
CCNC
Kiyohide Nakauchi, Zhong Lei, Yozo Shoji, Yoshinori Kitatsuji, Manabu Ito, Hidetoshi Yokota
2014 conf
NTMS
Manabu Ito, Kiyohide Nakauchi, Yozo Shoji, Yoshinori Kitatsuji
2014 J jnl
IEEE Access
Manabu Ito, Kiyohide Nakauchi, Yozo Shoji, Nozomu Nishinaga, Yoshinori Kitatsuji
2012 J jnl
Inf. Media Technol.
Manabu Ito, Satoshi Komorita, Yoshinori Kitatsuji, Hidetoshi Yokota
2012 J jnl
J. Inf. Process.
Manabu Ito, Satoshi Komorita, Yoshinori Kitatsuji, Hidetoshi Yokota
2012 J jnl
IEEE Commun. Mag.
Satoshi Komorita, Manabu Ito, Hidetoshi Yokota, Christian Makaya, Benjamin Falchuk, Dana Chee, Subir Das
2011 conf
NGMAST
Manabu Ito, Satoshi Komorita, Yoshinori Kitatsuji, Hidetoshi Yokota
2011 conf
NTMS
Christian Makaya, Benjamin Falchuk, Dana Chee, F. Joe Lin, Subir Das, Manabu Ito, Satoshi Komorita, Tsunehiko Chiba, Hidetoshi Yokota
2007 J jnl
IEICE Trans. Electron.
Manabu Ito, Masato Kon, Chihiro Miyazaki, Noriaki Ikeda, Mamoru Ishizaki, Yoshiko Ugajin, Norimasa Sekine
2003 conf
SAINT Workshops
Yoichi Ishibashi, Shigehiko Watabe, Manabu Ito, Takuyo Kogure, Haruo Hiki, Yoshikazu Tanno, Masaru Kawabata, Hidetoshi Mishima, Chih-Chang Hsu, Fumio Hasegawa
2002 J jnl
Syst. Comput. Jpn.
Yoshikazu Tanno, Fumio Maehara, Satomi Sekiya, Manabu Ito, Hiroshi Tsuyumine, Fumio Hasegawa
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