1import pkgutil
2
3from translate.lang import factory
4
5
6def test_getlanguage():
7    """Tests that a basic call to getlanguage() works."""
8    kmlanguage = factory.getlanguage("km")
9    assert kmlanguage.code == "km"
10    assert kmlanguage.fullname == "Central Khmer"
11
12    # Test a non-exisint code
13    language = factory.getlanguage("zz")
14    assert language.nplurals == 0
15
16    # Test a code without a module
17    language = factory.getlanguage("fy")
18    assert language.nplurals == 2
19    assert language.fullname == "Frisian"
20    assert "n != 1" in language.pluralequation
21
22    # Test a code without a module and with a country code
23    language = factory.getlanguage("de_AT")
24    assert language.nplurals == 2
25    assert language.fullname == "German"
26
27    # Test with None as language code
28    language = factory.getlanguage(None)
29    assert language.code == ""
30
31    # Test with a language code that is a reserved word in Python
32    language = factory.getlanguage("is")
33    assert language.nplurals == 2
34    assert language.fullname == "Icelandic"
35
36    language = factory.getlanguage("or")
37    assert "startcaps" in language.ignoretests["all"]
38
39    # Test with a language code contains '@'
40    language = factory.getlanguage("ca@valencia")
41    assert language.nplurals == 2
42
43
44def test_get_all_languages():
45    """Tests that a basic call to get_all_languages() works."""
46    import translate.lang as package
47
48    is_language_module = lambda x: not (
49        x.startswith("test_")
50        or x in ("common", "data", "factory", "identify", "ngram", "poedit", "team")
51    )
52    lang_codes = []
53    for _imp, modname, _isp in pkgutil.walk_packages(package.__path__):
54        if is_language_module(modname):
55            if modname.startswith("code_"):
56                modname = modname.replace("code_", "")
57            lang_codes.append(modname)
58    langs = factory.get_all_languages()
59    assert len(langs) == len(lang_codes)
60