Madoka Nakamura

13 papers C 2Journal 2Unranked 9
YearRankTypeTitle / Venue / Authors
2021 J jnl
EURASIP J. Wirel. Commun. Netw.
Takuya Shitomi, Noriyuki Shirai, Akihiko Sato, Shogo Kawashima, Tomoya Ijiguchi, Hiroaki Miyasaka, Shingo Asakura, Tomoaki Takeuchi, Kohei Kambara, Madoka Nakamura, Tsuyoshi Nakatogawa, Masahiro Okano, Kenichi Tsuchida
2020 C conf
ICCE
Hiroaki Miyasaka, Tomoaki Takeuchi, Madoka Nakamura, Masahiro Okano, Kenichi Tsuchida
2019 conf
BMSB
Madoka Nakamura, Yoshikazu Narikiyo, Kenichi Murayama, Akihiko Sato, Hiroaki Miyasaka, Shingo Asakura, Takuya Shitomi, Noriyuki Shirai, Tomoaki Takeuchi, Masahiro Okano, Kenichi Tsuchida
2019 conf
EuCNC
Takuya Shitomi, Akihiko Sato, Noriyuki Shirai, Tsuyoshi Nakatogawa, Masahiro Okano, Shogo Kawashima, Tomoya Ijiguchi, Hiroaki Miyasaka, Shingo Asakura, Tomoaki Takeuchi, Madoka Nakamura, Kenichi Tsuchida
2019 conf
BMSB
Noriyuki Shirai, Madoka Nakamura, Tsuyoshi Nakatogawa, Masahiro Okano, Yoshikazu Narikiyo, Kenji Suzuki, Akira Mizuguchi, Nobuyuki Sato, Ryu Watanabe, Kenichi Tsuchida, Shogo Kawashima, Tomoya Ijiguchi, Yuki Yamakami, Akihiko Sato, Hiroaki Miyasaka, Shingo Asakura, Takuya Shitomi, Tomoaki Takeuchi
2019 conf
BMSB
Akihiko Sato, Takuya Shitomi, Tomoaki Takeuchi, Madoka Nakamura, Masahiro Okano, Kenichi Tsuchida
2017 conf
BMSB
Shingo Asakura, Hiroaki Miyasaka, Madoka Nakamura, Kenichi Murayama, Kenichi Tsuchida, Christian Rodrigues, Gabriel Ferraresso
2016 conf
BMSB
Yoshikazu Narikiyo, Hiroaki Miyasaka, Tomoaki Takeuchi, Madoka Nakamura, Kenichi Tsuchida
2016 C conf
ISITA
Shingo Asakura, Makoto Tanahashi, Madoka Nakamura, Masahiro Okano, Kenichi Tsuchida
2015 conf
BMSB
Hiroaki Miyasaka, Yoshikazu Narikiyo, Madoka Nakamura, Masahiro Okano, Kenichi Tsuchida, Masayuki Takada
2013 conf
BMSB
Yoshikazu Narikiyo, Madoka Nakamura, Hitoshi Sanei, Masayuki Takada
2012 conf
BMSB
Madoka Nakamura, Yoshikazu Narikiyo, Hitoshi Sanei, Masahiro Okano, Masayuki Takada
2011 J jnl
IEICE Trans. Commun.
Kimiyuki Oyamada, Tsuyoshi Nakatogawa, Madoka Nakamura
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