Naoto Ienaga

34 papers A* 2B 1C 1Journal 14Unranked 16
YearRankTypeTitle / Venue / Authors
2025 conf
HAPTICS
Kaisei Akimoto, Jiayi Xu, Akiko Kaneko, Naoto Ienaga, Yoshihiro Kuroda
2025 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Shota Takahashi, Hiroshi Fujimoto, Katsuhiro Nasu, Toshiya Nakaguchi, Naoto Ienaga, Yoshihiro Kuroda
2025 conf
HAPTICS
Takato Ito, Takeshi Tanabe, Shoichi Hasegawa, Naoto Ienaga, Yoshihiro Kuroda
2024 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Hisako Tomita, Naoto Ienaga, Hiroki Kajita, Tetsu Hayashida, Maki Sugimoto
2024 J jnl
CoRR
Souta Mizuno, Jiayi Xu, Shoichi Hasegawa, Naoto Ienaga, Yoshihiro Kuroda
2024 J jnl
IEEE Access
Kengo Kato, Daisuke Kon, Katsuhiko Ueda, Cláudia Sá dos Reis, Naoto Ienaga, Yoshihiro Kuroda
2024 J jnl
CoRR
Takato Ito, Takeshi Tanabe, Shoichi Hasegawa, Naoto Ienaga, Yoshihiro Kuroda
2024 J jnl
IEEE Access
Kaixu Chen, Jiayi Xu, Tomoyuki Asada, Kousei Miura, Kotaro Sakashita, Takahiro Sunami, Hideki Kadone, Masashi Yamazaki, Naoto Ienaga, Yoshihiro Kuroda
2024 conf
ICAT-EGVE
Yoshihiro Kuroda, Shogo Tamaki, Jiayi Xu, Shoichi Hasegawa, Naoto Ienaga
2023 J jnl
CoRR
Yuki Hara, Noriyuki Kadoya, Naoto Mitsume, Naoto Ienaga, Rei Umezawa, Keiichi Jingu, Yoshihiro Kuroda
2023 J jnl
CoRR
Jiayi Xu, Shoichi Hasegawa, Kiyoshi Kiyokawa, Naoto Ienaga, Yoshihiro Kuroda
2023 J jnl
IEEE Trans. Haptics
Jiayi Xu, Shoichi Hasegawa, Kiyoshi Kiyokawa, Naoto Ienaga, Yoshihiro Kuroda
2023 conf
WHC
Koyo Makino, Jiayi Xu, Akiko Kaneko, Naoto Ienaga, Yoshihiro Kuroda
2023 J jnl
CoRR
Koyo Makino, Jiayi Xu, Akiko Kaneko, Naoto Ienaga, Yoshihiro Kuroda
2022 conf
VISIGRAPP (Revised Selected Papers)
Hitoshi Yoshihashi, Naoto Ienaga, Maki Sugimoto
2022 J jnl
Lang. Resour. Evaluation
Naoto Ienaga, Alice Cravotta, Kei Terayama, Bryan W. Scotney, Hideo Saito, Maria Grazia Busà
2022 conf
VISIGRAPP (5: VISAPP)
Hitoshi Yoshihashi, Naoto Ienaga, Maki Sugimoto
2022 B conf
SAP
Kye Shimizu, Naoto Ienaga, Kazuma Takada, Maki Sugimoto, Shunichi Kasahara
2022 J jnl
IEEE Trans. Haptics
Jiayi Xu, Shunsuke Yoshimoto, Naoto Ienaga, Yoshihiro Kuroda
2022 J jnl
CoRR
Jiayi Xu, Shunsuke Yoshimoto, Naoto Ienaga, Yoshihiro Kuroda
2022 J jnl
Lang. Resour. Evaluation
Naoto Ienaga, Alice Cravotta, Kei Terayama, Bryan W. Scotney, Hideo Saito, Maria Grazia Busà
2022 conf
ICAT-EGVE (Posters and Demos)
Tohru Takechi, Fumihiko Nakamura, Masaaki Fukuoka, Naoto Ienaga, Maki Sugimoto
2019 conf
HCI (34)
Kaho Kato, Naoto Ienaga, Yuta Sugiura
2019 conf
LifeTech
Naoto Ienaga, Yuta Sugiura, Hideo Saito, Koji Fujita
2019 conf
APMAR
Yuki Ishikawa, Ryo Hachiuma, Naoto Ienaga, Wakaba Kuno, Yuta Sugiura, Hideo Saito
2018 conf
ACCV Workshops
Naoto Ienaga, Wataru Kawai, Koji Fujita, Natsuki Miyata, Yuta Sugiura, Hideo Saito
2017 A* conf
VR
Shohei Mori, Momoko Maezawa, Naoto Ienaga, Hideo Saito
2017 C conf
ICPRAM
Naoto Ienaga, Yuko Ozasa, Hideo Saito
2017 conf
WACV Workshops
Naoto Ienaga, Yuko Ozasa, Hideo Saito
2016 conf
ISMAR Adjunct
Shohei Mori, Momoko Maezawa, Naoto Ienaga, Hideo Saito
2016 conf
ISMAR Adjunct
Naoto Ienaga, Felix Bork, Siim Meerits, Shohei Mori, Pascal Fallavollita, Nassir Navab, Hideo Saito
2016 conf
ACCV Workshops (2)
Naoto Ienaga, Hideo Saito
2015 conf
CAIP (1)
Naoto Ienaga, Hideo Saito, Kouichi Tezuka, Yasumasa Iwamura, Masayoshi Shimizu
2015 A* conf
ISMAR
Yuichi Hiroi, Kei Obata, Katsuhiro Suzuki, Naoto Ienaga, Maki Sugimoto, Hideo Saito, Tadashi Takamaru
tests/unit/test_decompile_arch.py
← Index tests/unit/test_decompile_arch.py python
"""Unit tests for architecture modules:
- bninja/arch/creator.py
- bninja/arch/x86.py
"""
import sys
import pytest

