Jacqueline Urakami

29 papers B 3Journal 14Unranked 12
YearRankTypeTitle / Venue / Authors
2025 conf
CHI Extended Abstracts
Jacqueline Urakami, Toshikazu Kanaoka, Akito Moriwaki
2025 conf
CHI Extended Abstracts
Kosuke Teruyama, Fuko Hisada, Jacqueline Urakami, Masahiro Inagaki, Ryuta Harima, Tomoko Hachiya, Naoyuki Tamai, Tomohiro Ogawa
2025 J jnl
Int. J. Hum. Comput. Stud.
Katie Seaborn, Maximilian Altmeyer, Ge Rikaku Li, Bonhee Ku, Sota Kobuki, Jacqueline Urakami
2024 J jnl
CoRR
Katie Seaborn, Jacqueline Urakami, Peter Pennefather, Norihisa P. Miyake
2024 J jnl
ACM Comput. Surv.
Katie Seaborn, Jacqueline Urakami, Peter Pennefather, Norihisa Miyake
2023 conf
CHI Extended Abstracts
Jacqueline Urakami, Akito Moriwaki, Shotaro Nagao, Kousuke Osumi, Erika Yamamoto, Toshikazu Kanaoka
2023 J jnl
Int. J. Soc. Robotics
Jacqueline Urakami
2023 conf
AHs
Yeongdae Kim, Takane Ueno, Katie Seaborn, Hiroki Oura, Jacqueline Urakami, Yuto Sawa
2023 J jnl
CoRR
Yeongdae Kim, Takane Ueno, Katie Seaborn, Hiroki Oura, Jacqueline Urakami, Yuto Sawa
2023 J jnl
CoRR
Jacqueline Urakami, Katie Seaborn
2023 J jnl
ACM Trans. Hum. Robot Interact.
Jacqueline Urakami, Katie Seaborn
2022 B conf
TEI
Gentiane Venture, Bastien Muraccioli, Marie-Luce Bourguet, Jacqueline Urakami
2022 conf
AIED (2)
Marie-Luce Bourguet, Jacqueline Urakami, Gentiane Venture
2022 conf
CHI Extended Abstracts
Jacqueline Urakami, Yeongdae Kim, Hiroki Oura, Katie Seaborn
2022 J jnl
CoRR
Jacqueline Urakami, Yeongdae Kim, Hiroki Oura, Katie Seaborn
2022 J jnl
Int. J. Hum. Comput. Stud.
Billie Akwa Moore, Jacqueline Urakami
2022 conf
CHI Extended Abstracts
Takane Ueno, Yuto Sawa, Yeongdae Kim, Jacqueline Urakami, Hiroki Oura, Katie Seaborn
2022 J jnl
CoRR
Takane Ueno, Yuto Sawa, Yeongdae Kim, Jacqueline Urakami, Hiroki Oura, Katie Seaborn
2021 J jnl
Int. J. Mob. Commun.
Jacqueline Urakami, Ting Sheng Lim
2021 conf
HRI (Companion)
Jacqueline Urakami, Sujitra Sutthithatip
2021 J jnl
CoRR
Katie Seaborn, Jacqueline Urakami
2021 conf
CHI Extended Abstracts
Katie Seaborn, Jacqueline Urakami
2021 conf
CHI Extended Abstracts
Jacqueline Urakami, You Zhi Hu, Mark H. Chignell
2020 conf
AHFE (17)
Jacqueline Urakami, Anne Morgen Mark
2020 conf
HCI (2)
Jacqueline Urakami, Sujitra Sutthithatip, Billie Akwa Moore
2020 B conf
HAI
Marie-Luce Bourguet, Minghe Xu, Shiyu Zhang, Jacqueline Urakami, Gentiane Venture
2019 B conf
HAI
Jacqueline Urakami, Billie Akwa Moore, Sujitra Sutthithatip, Sung Park
2014 J jnl
Comput. Hum. Behav.
Jacqueline Urakami
2012 J jnl
Hum. Factors
Jacqueline Urakami
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