Maaike Harbers

42 papers A 3B 4C 1Journal 10Unranked 22
YearRankTypeTitle / Venue / Authors
2025 J jnl
Ethics Inf. Technol.
Tijs Portegies, Oumaima Hajri, Lotte M. Willemsen, Maaike Harbers
2025 J jnl
CoRR
Frederik J. Zuiderveen Borgesius, Marvin van Bekkum, Iris van Ooijen, Gabi Schaap, Maaike Harbers, Tjerk Timan
2024 conf
HHAI Workshops
Maaike Harbers, Oumaima Hajri, Nathalie Stembert
2024 conf
HHAI Workshops
Roland van Dierendonck, Márcio Fuckner, Maaike Harbers, Sophie Horsman, Tiwánee van der Horst, Fabian Kok, Stefan Leijnen, Marieke Peeters, Saskia Robben, Pascal Wiggers
2023 conf
INTERACT (3)
Shakila Shayan, Marlies van Steenbergen, Koen van Turnhout, Zelda Zeegers, Somaya Ben Allouch, Maaike Harbers, Guido Evertzen, Janna Bruijning, Wieke van Boxtel, Katarina Jerkovich
2023 conf
INTERACT (4)
Tina Mioch, Nathalie Stembert, Cathelijn Timmers, Oumaima Hajri, Pascal Wiggers, Maaike Harbers
2021 J jnl
Ethics Inf. Technol.
Batya Friedman, Maaike Harbers, David G. Hendry, Jeroen van den Hoven, Catholijn M. Jonker, Nick Logler
2021 J jnl
Ethics Inf. Technol.
Batya Friedman, Maaike Harbers, David G. Hendry, Jeroen van den Hoven, Catholijn M. Jonker, Nick Logler
2021 J jnl
Ethics Inf. Technol.
Maaike Harbers
2019 conf
EICS Workshops
Maaike Harbers, Mortaza S. Bargh, Florian Cramer, Sunil Choenni, Jeannette Nijkamp, Anne Nigten
2018 conf
HICSS
Maaike Harbers, Mortaza S. Bargh, Ronald Pool, Jasper Van Berkel, Susan W. van den Braak, Sunil Choenni
2017 J jnl
Cogn. Technol. Work.
Maaike Harbers, Mark A. Neerincx
2016 J jnl
Comput. Hum. Behav.
Marieke M. M. Peeters, Maaike Harbers, Mark A. Neerincx
2016 ed.
EDIA@ECAI
Grégory Bonnet, Maaike Harbers, Koen V. Hindriks, Mike Katell, Catherine Tessier
2015 B conf
REFSQ
Maaike Harbers, Christian Detweiler, Mark A. Neerincx
2014 conf
HCI (23)
Mark A. Neerincx, Maaike Harbers, Dustin Lim, Veerle van der Tas
2014 A conf
AAMAS
Maaike Harbers, Catholijn M. Jonker, M. Birna van Riemsdijk
2014 A conf
AAMAS
Maaike Harbers, Reyhan Aydogan, Catholijn M. Jonker, Mark A. Neerincx
2014 conf
HCI (23)
Maaike Harbers, Mark A. Neerincx
2014 conf
REFSQ Workshops
Christian Detweiler, Maaike Harbers
2012 J jnl
Web Intell. Agent Syst.
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2012 B conf
IVA
Joost Broekens, Maaike Harbers, Willem-Paul Brinkman, Catholijn M. Jonker, Karel van den Bosch, John-Jules Ch. Meyer
2011 C conf
SIMULTECH
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2011 A conf
AAMAS
Michal Cáp, Mehdi Dastani, Maaike Harbers
2011
Maaike Harbers
2011 conf
Web Intelligence/IAT Workshops
Maaike Harbers, Jeffrey M. Bradshaw, Matthew Johnson, Paul J. Feltovich, Karel van den Bosch, John-Jules Ch. Meyer
2011 conf
COIN@AAMAS&WI-IAT
Maaike Harbers, Jeffrey M. Bradshaw, Matthew Johnson, Paul J. Feltovich, Karel van den Bosch, John-Jules Ch. Meyer
2011 B conf
IVA
Joost Broekens, Maaike Harbers, Willem-Paul Brinkman, Catholijn M. Jonker, Karel van den Bosch, John-Jules Ch. Meyer
2010 conf
IAT
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2010 conf
MATES
Joost Broekens, Maaike Harbers, Koen V. Hindriks, Karel van den Bosch, Catholijn M. Jonker, John-Jules Ch. Meyer
2010 J jnl
J. Artif. Soc. Soc. Simul.
Maaike Harbers, John-Jules Ch. Meyer, Karel van den Bosch
2009 conf
MALLOW
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2009 conf
LADS
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2009 B conf
IVA
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2009 conf
AAMAS (2)
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2009 J jnl
Int. J. Comput. Games Technol.
Frank Dignum, Joost Westra, Willem A. van Doesburg, Maaike Harbers
2009 conf
HCI (11)
Karel van den Bosch, Maaike Harbers, Annerieke Heuvelink, Willem A. van Doesburg
2009 conf
IAT
Maaike Harbers, Karel van den Bosch, John-Jules Ch. Meyer
2008 conf
ExaCt
Maaike Harbers, Karel van den Bosch, Frank Dignum, John-Jules Ch. Meyer
2008 conf
EC-TEL PROLEAN
Maaike Harbers
2007 conf
AmI Workshops
Tina Mioch, Maaike Harbers, Willem A. van Doesburg, Karel van den Bosch
2007 conf
COIN
Maaike Harbers, Rineke Verbrugge, Carles Sierra, John K. Debenham
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