38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import pytest
|
|
|
|
from app.translit import transliterate_latin, transliterate_token
|
|
|
|
|
|
def test_exact_dict_word():
|
|
assert transliterate_token("Ozon") == "Озон"
|
|
assert transliterate_token("ozon") == "озон"
|
|
|
|
|
|
def test_rule_based_word():
|
|
assert transliterate_token("shipping") == "шиппинг"
|
|
|
|
|
|
def test_abbreviation_uppercase():
|
|
assert transliterate_token("IT") == "айти"
|
|
assert transliterate_token("DVD") == "ди-вэ-ди"
|
|
|
|
|
|
def test_unknown_abbreviation_falls_back_to_rules():
|
|
result = transliterate_token("KPI")
|
|
assert "айти" != result
|
|
assert result == "КПИ"
|
|
|
|
|
|
def test_mixed_tokens_preserve_non_letters():
|
|
assert transliterate_latin("Python-скрипт") == "Пайтон-скрипт"
|
|
assert transliterate_latin("4G") == "4Г"
|
|
|
|
|
|
def test_noop_without_latin():
|
|
text = "Привет, мир! Числа 123 и знак #."
|
|
assert transliterate_latin(text) == text
|
|
|
|
|
|
def test_uppercase_rule_output_keeps_case():
|
|
assert transliterate_token("NETFLIX") == "НЕТФЛИКС"
|