bazarr/libs/pycountry/tests/test_general.py

174 lines
5.4 KiB
Python

import gettext
import re
import pycountry
import pycountry.db
import pytest
@pytest.fixture(autouse=True, scope='session')
def logging():
import logging
logging.basicConfig(level=logging.DEBUG)
def test_country_list():
assert len(pycountry.countries) == 249
assert isinstance(list(pycountry.countries)[0], pycountry.db.Data)
def test_germany_has_all_attributes():
germany = pycountry.countries.get(alpha_2='DE')
assert germany.alpha_2 == u'DE'
assert germany.alpha_3 == u'DEU'
assert germany.numeric == u'276'
assert germany.name == u'Germany'
assert germany.official_name == u'Federal Republic of Germany'
def test_subdivisions_directly_accessible():
assert len(pycountry.subdivisions) == 4835
assert isinstance(list(pycountry.subdivisions)[0], pycountry.db.Data)
de_st = pycountry.subdivisions.get(code='DE-ST')
assert de_st.code == u'DE-ST'
assert de_st.name == u'Sachsen-Anhalt'
assert de_st.type == u'State'
assert de_st.parent is None
assert de_st.parent_code is None
assert de_st.country is pycountry.countries.get(alpha_2='DE')
def test_subdivisions_have_subdivision_as_parent():
al_br = pycountry.subdivisions.get(code='AL-BU')
assert al_br.code == u'AL-BU'
assert al_br.name == u'Bulqiz\xeb'
assert al_br.type == u'District'
assert al_br.parent_code == u'AL-09'
assert al_br.parent is pycountry.subdivisions.get(code='AL-09')
assert al_br.parent.name == u'Dib\xebr'
def test_query_subdivisions_of_country():
assert len(pycountry.subdivisions.get(country_code='DE')) == 16
assert len(pycountry.subdivisions.get(country_code='US')) == 57
def test_scripts():
assert len(pycountry.scripts) == 182
assert isinstance(list(pycountry.scripts)[0], pycountry.db.Data)
latin = pycountry.scripts.get(name='Latin')
assert latin.alpha_4 == u'Latn'
assert latin.name == u'Latin'
assert latin.numeric == u'215'
def test_currencies():
assert len(pycountry.currencies) == 170
assert isinstance(list(pycountry.currencies)[0], pycountry.db.Data)
argentine_peso = pycountry.currencies.get(alpha_3='ARS')
assert argentine_peso.alpha_3 == u'ARS'
assert argentine_peso.name == u'Argentine Peso'
assert argentine_peso.numeric == u'032'
def test_languages():
assert len(pycountry.languages) == 7847
assert isinstance(list(pycountry.languages)[0], pycountry.db.Data)
aragonese = pycountry.languages.get(alpha_2='an')
assert aragonese.alpha_2 == u'an'
assert aragonese.alpha_3 == u'arg'
assert aragonese.name == u'Aragonese'
bengali = pycountry.languages.get(alpha_2='bn')
assert bengali.name == u'Bengali'
assert bengali.common_name == u'Bangla'
def test_locales():
german = gettext.translation(
'iso3166', pycountry.LOCALES_DIR, languages=['de'])
german.install()
assert __builtins__['_']('Germany') == 'Deutschland'
def test_removed_countries():
ussr = pycountry.historic_countries.get(alpha_3='SUN')
assert isinstance(ussr, pycountry.db.Data)
assert ussr.alpha_4 == u'SUHH'
assert ussr.alpha_3 == u'SUN'
assert ussr.name == u'USSR, Union of Soviet Socialist Republics'
assert ussr.withdrawal_date == u'1992-08-30'
def test_repr():
assert re.match("Country\\(alpha_2=u?'DE', "
"alpha_3=u?'DEU', "
"name=u?'Germany', "
"numeric=u?'276', "
"official_name=u?'Federal Republic of Germany'\\)",
repr(pycountry.countries.get(alpha_2='DE')))
def test_dir():
germany = pycountry.countries.get(alpha_2='DE')
for n in 'alpha_2', 'alpha_3', 'name', 'numeric', 'official_name':
assert n in dir(germany)
def test_get():
c = pycountry.countries
with pytest.raises(TypeError):
c.get(alpha_2='DE', alpha_3='DEU')
assert c.get(alpha_2='DE') == c.get(alpha_3='DEU')
with pytest.raises(KeyError):
c.get(alpha_2='Foo')
def test_lookup():
c = pycountry.countries
g = c.get(alpha_2='DE')
assert g == c.lookup('de')
assert g == c.lookup('DEU')
assert g == c.lookup('276')
assert g == c.lookup('germany')
assert g == c.lookup('Federal Republic of Germany')
# try a generated field
bqaq = pycountry.historic_countries.get(alpha_4='BQAQ')
assert bqaq == pycountry.historic_countries.lookup('atb')
german = pycountry.languages.get(alpha_2='de')
assert german == pycountry.languages.lookup('De')
euro = pycountry.currencies.get(alpha_3='EUR')
assert euro == pycountry.currencies.lookup('euro')
latin = pycountry.scripts.get(name='Latin')
assert latin == pycountry.scripts.lookup('latn')
al_bu = pycountry.subdivisions.get(code='AL-BU')
assert al_bu == pycountry.subdivisions.lookup('al-bu')
with pytest.raises(LookupError):
pycountry.countries.lookup('bogus country')
with pytest.raises(LookupError):
pycountry.countries.lookup(12345)
def test_subdivision_parent():
s = pycountry.subdivisions
sd = s.get(code='CV-BV')
assert sd.parent_code == 'CV-B'
assert sd.parent is s.get(code=sd.parent_code)
def test_subdivision_missing_code_raises_keyerror():
s = pycountry.subdivisions
with pytest.raises(KeyError):
s.get(code='US-ZZ')
def test_subdivision_empty_list():
s = pycountry.subdivisions
assert len(s.get(country_code='DE')) == 16
assert len(s.get(country_code='JE')) == 0
with pytest.raises(KeyError):
s.get(country_code='FOOBAR')