129 lines
3.9 KiB
Python
129 lines
3.9 KiB
Python
"""Regression tests for braille API compatibility."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from cthulhu import braille
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_braille_exports_snake_case_compatibility_apis():
|
|
expected_names = [
|
|
"check_braille_setting",
|
|
"disable_braille",
|
|
"display_line",
|
|
"display_message",
|
|
"get_caret_context",
|
|
"get_default_contraction_table",
|
|
"get_region_at_cell",
|
|
"is_flash_active",
|
|
"kill_flash",
|
|
"pan_left",
|
|
"pan_right",
|
|
"process_routing_key",
|
|
"return_to_region_with_focus",
|
|
"set_brlapi_priority",
|
|
"set_contraction_table",
|
|
"set_enable_braille",
|
|
"set_enable_computer_braille_at_cursor",
|
|
"set_enable_contracted_braille",
|
|
"set_enable_eol",
|
|
"set_enable_word_wrap",
|
|
"set_link_indicator",
|
|
"set_monitor_callback",
|
|
"set_selector_indicator",
|
|
"set_text_attributes_indicator",
|
|
"setup_key_ranges",
|
|
"toggle_contracted_braille",
|
|
"try_reposition_cursor",
|
|
]
|
|
|
|
for name in expected_names:
|
|
assert hasattr(braille, name), name
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_line_exports_snake_case_helpers():
|
|
line = braille.Line()
|
|
first = braille.Region("first")
|
|
second = braille.Region("second")
|
|
|
|
line.add_region(first)
|
|
line.add_regions([second])
|
|
|
|
assert line.regions == [first, second]
|
|
assert line.get_line_info() == line.getLineInfo()
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_setup_key_ranges_delegates_to_legacy_api(monkeypatch):
|
|
calls = []
|
|
|
|
def setup_key_ranges(keys):
|
|
calls.append(keys)
|
|
|
|
monkeypatch.setattr(braille, "setupKeyRanges", setup_key_ranges)
|
|
|
|
braille.setup_key_ranges({1, 2})
|
|
|
|
assert calls == [{1, 2}]
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_snake_case_runtime_setters_update_legacy_settings(monkeypatch):
|
|
monkeypatch.setattr(braille.settings, "enableBraille", True)
|
|
monkeypatch.setattr(braille.settings, "enableContractedBraille", False)
|
|
monkeypatch.setattr(braille.settings, "brailleContractionTable", "")
|
|
monkeypatch.setattr(braille.settings, "disableBrailleEOL", False)
|
|
monkeypatch.setattr(braille.settings, "enableBrailleWordWrap", False)
|
|
monkeypatch.setattr(braille.settings, "brailleSelectorIndicator", 0)
|
|
monkeypatch.setattr(braille.settings, "brailleLinkIndicator", 0)
|
|
monkeypatch.setattr(braille.settings, "textAttributesBrailleIndicator", 0)
|
|
|
|
braille.set_enable_braille(False)
|
|
braille.set_enable_contracted_braille(True)
|
|
braille.set_contraction_table("/tmp/table.ctb")
|
|
braille.set_enable_eol(False)
|
|
braille.set_enable_word_wrap(True)
|
|
braille.set_selector_indicator(64)
|
|
braille.set_link_indicator(128)
|
|
braille.set_text_attributes_indicator(192)
|
|
|
|
assert braille.settings.enableBraille is False
|
|
assert braille.settings.enableContractedBraille is True
|
|
assert braille.settings.brailleContractionTable == "/tmp/table.ctb"
|
|
assert braille.settings.disableBrailleEOL is True
|
|
assert braille.settings.enableBrailleWordWrap is True
|
|
assert braille.settings.brailleSelectorIndicator == 64
|
|
assert braille.settings.brailleLinkIndicator == 128
|
|
assert braille.settings.textAttributesBrailleIndicator == 192
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_display_message_accepts_snake_case_keyword(monkeypatch):
|
|
calls = []
|
|
|
|
def display_message(message, cursor=-1, flashTime=0):
|
|
calls.append((message, cursor, flashTime))
|
|
|
|
monkeypatch.setattr(braille, "displayMessage", display_message)
|
|
|
|
braille.display_message("hello", flash_time=250)
|
|
|
|
assert calls == [("hello", -1, 250)]
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_kill_flash_accepts_snake_case_keyword(monkeypatch):
|
|
calls = []
|
|
|
|
def kill_flash(restoreSaved=True):
|
|
calls.append(restoreSaved)
|
|
|
|
monkeypatch.setattr(braille, "killFlash", kill_flash)
|
|
|
|
braille.kill_flash(restore_saved=False)
|
|
|
|
assert calls == [False]
|