Carolina Salto

26 papers C 1Misc 1Journal 12Unranked 11
YearRankTypeTitle / Venue / Authors
2023 J jnl
Soft Comput.
Carolina Salto, Gabriela F. Minetti, Enrique Alba, Gabriel Luque
2021 Misc conf
HAIS
Carlos Bermúdez, Hugo Alfonso, Gabriela F. Minetti, Carolina Salto
2021 conf
CACIC
Carlos Bermúdez, Hugo Alfonso, Gabriela F. Minetti, Carolina Salto
2020 conf
CACIC
Carlos Bermudez, Hugo Alfonso, Gabriela F. Minetti, Carolina Salto
2020 J jnl
J. Comput. Sci. Technol.
Carolina Salto, Franco Morero, Carlos Bermúdez
2020 J jnl
J. Comput. Sci. Technol.
Gabriela F. Minetti, José Hernandez, Mercedes Carnero, Carolina Salto, Carlos Bermudez, Mabel Sanchez
2019 J jnl
Appl. Artif. Intell.
Carolina Salto, Enrique Alba
2018 J jnl
J. Comput. Sci. Technol.
Gabriela F. Minetti, Carolina Salto
2018 conf
CAEPIA
Carolina Salto, Gabriela F. Minetti, Enrique Alba, Gabriel Luque
2018 conf
CACIC
Carlos Bermudez, Carolina Salto, Gabriela F. Minetti
2015 J jnl
Trans. Comput. Collect. Intell.
Carolina Salto, Enrique Alba
2014 J jnl
Clust. Comput.
Carolina Salto, Francisco Luna, Enrique Alba
2013 conf
3PGCIC
Carolina Salto, Francisco Luna, Enrique Alba
2013 conf
GECCO (Companion)
Carolina Salto, Francisco Luna, Enrique Alba
2012 J jnl
Appl. Intell.
Carolina Salto, Enrique Alba
2012 conf
3PGCIC
Carolina Salto, Francisco Luna, Enrique Alba
2011 conf
GECCO (Companion)
Carolina Salto, Enrique Alba, Francisco Luna
2010 J jnl
Inteligencia Artif.
Carlos Bermudez, Patricia Graglia, Natalia Stark, Carolina Salto, Hugo Alfonso
2010 conf
IPDPS Workshops
Carolina Salto, Enrique Alba
2009 ch.
Natural Intelligence for Scheduling, Planning and Packing Problems
Carolina Salto, Guillermo Leguizamón, Enrique Alba, Juan M. Molina
2008 J jnl
Inteligencia Artif.
Carolina Salto, Enrique Alba, Juan M. Molina, Guillermo Leguizamón
2008 C conf
HIS
Carolina Salto, Guillermo Leguizamón, Enrique Alba, Juan M. Molina
2007 conf
LSSC
Carolina Salto, Enrique Alba, Juan M. Molina
2006 J jnl
Int. Trans. Oper. Res.
Carolina Salto, Enrique Alba, Juan Miguel Molina
2004 conf
SCCC
Vanina Beraudo, Hugo Alfonso, Gabriela F. Minetti, Carolina Salto
2002 J jnl
Knowl. Based Syst.
Susana C. Esquivel, S. W. Ferrero, Raúl Héctor Gallard, Carolina Salto, Hugo Alfonso, Martin Schütz
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