"""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]