the real fix for t/lib/b-stash.t
[p5sagit/p5-mst-13.2.git] / t / lib / lc-all.t
CommitLineData
47a334e9 1#!./perl
2#
3# all.t - tests for all_* routines in
4# Locale::Country
5# Locale::Language
6# Locale::Currency
7#
8# There are four tests. We get a list of all codes, convert to
9# language/country/currency, # convert back to code,
10# and check that they're the same. Then we do the same,
11# starting with list of languages/countries/currencies.
12#
13
a8135056 14BEGIN {
15 chdir 't' if -d 't';
16 @INC = '../lib';
17}
18
47a334e9 19use Locale::Country;
20use Locale::Language;
21use Locale::Currency;
22
23print "1..12\n";
24
25my $code;
26my $language;
27my $country;
28my $ok;
29my $reverse;
30my $currency;
31
32
33#-----------------------------------------------------------------------
34# Old API - without codeset specified, default to ALPHA_2
35#-----------------------------------------------------------------------
36$ok = 1;
37foreach $code (all_country_codes())
38{
39 $country = code2country($code);
40 if (!defined $country)
41 {
42 $ok = 0;
43 last;
44 }
45 $reverse = country2code($country);
46 if (!defined $reverse)
47 {
48 $ok = 0;
49 last;
50 }
51 if ($reverse ne $code)
52 {
53 $ok = 0;
54 last;
55 }
56}
57print ($ok ? "ok 1\n" : "not ok 1\n");
58
59#-----------------------------------------------------------------------
60# code to country, back to code, for ALPHA2
61#-----------------------------------------------------------------------
62$ok = 1;
63foreach $code (all_country_codes(LOCALE_CODE_ALPHA_2))
64{
65 $country = code2country($code, LOCALE_CODE_ALPHA_2);
66 if (!defined $country)
67 {
68 $ok = 0;
69 last;
70 }
71 $reverse = country2code($country, LOCALE_CODE_ALPHA_2);
72 if (!defined $reverse)
73 {
74 $ok = 0;
75 last;
76 }
77 if ($reverse ne $code)
78 {
79 $ok = 0;
80 last;
81 }
82}
83print ($ok ? "ok 2\n" : "not ok 2\n");
84
85#-----------------------------------------------------------------------
86# code to country, back to code, for ALPHA3
87#-----------------------------------------------------------------------
88$ok = 1;
89foreach $code (all_country_codes(LOCALE_CODE_ALPHA_3))
90{
91 $country = code2country($code, LOCALE_CODE_ALPHA_3);
92 if (!defined $country)
93 {
94 $ok = 0;
95 last;
96 }
97 $reverse = country2code($country, LOCALE_CODE_ALPHA_3);
98 if (!defined $reverse)
99 {
100 $ok = 0;
101 last;
102 }
103 if ($reverse ne $code)
104 {
105 $ok = 0;
106 last;
107 }
108}
109print ($ok ? "ok 3\n" : "not ok 3\n");
110
111#-----------------------------------------------------------------------
112# code to country, back to code, for NUMERIC
113#-----------------------------------------------------------------------
114$ok = 1;
115foreach $code (all_country_codes(LOCALE_CODE_NUMERIC))
116{
117 $country = code2country($code, LOCALE_CODE_NUMERIC);
118 if (!defined $country)
119 {
120 $ok = 0;
121 last;
122 }
123 $reverse = country2code($country, LOCALE_CODE_NUMERIC);
124 if (!defined $reverse)
125 {
126 $ok = 0;
127 last;
128 }
129 if ($reverse ne $code)
130 {
131 $ok = 0;
132 last;
133 }
134}
135print ($ok ? "ok 4\n" : "not ok 4\n");
136
137
138#-----------------------------------------------------------------------
139# Old API - country to code, back to country, using default of ALPHA_2
140#-----------------------------------------------------------------------
141$ok = 1;
142foreach $country (all_country_names())
143{
144 $code = country2code($country);
145 if (!defined $code)
146 {
147 $ok = 0;
148 last;
149 }
150 $reverse = code2country($code);
151 if (!defined $reverse)
152 {
153 $ok = 0;
154 last;
155 }
156 if ($reverse ne $country)
157 {
158 $ok = 0;
159 last;
160 }
161}
162print ($ok ? "ok 5\n" : "not ok 5\n");
163
164#-----------------------------------------------------------------------
165# country to code, back to country, using LOCALE_CODE_ALPHA_2
166#-----------------------------------------------------------------------
167$ok = 1;
168foreach $country (all_country_names())
169{
170 $code = country2code($country, LOCALE_CODE_ALPHA_2);
171 if (!defined $code)
172 {
173 $ok = 0;
174 last;
175 }
176 $reverse = code2country($code, LOCALE_CODE_ALPHA_2);
177 if (!defined $reverse)
178 {
179 $ok = 0;
180 last;
181 }
182 if ($reverse ne $country)
183 {
184 $ok = 0;
185 last;
186 }
187}
188print ($ok ? "ok 6\n" : "not ok 6\n");
189
190#-----------------------------------------------------------------------
191# country to code, back to country, using LOCALE_CODE_ALPHA_3
192#-----------------------------------------------------------------------
193$ok = 1;
194foreach $country (all_country_names())
195{
196 $code = country2code($country, LOCALE_CODE_ALPHA_3);
197 if (!defined $code)
198 {
199 next if ($country eq 'Antarctica'
200 || $country eq 'Bouvet Island'
201 || $country eq 'Cocos (Keeling) Islands'
202 || $country eq 'Christmas Island'
203 || $country eq 'France, Metropolitan'
204 || $country eq 'South Georgia and the South Sandwich Islands'
205 || $country eq 'Heard Island and McDonald Islands'
206 || $country eq 'British Indian Ocean Territory'
207 || $country eq 'French Southern Territories'
208 || $country eq 'United States Minor Outlying Islands'
209 || $country eq 'Mayotte'
210 || $country eq 'Zaire');
211 $ok = 0;
212 last;
213 }
214 $reverse = code2country($code, LOCALE_CODE_ALPHA_3);
215 if (!defined $reverse)
216 {
217 $ok = 0;
218 last;
219 }
220 if ($reverse ne $country)
221 {
222 $ok = 0;
223 last;
224 }
225}
226print ($ok ? "ok 7\n" : "not ok 7\n");
227
228#-----------------------------------------------------------------------
229# country to code, back to country, using LOCALE_CODE_NUMERIC
230#-----------------------------------------------------------------------
231$ok = 1;
232foreach $country (all_country_names())
233{
234 $code = country2code($country, LOCALE_CODE_NUMERIC);
235 if (!defined $code)
236 {
237 next if ($country eq 'Antarctica'
238 || $country eq 'Bouvet Island'
239 || $country eq 'Cocos (Keeling) Islands'
240 || $country eq 'Christmas Island'
241 || $country eq 'France, Metropolitan'
242 || $country eq 'South Georgia and the South Sandwich Islands'
243 || $country eq 'Heard Island and McDonald Islands'
244 || $country eq 'British Indian Ocean Territory'
245 || $country eq 'French Southern Territories'
246 || $country eq 'United States Minor Outlying Islands'
247 || $country eq 'Mayotte'
248 || $country eq 'Zaire');
249 $ok = 0;
250 last;
251 }
252 $reverse = code2country($code, LOCALE_CODE_NUMERIC);
253 if (!defined $reverse)
254 {
255 $ok = 0;
256 last;
257 }
258 if ($reverse ne $country)
259 {
260 $ok = 0;
261 last;
262 }
263}
264print ($ok ? "ok 8\n" : "not ok 8\n");
265
266
267$ok = 1;
268foreach $code (all_language_codes())
269{
270 $language = code2language($code);
271 if (!defined $language)
272 {
273 $ok = 0;
274 last;
275 }
276 $reverse = language2code($language);
277 if (!defined $reverse)
278 {
279 $ok = 0;
280 last;
281 }
282 if ($reverse ne $code)
283 {
284 $ok = 0;
285 last;
286 }
287}
288print ($ok ? "ok 9\n" : "not ok 9\n");
289
290
291$ok = 1;
292foreach $language (all_language_names())
293{
294 $code = language2code($language);
295 if (!defined $code)
296 {
297 $ok = 0;
298 last;
299 }
300 $reverse = code2language($code);
301 if (!defined $reverse)
302 {
303 $ok = 0;
304 last;
305 }
306 if ($reverse ne $language)
307 {
308 $ok = 0;
309 last;
310 }
311}
312print ($ok ? "ok 10\n" : "not ok 10\n");
313
314$ok = 1;
315foreach $code (all_currency_codes())
316{
317 $currency = code2currency($code);
318 if (!defined $currency)
319 {
320 $ok = 0;
321 last;
322 }
323 $reverse = currency2code($currency);
324 if (!defined $reverse)
325 {
326 $ok = 0;
327 last;
328 }
329 #
330 # three special cases:
331 # The Kwacha has two codes - used in Zambia and Malawi
332 # The Russian Ruble has two codes - rub and rur
333 # The Belarussian Ruble has two codes - byb and byr
334 if ($reverse ne $code
335 && $code ne 'mwk' && $code ne 'zmk'
336 && $code ne 'byr' && $code ne 'byb'
337 && $code ne 'rub' && $code ne 'rur')
338 {
339 $ok = 0;
340 last;
341 }
342}
343print ($ok ? "ok 11\n" : "not ok 11\n");
344
345$ok = 1;
346foreach $currency (all_currency_names())
347{
348 $code = currency2code($currency);
349 if (!defined $code)
350 {
351 $ok = 0;
352 last;
353 }
354 $reverse = code2currency($code);
355 if (!defined $reverse)
356 {
357 $ok = 0;
358 last;
359 }
360 if ($reverse ne $currency)
361 {
362 $ok = 0;
363 last;
364 }
365}
366print ($ok ? "ok 12\n" : "not ok 12\n");