89 lines
2.6 KiB
Python
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]
|