import unittest from core.pronunciations import ( expand_abbreviations, normalize_ocr_text, prepare_text_for_tts, remove_linebreak_hyphens, ) class PronunciationTests(unittest.TestCase): def test_fuses_printed_line_break_but_keeps_real_compound(self): self.assertEqual(remove_linebreak_hyphens("program-\nmieren mit einem KI-Modell"), "programmieren mit einem KI-Modell") self.assertEqual(remove_linebreak_hyphens("Hardware- und Software"), "Hardware- und Software") self.assertEqual(remove_linebreak_hyphens("einge\u00adtrichtert"), "eingetrichtert") def test_existing_flattened_ocr_layouts_are_repaired_too(self): self.assertEqual(remove_linebreak_hyphens("eingetrich- tert"), "eingetrichtert") def test_german_umlaut_and_acronyms_are_prepared_for_speech(self): spoken = prepare_text_for_tts( "KI wird jahrlich wichtiger und APIs sind naturlich verfügbar.", "de") self.assertIn("Künstliche Intelligenz", spoken) self.assertIn("jährlich", spoken) self.assertIn("Programmierschnittstellen", spoken) self.assertIn("natürlich", spoken) def test_english_acronyms_use_english_expansions(self): self.assertEqual(expand_abbreviations("AI uses an API.", "en"), "artificial intelligence uses an application programming interface.") def test_unknown_technical_words_and_names_stay_unchanged(self): text = "OpenAI und PyMuPDF bleiben unverändert." self.assertEqual(normalize_ocr_text(text, "de"), text) if __name__ == "__main__": unittest.main()