Mahshid Rahnamay-Naeini

37 papers B 4Misc 4Journal 12Unranked 17
YearRankTypeTitle / Venue / Authors
2022 J jnl
IEEE Trans. Smart Grid
Md. Abul Hasnat, Mahshid Rahnamay-Naeini
2021 B conf
ICCCN
Nathaniel Hudson, Md. Jakir Hossain, Minoo Hosseinzadeh, Hana Khamfroush, Mahshid Rahnamay-Naeini, Nasir Ghani
2021 conf
ISGT-Europe
Md. Jakir Hossain, Mahshid Rahnamay-Naeini
2021 conf
ISGT-Europe
Md. Abul Hasnat, Mahshid Rahnamay-Naeini
2021 conf
ISGT-Europe
Md. Abul Hasnat, Mahshid Rahnamay-Naeini
2020 J jnl
IEEE Syst. J.
Pankaz Das, Rezoan A. Shuvro, Mahshid Rahnamay-Naeini, Kassie Povinelli, Nasir Ghani, Majeed M. Hayat
2020 J jnl
IEEE Trans. Netw. Sci. Eng.
Upama Nakarmi, Mahshid Rahnamay-Naeini, Hana Khamfroush
2020 J jnl
CoRR
Ehsan Siavashi, Mahshid Rahnamay-Naeini
2020 conf
SmartGridComm
Adetola Adeniran, Md. Abul Hasnat, Minoo Hosseinzadeh, Hana Khamfroush, Mahshid Rahnamay-Naeini
2019 J jnl
Appl. Netw. Sci.
Hana Khamfroush, Nathaniel Hudson, Samuel Lofumbwa Iloo, Mahshid Rahnamay-Naeini
2019 J jnl
CoRR
Upama Nakarmi, Mahshid Rahnamay-Naeini, Md. Jakir Hossain, Md. Abul Hasnat
2019 conf
ISGT Europe
Rezoan A. Shuvro, Pankaz Das, Mahshid Rahnamay-Naeini, Francesco Sorrentino, Majeed M. Hayat
2019 conf
GLOBECOM Workshops
Md. Abul Hasnat, Md. Jakir Hossain, Adetola Adeniran, Mahshid Rahnamay-Naeini, Hana Khamfroush
2018 conf
MILCOM
Pankaz Das, Rezoan A. Shuvro, Mahshid Rahnamay-Naeini, Nasir Ghani, Majeed M. Hayat
2018 Misc conf
ICNC
Maede Rayatidamavandi, Frank Conlon, Mahshid Rahnamay-Naeini
2018 J jnl
SIGMETRICS Perform. Evaluation Rev.
Hana Khamfroush, Samuel Lofumbwa Iloo, Mahshid Rahnamay-Naeini
2017 conf
DASC/PiCom/DataCom/CyberSciTech
Maede Rayatidamavandi, Yu Zhuang, Mahshid Rahnamay-Naeini
2017 J jnl
Pervasive Mob. Comput.
Silvia Elena Restrepo, Jorge E. Pezoa, Mahshid Rahnamay-Naeini
2017 conf
SMARTGREENS/VEHITS (Selected Papers)
Upama Nakarmi, Mahshid Rahnamay-Naeini
2017 Misc conf
ICNC
Pankaz Das, Mahshid Rahnamay-Naeini, Nasir Ghani, Majeed M. Hayat
2017 B conf
WiMob
Pankaz Das, Rezoan A. Shuvro, Zhuoyao Wang, Mahshid Rahnamay-Naeini, Nasir Ghani, Majeed M. Hayat
2017 conf
SMARTGREENS
Upama Nakarmi, Mahshid Rahnamay-Naeini
2016 conf
UEMCON
Sreerama Krishna Sama, Mahshid Rahnamay-Naeini
2016 Misc conf
ICNC
Mahshid Rahnamay-Naeini, Sonali Sen Baidya, Ehsan Siavashi, Nasir Ghani
2016 J jnl
IEEE Trans. Smart Grid
Mahshid Rahnamay-Naeini, Majeed M. Hayat
2016 Misc conf
ICNC
Mahshid Rahnamay-Naeini
2015 conf
OFC
Kaile Liang, Mahsa Pourvali, Mahshid Rahnamay-Naeini, Feng Xu, Samee Khan, Nasir Ghani
2015 J jnl
IEEE Trans. Computers
Feng Gu, Khaled B. Shaban, Nasir Ghani, Samee Khan, Mahshid Rahnamay-Naeini, Majeed M. Hayat, Chadi Assi
2014 conf
OFC
Kaile Liang, Hao Bai, Mahshid Rahnamay-Naeini, Feng Xu, M. Batayneh, Majeed M. Hayat, Nasir Ghani
2014 conf
CloudNet
Mahsa Pourvali, Hao Bai, Feng Gu, Khaled B. Shaban, Mahshid Rahnamay-Naeini, Jorge Crichigno, Majeed M. Hayat, Samee Ullah Khan, Nasir Ghani
2014 conf
OFC
Hao Bai, Feng Gu, Kaile Liang, Mahshid Rahnamay-Naeini, Samee Khan, Majeed M. Hayat, Nasir Ghani
2013 B conf
GLOBECOM
Mahshid Rahnamay-Naeini, Nasir Ghani, Majeed M. Hayat
2013 conf
GlobalSIP
Mahshid Rahnamay-Naeini, Majeed M. Hayat
2013 J jnl
JOCN
Kaile Liang, Mahshid Rahnamay-Naeini, Hamed M. K. Alazemi, Nasro Min-Allah, Min Peng, Nasir Ghani
2011 J jnl
J. Comput. Sci. Technol.
Mahshid Rahnamay-Naeini, Masoud Sabaei
2011 conf
CDC/ECC
Zhuoyao Wang, Majeed M. Hayat, Mahshid Rahnamay-Naeini, Yasamin Mostofi, Jorge E. Pezoa
2011 B conf
ICCCN
Mahshid Rahnamay-Naeini, Jorge E. Pezoa, Ghady Azar, Nasir Ghani, Majeed M. Hayat
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