ukrainian-tts / tests /test_formatter.py
Yurii Paniv
Fix formatter
17873e4
from ukrainian_tts.formatter import preprocess_text
import pytest
@pytest.mark.parametrize(
"text,expected",
[
("Quality of life update", "кваліті оф ліфе юпдате"),
("Він украв 20000000 $", "він украв двадцять мільйонів доларів"),
("Він украв 20000000", "він украв двадцять мільйонів"),
("Він украв 1 $", "він украв один долар"),
("Він украв 2 $", "він украв два долари"),
("Він украв 2 ₴", "він украв дві гривні"),
(
"111 000 000 000 доларів державного боргу.",
"сто одинадцять мільярдів доларів державного боргу.",
),
(
"11100000001 доларів державного боргу.",
"одинадцять мільярдів сто мільйонів один доларів державного боргу.",
),
(
"10000$, 15000 корупціонерів",
"десять тисяч доларів, п'ятнадцять тисяч корупціонерів",
),
(
"10000 $, 15000 корупціонерів",
"десять тисяч доларів, п'ятнадцять тисяч корупціонерів",
),
(
"$10000, 15000 корупціонерів",
"десять тисяч доларів, п'ятнадцять тисяч корупціонерів",
),
(
"10000$ у еквіваленті борщових заправок",
"десять тисяч доларів у еквіваленті борщових заправок",
),
("10-30-40-50-5-9-5", "десять-тридцять-сорок-п'ятдесят-п'ять-дев'ять-п'ять"),
],
)
def test_formatter(text, expected):
assert preprocess_text(text) == expected
# Purspose of these tests, to have clearly separate list of issues
# in the conversion. Once fixed, these cases should move to test_formatter
# We still want make sure that no changes happens there, as any regressions
# is bad, or interesting.
@pytest.mark.parametrize(
"text,expected",
[
# Should be два долара
(
"2 $, 15000 корупціонерів",
"два доларів, п'ятнадцять тисяч корупціонерів",
),
# this is wrong case, should be "це дев'ятнадцятирічне вино."
# Implementing this, require to have proper parsing of words into the token stream
# which reqiure reworking of current approach.
("це 19-річне вино.", "це дев'ятнадцять-річне вино."),
],
)
def test_planned_formatter_issues(text, expected):
assert preprocess_text(text) == expected