Files
cthulhu/tests/test_braille_compat.py

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]