M. E. J. Newman

58 papers A* 1Journal 57
YearRankTypeTitle / Venue / Authors
2026 J jnl
Stat. Comput.
M. E. J. Newman
2025 J jnl
CoRR
Austin Polanco, M. E. J. Newman
2024 J jnl
CoRR
Maximilian Jerdee, Alec Kirkley, M. E. J. Newman
2023 J jnl
J. Mach. Learn. Res.
M. E. J. Newman
2023 J jnl
CoRR
Austin Polanco, M. E. J. Newman
2023 J jnl
CoRR
Maximilian Jerdee, M. E. J. Newman
2023 J jnl
CoRR
Maximilian Jerdee, Alec Kirkley, M. E. J. Newman
2022 J jnl
CoRR
Santo Fortunato, M. E. J. Newman
2022 A* conf
INFOCOM
Kirtus G. Leyba, Joshua J. Daymude, Jean-Gabriel Young, M. E. J. Newman, Jennifer Rexford, Stephanie Forrest
2022 J jnl
CoRR
Kirtus G. Leyba, Joshua J. Daymude, Jean-Gabriel Young, M. E. J. Newman, Jennifer Rexford, Stephanie Forrest
2022 J jnl
CoRR
M. E. J. Newman
2022 J jnl
CoRR
M. E. J. Newman
2022 J jnl
CoRR
M. E. J. Newman
2021 J jnl
J. Complex Networks
Jean-Gabriel Young, George T. Cantwell, M. E. J. Newman
2021 J jnl
CoRR
Jean-Gabriel Young, Alec Kirkley, M. E. J. Newman
2021 J jnl
CoRR
Alec Kirkley, M. E. J. Newman
2021 J jnl
J. Complex Networks
George T. Cantwell, Alec Kirkley, M. E. J. Newman
2020 J jnl
CoRR
Alec Kirkley, George T. Cantwell, M. E. J. Newman
2020 J jnl
CoRR
Jean-Gabriel Young, George T. Cantwell, M. E. J. Newman
2020 J jnl
CoRR
George T. Cantwell, Alec Kirkley, M. E. J. Newman
2019 J jnl
CoRR
Maria A. Riolo, M. E. J. Newman
2019 J jnl
CoRR
M. E. J. Newman, George T. Cantwell, Jean-Gabriel Young
2019 J jnl
CoRR
George T. Cantwell, M. E. J. Newman
2019 J jnl
CoRR
M. E. J. Newman
2019 J jnl
CoRR
M. E. J. Newman, Xiao Zhang, Raj Rao Nadakuditi
2019 J jnl
CoRR
Elizabeth E. Bruch, M. E. J. Newman
2018 J jnl
CoRR
Elizabeth E. Bruch, M. E. J. Newman
2018 J jnl
CoRR
Alec Kirkley, George T. Cantwell, M. E. J. Newman
2018 J jnl
CoRR
George T. Cantwell, M. E. J. Newman
2018 J jnl
CoRR
M. E. J. Newman
2017 J jnl
CoRR
M. E. J. Newman
2016 J jnl
CoRR
M. E. J. Newman
2016 J jnl
CoRR
M. E. J. Newman, Gesine Reinert
2016 J jnl
CoRR
Xiao Zhang, Cristopher Moore, M. E. J. Newman
2015 J jnl
CoRR
Pan Zhang, Cristopher Moore, M. E. J. Newman
2015 J jnl
CoRR
M. E. J. Newman, Tiago P. Peixoto
2014 J jnl
CoRR
M. E. J. Newman, Travis Martin
2014 J jnl
J. Complex Networks
Maria A. Riolo, M. E. J. Newman
2014 J jnl
CoRR
Travis Martin, Xiao Zhang, M. E. J. Newman
2013 J jnl
CoRR
Travis Martin, Brian Ball, Brian Karrer, M. E. J. Newman
2013 J jnl
CoRR
M. E. J. Newman
2013 J jnl
Netw. Sci.
Brian Ball, M. E. J. Newman
2013 J jnl
CoRR
M. E. J. Newman
2013 J jnl
CoRR
M. E. J. Newman
2013 J jnl
CoRR
M. E. J. Newman
2013 J jnl
CoRR
Seth A. Marvel, Travis Martin, Charles R. Doering, David Lusseau, M. E. J. Newman
2012 J jnl
CoRR
Maria A. Riolo, M. E. J. Newman
2012 J jnl
CoRR
Brian Ball, M. E. J. Newman
2012 J jnl
CoRR
Raj Rao Nadakuditi, M. E. J. Newman
2012 J jnl
CoRR
Raj Rao Nadakuditi, M. E. J. Newman
2011 J jnl
CoRR
Brian Ball, Brian Karrer, M. E. J. Newman
2011 J jnl
CoRR
Brian Karrer, M. E. J. Newman
2010 J jnl
CoRR
Brian Karrer, M. E. J. Newman
2010 J jnl
CoRR
Brian Karrer, M. E. J. Newman
2009 J jnl
CoRR
Gourab Ghoshal, Vinko Zlatic, Guido Caldarelli, M. E. J. Newman
2006 J jnl
CoRR
Mason A. Porter, Peter J. Mucha, M. E. J. Newman, Arthur J. Friend
2005 J jnl
Soc. Networks
M. E. J. Newman
2005 J jnl
CoRR
Mason A. Porter, Peter J. Mucha, M. E. J. Newman, Casey M. Warmbrand
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