File: test_language.py

package info (click to toggle)
babelfish 0.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 416 kB
  • sloc: python: 707; makefile: 5; sh: 4
file content (100 lines) | stat: -rw-r--r-- 3,018 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import pytest
import pickle

from babelfish.country import Country
from babelfish.language import LANGUAGES, Language
from babelfish.script import Script


def test_languages():
    assert len(LANGUAGES) == 7874

def test_eq():
    assert Language("eng") == Language("eng")

def test_ne():
    assert Language("eng") != Language("fra")

def test_hasattr_alpha3():
    assert hasattr(Language("fra"), "alpha3")

def test_hasattr_alpha2():
    assert hasattr(Language("eng"), "alpha2")

def test_not_hasattr_alpha2():
    assert not hasattr(Language("bej"), "alpha2")

def test_bool_casting_is_true():
    assert bool(Language("eng"))

def test_bool_casting_und_is_false():
    assert not bool(Language("und"))

def test_wrong():
    with pytest.raises(ValueError):
        Language("xyz")

def test_wrong_as_unknown():
    assert Language("zzzz", unknown="und") == Language("und")

def test_eq_with_country():
    assert Language("eng", "US") == Language("eng", Country("US"))

def test_ne_with_country():
    assert Language("fra", "FR") != Language("fra", "CA")

def test_ne_with_country_and_none():
    assert Language("fra", "FR") != Language("fra")

def test_eq_with_script():
    assert Language("srp", script="Latn") == Language("srp", script=Script("Latn"))

def test_ne_with_script():
    assert Language("srp", script="Latn") != Language("srp", script="Cyrl")

def test_ne_with_script_and_none():
    assert Language("srp", script="Latn") != Language("srp")

def test_hash():
    assert hash(Language("fra")) == hash("fr")
    assert hash(Language("ace")) == hash("ace")
    assert hash(Language("por", "BR")) == hash("pt-BR")
    assert hash(Language("srp", script="Cyrl")) == hash("sr-Cyrl")
    assert hash(Language("eng", country="US", script="Latn")) == hash("en-US-Latn")

@pytest.mark.parametrize("language", [
    Language('fra'),
    Language('eng', 'US'),
    Language('srp', script='Latn'),
    Language('eng', 'US', 'Latn')
])
def test_pickle(language):
    assert pickle.loads(pickle.dumps(language)) == language

def test_str_ietf_format():
    assert str(Language("eng", "US", "Latn")) == "en-US-Latn"
    assert str(Language("fra", "FR")) == "fr-FR"
    assert str(Language("srp", script="Cyrl")) == "sr-Cyrl"
    assert str(Language("bel")) == "be"

def test_fromietf_with_country_and_script():
    assert Language.fromietf("fra-FR-Latn") == Language("fra", "FR", "Latn")

def test_fromietf_with_country_and_no_script():
    assert Language.fromietf("fr-FR") == Language("fra", "FR")

def test_fromietf_with_script_and_no_country():
    assert Language.fromietf("eng-Latn") == Language("eng", script="Latn")

def test_fromietf_wrong_language_raises_valueerror():
    with pytest.raises(ValueError):
        Language.fromietf("xyz-FR")

def test_fromietf_wrong_country_raises_valueerror():
    with pytest.raises(ValueError):
        Language.fromietf("eng-XY")

def test_fromietf_wrong_script_raises_valueerror():
    with pytest.raises(ValueError):
        Language.fromietf("fra-FR-Wxyz")