41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
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()
|