Skip to content

Commit e9b6489

Browse files
authored
Merge pull request #23 from LBeaudoux/fix-pybuild-tests
Fix pybuild tests
2 parents ad7f61c + 4bf00b3 commit e9b6489

File tree

6 files changed

+458
-301
lines changed

6 files changed

+458
-301
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ jobs:
2828
- name: Test
2929
run: |
3030
pip install pytest
31-
pytest tests/
31+
pytest tests dev_tests

dev_tests/__init__.py

Whitespace-only changes.

dev_tests/test_original_tables.py

Lines changed: 306 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,306 @@
1+
import pytest
2+
3+
from iso639 import Lang
4+
from iso639.exceptions import DeprecatedLanguageValue
5+
6+
from .utils import (
7+
get_iso6391_deprecated_ids_rows,
8+
get_iso6391_deprecated_names_rows,
9+
get_iso6392_deprecated_ids_rows,
10+
get_iso6392_deprecated_names_rows,
11+
get_iso6392_rows,
12+
get_iso6393_deprecated_ids_rows,
13+
get_iso6393_deprecated_names_rows,
14+
get_iso6393_macrolanguages_rows,
15+
get_iso6393_names_rows,
16+
get_iso6393_rows,
17+
get_iso6395_rows,
18+
)
19+
20+
21+
class TestLang:
22+
23+
@pytest.mark.parametrize(
24+
"Part2b, Part2t, Part1, English_Name, French_Name",
25+
get_iso6392_rows(),
26+
)
27+
def test_iso6392_rows(
28+
self, Part2b, Part2t, Part1, English_Name, French_Name
29+
):
30+
31+
lg = Lang(Part2b)
32+
pt2t = Part2t if Part2t else Part2b # Part2B is default Part2T
33+
assert lg.pt1 == Part1
34+
assert lg.pt2b == Part2b
35+
assert lg.pt2t == pt2t
36+
assert lg == Lang(lg)
37+
assert not Part1 or lg == Lang(Part1)
38+
assert lg == Lang(pt2t)
39+
40+
for english_name in English_Name.split("; "):
41+
d = {"pt1": Part1, "pt2b": Part2b, "pt2t": pt2t}
42+
assert lg == Lang(english_name)
43+
assert d.items() <= lg.asdict().items()
44+
45+
@pytest.mark.parametrize(
46+
"Id, Part2b, Part2t, Part1, Scope, Language_Type, Ref_Name, Comment",
47+
get_iso6393_rows(),
48+
)
49+
def test_iso6393_rows(
50+
self,
51+
Id,
52+
Part2b,
53+
Part2t,
54+
Part1,
55+
Scope,
56+
Language_Type,
57+
Ref_Name,
58+
Comment,
59+
):
60+
lg = Lang(Id)
61+
assert lg.name == Ref_Name
62+
assert lg.pt1 == Part1
63+
assert lg.pt2b == Part2b
64+
assert lg.pt2t == Part2t
65+
assert lg.pt3 == Id
66+
assert lg.pt5 == ""
67+
assert lg == Lang(lg)
68+
assert lg == Lang(Ref_Name)
69+
assert not Part1 or lg == Lang(Part1)
70+
assert not Part2b or lg == Lang(Part2b)
71+
assert not Part2t or lg == Lang(Part2t)
72+
abbreviations = {
73+
"A": "Ancient",
74+
"C": "Constructed",
75+
"E": "Extinct",
76+
"H": "Historical",
77+
"I": "Individual",
78+
"L": "Living",
79+
"M": "Macrolanguage",
80+
"S": "Special",
81+
}
82+
assert lg.scope() == abbreviations[Scope]
83+
assert lg.type() == abbreviations[Language_Type]
84+
d = {"name": Ref_Name, "pt1": Part1, "pt2b": Part2b, "pt2t": Part2t}
85+
assert d.items() <= lg.asdict().items()
86+
87+
@pytest.mark.parametrize(
88+
"Id, Print_Name, Inverted_Name",
89+
get_iso6393_names_rows(),
90+
)
91+
def test_iso6393_names_rows(self, Id, Print_Name, Inverted_Name):
92+
lg = Lang(Id)
93+
assert lg.pt3 == Id
94+
assert lg == Lang(Print_Name)
95+
assert lg == Lang(Inverted_Name)
96+
97+
assert lg.name == Print_Name or lg.other_names().count(Print_Name) == 1
98+
assert (
99+
lg.name == Inverted_Name
100+
or lg.other_names().count(Inverted_Name) == 1
101+
)
102+
assert lg.other_names() == sorted(lg.other_names())
103+
assert len(lg.other_names()) == len(set(lg.other_names()))
104+
105+
@pytest.mark.parametrize(
106+
"M_Id, I_Id, I_Status",
107+
get_iso6393_macrolanguages_rows(),
108+
)
109+
def test_iso6393_macrolanguages_rows(self, M_Id, I_Id, I_Status):
110+
macro = Lang(M_Id)
111+
indiv = Lang(I_Id)
112+
113+
assert indiv.macro() == macro
114+
assert macro.individuals().count(indiv) == 1
115+
assert macro.macro() is None
116+
assert indiv.individuals() == []
117+
assert macro.individuals() == sorted(
118+
macro.individuals(), key=lambda x: x.pt3
119+
)
120+
assert len(macro.individuals()) == len(set(macro.individuals()))
121+
122+
@pytest.mark.parametrize(
123+
"URI, code, Label_English, Label_French",
124+
get_iso6395_rows(),
125+
)
126+
def test_iso6395_rows(self, URI, code, Label_English, Label_French):
127+
lg = Lang(code)
128+
assert lg.name == Label_English
129+
assert lg.pt5 == code
130+
assert lg == Lang(lg)
131+
kwargs = {"name": Label_English, "pt5": code}
132+
assert kwargs.items() <= lg.asdict().items()
133+
134+
@pytest.mark.parametrize(
135+
"Id, Change_To, English_Name, French_Name, Date_Added_Or_Changed, "
136+
"Category_Of_Change, Notes",
137+
get_iso6391_deprecated_ids_rows(),
138+
)
139+
def test_iso6391_deprecated_ids(
140+
self,
141+
Id,
142+
Change_To,
143+
English_Name,
144+
French_Name,
145+
Date_Added_Or_Changed,
146+
Category_Of_Change,
147+
Notes,
148+
):
149+
150+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
151+
Lang(Id)
152+
153+
assert exc_info.value.id == Id
154+
assert exc_info.value.name == English_Name
155+
assert exc_info.value.reason == Category_Of_Change
156+
assert exc_info.value.change_to == Change_To
157+
assert exc_info.value.ret_remedy == Notes
158+
assert exc_info.value.effective == Date_Added_Or_Changed
159+
160+
if exc_info.value.change_to:
161+
lg = Lang(exc_info.value.change_to)
162+
assert lg.pt1 == Change_To
163+
164+
@pytest.mark.parametrize(
165+
"Id, Change_To, English_Name, French_Name, Date_Added_Or_Changed, "
166+
"Category_Of_Change, Notes",
167+
get_iso6391_deprecated_names_rows(),
168+
)
169+
def test_iso6391_deprecated_names(
170+
self,
171+
Id,
172+
Change_To,
173+
English_Name,
174+
French_Name,
175+
Date_Added_Or_Changed,
176+
Category_Of_Change,
177+
Notes,
178+
):
179+
180+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
181+
Lang(English_Name)
182+
183+
assert exc_info.value.id == Id
184+
assert exc_info.value.name == English_Name
185+
assert exc_info.value.reason == Category_Of_Change
186+
assert exc_info.value.change_to == Change_To
187+
assert exc_info.value.ret_remedy == Notes
188+
assert exc_info.value.effective == Date_Added_Or_Changed
189+
190+
if exc_info.value.change_to:
191+
lg = Lang(exc_info.value.change_to)
192+
assert lg.pt1 == Change_To
193+
194+
@pytest.mark.parametrize(
195+
"Id, Change_To, English_Name, French_Name, Date_Added_Or_Changed, "
196+
"Category_Of_Change, Notes",
197+
get_iso6392_deprecated_ids_rows(),
198+
)
199+
def test_iso6392_deprecated_ids(
200+
self,
201+
Id,
202+
Change_To,
203+
English_Name,
204+
French_Name,
205+
Date_Added_Or_Changed,
206+
Category_Of_Change,
207+
Notes,
208+
):
209+
210+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
211+
Lang(Id)
212+
213+
assert exc_info.value.id == Id
214+
assert exc_info.value.name == English_Name
215+
assert exc_info.value.reason == Category_Of_Change
216+
assert exc_info.value.change_to == Change_To
217+
assert exc_info.value.ret_remedy == Notes
218+
assert exc_info.value.effective == Date_Added_Or_Changed
219+
220+
if exc_info.value.change_to:
221+
lg = Lang(exc_info.value.change_to)
222+
assert lg.pt2b == Change_To
223+
224+
@pytest.mark.parametrize(
225+
"Id, Change_To, English_Name, French_Name, Date_Added_Or_Changed, "
226+
"Category_Of_Change, Notes",
227+
get_iso6392_deprecated_names_rows(),
228+
)
229+
def test_iso6392_deprecated_names(
230+
self,
231+
Id,
232+
Change_To,
233+
English_Name,
234+
French_Name,
235+
Date_Added_Or_Changed,
236+
Category_Of_Change,
237+
Notes,
238+
):
239+
240+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
241+
Lang(English_Name)
242+
243+
assert exc_info.value.id == Id
244+
assert English_Name in exc_info.value.name
245+
assert exc_info.value.reason == Category_Of_Change
246+
assert exc_info.value.change_to == Change_To
247+
assert exc_info.value.ret_remedy == Notes
248+
assert exc_info.value.effective == Date_Added_Or_Changed
249+
250+
if exc_info.value.change_to:
251+
lg = Lang(exc_info.value.change_to)
252+
assert lg.pt2b == Change_To
253+
254+
@pytest.mark.parametrize(
255+
"Id, Ref_Name, Ret_Reason, Change_To, Ret_Remedy, Effective",
256+
get_iso6393_deprecated_ids_rows(),
257+
)
258+
def test_iso6393_deprecated_ids(
259+
self,
260+
Id,
261+
Ref_Name,
262+
Ret_Reason,
263+
Change_To,
264+
Ret_Remedy,
265+
Effective,
266+
):
267+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
268+
Lang(Id)
269+
270+
assert exc_info.value.id == Id
271+
assert exc_info.value.name == Ref_Name
272+
assert exc_info.value.reason == Ret_Reason
273+
assert exc_info.value.change_to == Change_To
274+
assert exc_info.value.ret_remedy == Ret_Remedy
275+
assert exc_info.value.effective == Effective
276+
277+
if exc_info.value.change_to:
278+
lg = Lang(exc_info.value.change_to)
279+
assert lg.pt3 == Change_To
280+
281+
@pytest.mark.parametrize(
282+
"Id, Ref_Name, Ret_Reason, Change_To, Ret_Remedy, Effective",
283+
get_iso6393_deprecated_names_rows(),
284+
)
285+
def test_iso6393_deprecated_names(
286+
self,
287+
Id,
288+
Ref_Name,
289+
Ret_Reason,
290+
Change_To,
291+
Ret_Remedy,
292+
Effective,
293+
):
294+
with pytest.raises(DeprecatedLanguageValue) as exc_info:
295+
Lang(Ref_Name)
296+
297+
assert exc_info.value.id == Id
298+
assert exc_info.value.name == Ref_Name
299+
assert exc_info.value.reason == Ret_Reason
300+
assert exc_info.value.change_to == Change_To
301+
assert exc_info.value.ret_remedy == Ret_Remedy
302+
assert exc_info.value.effective == Effective
303+
304+
if exc_info.value.change_to:
305+
lg = Lang(exc_info.value.change_to)
306+
assert lg.pt3 == Change_To
File renamed without changes.

0 commit comments

Comments
 (0)