Files
cthulhu/tests/test_keybindings_compat.py

89 lines
2.6 KiB
Python

"""Regression tests for keybinding API compatibility."""
from __future__ import annotations
import pytest
from cthulhu import keybindings
class DummyHandler:
description = "dummy handler"
@pytest.mark.unit
def test_keybinding_accepts_lightweight_command_manager_form():
binding = keybindings.KeyBinding("KP_Divide", keybindings.CTHULHU_MODIFIER_MASK)
assert binding.keysymstring == "KP_Divide"
assert binding.modifier_mask == keybindings.defaultModifierMask
assert binding.modifiers == keybindings.CTHULHU_MODIFIER_MASK
assert binding.handler is None
assert binding.click_count == 1
@pytest.mark.unit
def test_keybinding_accepts_lightweight_positional_click_count():
binding = keybindings.KeyBinding("a", keybindings.CTHULHU_MODIFIER_MASK, 2)
assert binding.modifier_mask == keybindings.defaultModifierMask
assert binding.modifiers == keybindings.CTHULHU_MODIFIER_MASK
assert binding.click_count == 2
@pytest.mark.unit
def test_keybinding_preserves_legacy_handler_form():
handler = DummyHandler()
binding = keybindings.KeyBinding(
"b",
keybindings.defaultModifierMask,
keybindings.CTHULHU_SHIFT_MODIFIER_MASK,
handler,
3,
)
assert binding.modifier_mask == keybindings.defaultModifierMask
assert binding.modifiers == keybindings.CTHULHU_SHIFT_MODIFIER_MASK
assert binding.handler is handler
assert binding.click_count == 3
@pytest.mark.unit
def test_keybinding_exposes_command_manager_helpers():
binding = keybindings.KeyBinding("c", keybindings.CTHULHU_MODIFIER_MASK)
assert keybindings.get_modifier_names is keybindings.getModifierNames
assert keybindings.CTHULHU_ALT_SHIFT_MODIFIER_MASK == (
keybindings.CTHULHU_MODIFIER_MASK
| keybindings.ALT_MODIFIER_MASK
| keybindings.SHIFT_MODIFIER_MASK
)
binding.set_grab_ids([42])
assert binding.get_grab_ids() == [42]
@pytest.mark.unit
def test_keybinding_add_grabs_accepts_explicit_cthulhu_modifiers(monkeypatch):
binding = keybindings.KeyBinding("d", keybindings.CTHULHU_MODIFIER_MASK)
captured = {}
class FakeInputEventManager:
def add_grabs_for_keybinding(self, grab_binding, cthulhu_modifiers):
captured["binding"] = grab_binding
captured["cthulhu_modifiers"] = cthulhu_modifiers
return [7]
from cthulhu import input_event_manager
monkeypatch.setattr(
input_event_manager,
"get_manager",
lambda: FakeInputEventManager(),
)
binding.add_grabs(["Insert"])
assert captured == {"binding": binding, "cthulhu_modifiers": ["Insert"]}
assert binding.get_grab_ids() == [7]