# Install binaryninja stubs before importing arch modules
from tests.unit.conftest_binja_stubs import install_binja_stubs
install_binja_stubs()

from redb.extractors.decompiler.bninja.arch.creator import ArchitectureCreator
from redb.extractors.decompiler.bninja.arch.x86 import Arch_x86


# ============================================================================
# 3a. ArchitectureCreator
# ============================================================================

class TestArchitectureCreator:
    def test_create_x86(self):
        arch = ArchitectureCreator("x86").get()
        assert isinstance(arch, Arch_x86)

    def test_create_x86_case_insensitive(self):
        for name in ["X86", "x86", "X86"]:
            arch = ArchitectureCreator(name).get()
            assert isinstance(arch, Arch_x86)

    def test_unsupported_arch_raises(self):
        with pytest.raises(ValueError, match="Unsupported architecture"):
            ArchitectureCreator("arm").get()


# ============================================================================
# 3b. Arch_x86
# ============================================================================

class TestArch_x86Registers:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_is_register_valid(self):
        assert self.arch.is_register("RAX") is True
        assert self.arch.is_register("eax") is True
        assert self.arch.is_register("XMM0") is True

    def test_is_register_invalid(self):
        assert self.arch.is_register("INVALID_REG") is False

    def test_is_general_purpose_register(self):
        assert self.arch.is_general_purpose_register("RAX") is True
        assert self.arch.is_general_purpose_register("XMM0") is False

    def test_is_stack_register(self):
        assert self.arch.is_stack_register("RSP") is True
        assert self.arch.is_stack_register("RBP") is True
        assert self.arch.is_stack_register("RAX") is False

    def test_is_xmm_register(self):
        assert self.arch.is_xmm_register("XMM0") is True
        assert self.arch.is_xmm_register("RAX") is False


class TestArch_x86OpcodeCategories:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_opcode_categories_populated(self):
        assert len(self.arch.opcode_categories) > 0

    def test_opcode_mov_category(self):
        assert self.arch.opcode_categories["MOV"] == "DATA_MOVEMENT"

    def test_opcode_call_category(self):
        assert self.arch.opcode_categories["CALL"] == "CONTROL_FLOW"

    def test_opcode_add_category(self):
        assert self.arch.opcode_categories["ADD"] == "ARITHMETIC"


class TestArch_x86ControlFlow:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_is_control_flow_instruction_by_mnemonic(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("JMP") is True
        assert self.arch.is_control_flow_instruction_by_mnemonic("MOV") is False

    def test_is_control_flow_instruction_call(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("CALL") is True

    def test_is_control_flow_instruction_ret(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("RET") is True

    def test_is_control_flow_instruction_loop(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("LOOP") is True

    def test_is_control_flow_instruction_empty(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("") is False
        assert self.arch.is_control_flow_instruction_by_mnemonic(None) is False