pdf-translator-for-human / tests /test_google_trans.py
kuspia
Update test_google_trans.py
f8ccea0 unverified
raw
history blame
3.95 kB
#!/usr/bin/env python
"""Tests for `deep_translator` package."""
import pytest
from deep_translator import exceptions, GoogleTranslator
from deep_translator.constants import GOOGLE_CODES_TO_LANGUAGES, test_text_standard, TRANSLATED_RESULTS
import random
@pytest.fixture
def google_translator():
"""Sample pytest fixture.
See more at: http://doc.pytest.org/en/latest/fixture.html
"""
return GoogleTranslator(target='en')
def case_sensitivity_checks():
test_lang = 'Czech'
test_text = 'Hi, the sky is dark while the moon is white. Hurrah!! Denver is a city name in Colorado.'
translated_text = 'Ahoj, obloha je tmavá, zatímco měsíc je bílý. Hurá!! Denver je název města v Coloradu.'
test_cases = []
n = len(test_lang)
mx = 1 << n
test = test_lang.lower()
for i in range(mx):
combination = [k for k in test_lang]
for j in range(n):
if (((i >> j) & 1) == 1):
combination[j] = test_lang[j].upper()
temp = ""
for i in combination:
temp += i
test_cases.append(temp)
random_cases = 5
random_test_cases = random.sample(test_cases, random_cases) # randomly choosing any five cases since list is in order of 2^n containing all cases
for case in random_test_cases:
assert GoogleTranslator(source='en', target=case).translate(test_text) == translated_text
def multiple_names_lang_checks():
assert GoogleTranslator(source='en', target='burMeSe').translate("Hello") == 'မင်္ဂလာပါ'
assert GoogleTranslator(source='en', target='Oriya').translate("What's up?") == 'କଣ ଚାଲିଛି?'
assert GoogleTranslator(source='en', target='kurManJi').translate("Nice is dice.") == 'Xweş xweş e.'
def test_random_tranlations_cases_multiple_names():
random_sample_size = 5
d = dict.fromkeys(list(TRANSLATED_RESULTS.keys()))
random_lang_names = random.sample(d.keys(), random_sample_size)
random_subset_dict = {k: TRANSLATED_RESULTS[k] for k in random_lang_names}
for lang, translation in random_subset_dict.items():
assert GoogleTranslator(source='en', target=lang).translate(test_text_standard) == translation
case_sensitivity_checks()
multiple_names_lang_checks()
def test_content(google_translator):
"""Sample pytest test function with the pytest fixture as an argument."""
# from bs4 import BeautifulSoup
# assert 'GitHub' in BeautifulSoup(response.content).title.string
assert google_translator.translate(text='좋은') == "good"
def test_abbreviations_and_languages_mapping():
for abb, lang in GOOGLE_CODES_TO_LANGUAGES.items():
if(abb!= 'en'):
g1 = GoogleTranslator(abb)
g2 = GoogleTranslator(lang)
assert g1._source == g2._source
def test_inputs():
with pytest.raises(exceptions.LanguageNotSupportedException):
GoogleTranslator(source="", target="")
with pytest.raises(exceptions.LanguageNotSupportedException):
GoogleTranslator(source="auto", target="nothing")
def test_payload(google_translator):
with pytest.raises(exceptions.NotValidPayload):
google_translator.translate(text="")
google_translator.translate(text='1234')
google_translator.translate(text='{}')
google_translator.translate(text='%@')
with pytest.raises(exceptions.NotValidPayload):
google_translator.translate(text=123)
with pytest.raises(exceptions.NotValidPayload):
google_translator.translate(text={})
with pytest.raises(exceptions.NotValidPayload):
google_translator.translate(text=[])
with pytest.raises(exceptions.NotValidLength):
google_translator.translate("a"*5001)
#for _ in range(1):
#assert google_translator.translate(text='좋은') == "good"
def test_one_character_words():
assert GoogleTranslator(source='es', target='en').translate('o') == 'or'