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димо\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