Nan Wei

23 papers A* 1A 2B 1C 2Journal 16Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Internet Things J.
Nan Wei, Zhuangcheng Wu, Lihua Yin, Xiao Cai
2026 J jnl
Scientometrics
Nan Wei, Zifeng Li, Quan Gao, Yi Yu, Jing Xie
2025 J jnl
IEEE Geosci. Remote. Sens. Lett.
Lin Wang, Henggang Lei, Wenbin Jian, Wenjia Wang, Hao Wang, Nan Wei
2025 J jnl
IEEE Trans. Inf. Forensics Secur.
Xiao Cai, Yanbin Sun, Xiangpeng Xie, Nan Wei, Kaibo Shi, Huaicheng Yan, Zhihong Tian
2025 B conf
IJCNN
Weijie Zhou, Nan Wei, Longyu Jiang
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Nan Wei, Lihua Yin, Jingyi Tan, Chuhong Ruan, Chuang Yin, Zhe Sun, Xi Luo
2023 J jnl
Inf. Sci.
Nan Wei, Lihua Yin, Xiaoming Zhou, Chuhong Ruan, Yibo Wei, Xi Luo, Youyi Chang, Zhao Li
2023 J jnl
IEEE Access
Yili Hu, Yaru Ding, Nan Wei, Xinhui Li, Jianping Li, Jijie Ma, Zhonghua Zhang, Guangming Cheng, Jianming Wen
2023 J jnl
IEEE Internet Things J.
Xianglin Wei, Lingfeng Cai, Nan Wei, Peng Zou, Jin Zhang, Suresh Subramaniam
2023 J jnl
Remote. Sens.
Wanyi Lin, Hua Yuan, Wenzong Dong, Shupeng Zhang, Shaofeng Liu, Nan Wei, Xingjie Lu, Zhongwang Wei, Ying Hu, Yongjiu Dai
2023 J jnl
J. Intell. Fuzzy Syst.
Shu Wang, Nan Wei, Jie Zhu, Qinzheng Xu
2021 J jnl
Comput. Medical Imaging Graph.
Ranyang Li, Junjun Pan, Yongming Yang, Nan Wei, Bin Yan, Hao Liu, Yunsheng Yang, Hong Qin
2020 J jnl
Int. J. Wavelets Multiresolution Inf. Process.
Guiliang Li, Changjun Li, Nan Wei
2020 J jnl
Briefings Bioinform.
Yunxia An, Nan Wei, Xiangsong Cheng, Ying Li, Haiyang Liu, Jia Wang, Zhiwei Xu, Zhifu Sun, Xiaoju Zhang
2019 C conf
IWDW
Zhongliang Yang, Nan Wei, Qinghe Liu, Yongfeng Huang, Yujin Zhang
2019 J jnl
Sensors
Päivi Grönroos, Nur-E.-Habiba, Kalle Salminen, Marja Nissinen, Tomi Tuomaala, Kim Miikki, Qiang Zhang, Nan Wei, Esko I. Kauppinen, Jarkko Eskola, Harri Härmä, Sakari Kulmala
2019 J jnl
CoRR
Sadaqat ur Rehman, Zhongliang Yang, Muhammad Shahid, Nan Wei, Yongfeng Huang, Muhammad Waqas, Shan-Shan Tu, Obaid Ur Rehman
2018 A* conf
IJCAI
Yuanyu Wan, Nan Wei, Lijun Zhang
2018 J jnl
CoRR
Zhongliang Yang, Nan Wei, Junyi Sheng, Yongfeng Huang, Yu-Jin Zhang
2017 C conf
ACC
Shiyi Yang, Nan Wei, Soo Jeon, Ricardo Bencatel, Anouck R. Girard
2016 conf
AIM
Nan Wei, Soo Jeon
2016 A conf
IROS
Nan Wei, Soo Jeon
2013 A conf
ICDAR
Rongsha Li, Liangrui Peng, Endong Xun, Nan Wei
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