Files
2025-etpgrf/tests/test_hyphenation.py

49 lines
3.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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мость"),
("многообразие", "много\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