diff --git a/tests/test_hyphenation.py b/tests/test_hyphenation.py new file mode 100644 index 0000000..0ab712f --- /dev/null +++ b/tests/test_hyphenation.py @@ -0,0 +1,43 @@ +# tests/test_hyphenation.py +import pytest +from etpgrf import Hyphenator + +# --- Тестовые данные для русского языка --- +# Формат: (входное_слово, ожидаемый_результат_с_переносами) +# Используем \u00AD - это Unicode-представление мягкого переноса (­) +RUSSIAN_HYPHENATION_CASES = [ + ("дом", "дом"), # Сочень короткое (короче max_unhyphenated_len) не должно меняться + ("проверка", "проверка"), # Короткое слово не должно меняться + ("тестирование", "тести\u00ADрование"), + ("благотворительностью", "благотво\u00ADритель\u00ADностью"), # Слово с переносом на мягкий знак + ("гиперподъездной", "гипер\u00ADподъ\u00ADездной"), # Слово с переносом на твердый знак + ("фотоаппаратура", "фотоап\u00ADпара\u00ADтура"), # проверка слова с двойной согласной + ("сверхзвуковой", "сверхзву\u00ADковой"), + ("автомобиль", "авто\u00ADмобиль"), # Слово с переносом на мягкий знак + ("интернационализация", "интерна\u00ADциона\u00ADлизация"), # Длинное слово с переносами + ("программирование", "програм\u00ADмиро\u00ADвание"), + ("суперкомпьютер", "супер\u00ADком\u00ADпьютер"), + ("электронный", "электрон\u00ADный"), + ("информационный", "информа\u00ADционный"), + ("автоматизация", "авто\u00ADмати\u00ADзация"), + ("многоклеточный", "многок\u00ADлеточ\u00ADный"), # Сложное слово с переносами + ("многофункциональный", "многофун\u00ADкцио\u00ADнальный"), # Сложное слово с переносами + ("непрерывность", "непре\u00ADрывность"), # Слово с мягким знаком в конце + ("сверхпроводимость", "сверхпро\u00ADводи\u00ADмость"), # Слово с мягким знаком в середине +] + + +@pytest.mark.parametrize("input_word, expected_output", RUSSIAN_HYPHENATION_CASES) +def test_russian_word_hyphenation(input_word, expected_output): + """ + Проверяет ПОВЕДЕНИЕ: правильная расстановка переносов в отдельных русских словах. + """ + # Arrange (подготовка) + hyphenator_ru = Hyphenator(langs='ru', max_unhyphenated_len=5, min_tail_len=3) + # Act (действие) - тестируем самый "атомарный" метод + actual_output = hyphenator_ru.hyp_in_word(input_word) + # Assert (проверка) + assert actual_output == expected_output + + +