#!./perl # # all.t - tests for all_* routines in # Locale::Country # Locale::Language # Locale::Currency # # There are four tests. We get a list of all codes, convert to # language/country/currency, # convert back to code, # and check that they're the same. Then we do the same, # starting with list of languages/countries/currencies. # BEGIN { chdir 't' if -d 't'; @INC = '../lib'; } use Locale::Country; use Locale::Language; use Locale::Currency; print "1..12\n"; my $code; my $language; my $country; my $ok; my $reverse; my $currency; #----------------------------------------------------------------------- # Old API - without codeset specified, default to ALPHA_2 #----------------------------------------------------------------------- $ok = 1; foreach $code (all_country_codes()) { $country = code2country($code); if (!defined $country) { $ok = 0; last; } $reverse = country2code($country); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $code) { $ok = 0; last; } } print ($ok ? "ok 1\n" : "not ok 1\n"); #----------------------------------------------------------------------- # code to country, back to code, for ALPHA2 #----------------------------------------------------------------------- $ok = 1; foreach $code (all_country_codes(LOCALE_CODE_ALPHA_2)) { $country = code2country($code, LOCALE_CODE_ALPHA_2); if (!defined $country) { $ok = 0; last; } $reverse = country2code($country, LOCALE_CODE_ALPHA_2); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $code) { $ok = 0; last; } } print ($ok ? "ok 2\n" : "not ok 2\n"); #----------------------------------------------------------------------- # code to country, back to code, for ALPHA3 #----------------------------------------------------------------------- $ok = 1; foreach $code (all_country_codes(LOCALE_CODE_ALPHA_3)) { $country = code2country($code, LOCALE_CODE_ALPHA_3); if (!defined $country) { $ok = 0; last; } $reverse = country2code($country, LOCALE_CODE_ALPHA_3); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $code) { $ok = 0; last; } } print ($ok ? "ok 3\n" : "not ok 3\n"); #----------------------------------------------------------------------- # code to country, back to code, for NUMERIC #----------------------------------------------------------------------- $ok = 1; foreach $code (all_country_codes(LOCALE_CODE_NUMERIC)) { $country = code2country($code, LOCALE_CODE_NUMERIC); if (!defined $country) { $ok = 0; last; } $reverse = country2code($country, LOCALE_CODE_NUMERIC); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $code) { $ok = 0; last; } } print ($ok ? "ok 4\n" : "not ok 4\n"); #----------------------------------------------------------------------- # Old API - country to code, back to country, using default of ALPHA_2 #----------------------------------------------------------------------- $ok = 1; foreach $country (all_country_names()) { $code = country2code($country); if (!defined $code) { $ok = 0; last; } $reverse = code2country($code); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $country) { $ok = 0; last; } } print ($ok ? "ok 5\n" : "not ok 5\n"); #----------------------------------------------------------------------- # country to code, back to country, using LOCALE_CODE_ALPHA_2 #----------------------------------------------------------------------- $ok = 1; foreach $country (all_country_names()) { $code = country2code($country, LOCALE_CODE_ALPHA_2); if (!defined $code) { $ok = 0; last; } $reverse = code2country($code, LOCALE_CODE_ALPHA_2); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $country) { $ok = 0; last; } } print ($ok ? "ok 6\n" : "not ok 6\n"); #----------------------------------------------------------------------- # country to code, back to country, using LOCALE_CODE_ALPHA_3 #----------------------------------------------------------------------- $ok = 1; foreach $country (all_country_names()) { $code = country2code($country, LOCALE_CODE_ALPHA_3); if (!defined $code) { next if ($country eq 'Antarctica' || $country eq 'Bouvet Island' || $country eq 'Cocos (Keeling) Islands' || $country eq 'Christmas Island' || $country eq 'France, Metropolitan' || $country eq 'South Georgia and the South Sandwich Islands' || $country eq 'Heard Island and McDonald Islands' || $country eq 'British Indian Ocean Territory' || $country eq 'French Southern Territories' || $country eq 'United States Minor Outlying Islands' || $country eq 'Mayotte' || $country eq 'Zaire'); $ok = 0; last; } $reverse = code2country($code, LOCALE_CODE_ALPHA_3); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $country) { $ok = 0; last; } } print ($ok ? "ok 7\n" : "not ok 7\n"); #----------------------------------------------------------------------- # country to code, back to country, using LOCALE_CODE_NUMERIC #----------------------------------------------------------------------- $ok = 1; foreach $country (all_country_names()) { $code = country2code($country, LOCALE_CODE_NUMERIC); if (!defined $code) { next if ($country eq 'Antarctica' || $country eq 'Bouvet Island' || $country eq 'Cocos (Keeling) Islands' || $country eq 'Christmas Island' || $country eq 'France, Metropolitan' || $country eq 'South Georgia and the South Sandwich Islands' || $country eq 'Heard Island and McDonald Islands' || $country eq 'British Indian Ocean Territory' || $country eq 'French Southern Territories' || $country eq 'United States Minor Outlying Islands' || $country eq 'Mayotte' || $country eq 'Zaire'); $ok = 0; last; } $reverse = code2country($code, LOCALE_CODE_NUMERIC); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $country) { $ok = 0; last; } } print ($ok ? "ok 8\n" : "not ok 8\n"); $ok = 1; foreach $code (all_language_codes()) { $language = code2language($code); if (!defined $language) { $ok = 0; last; } $reverse = language2code($language); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $code) { $ok = 0; last; } } print ($ok ? "ok 9\n" : "not ok 9\n"); $ok = 1; foreach $language (all_language_names()) { $code = language2code($language); if (!defined $code) { $ok = 0; last; } $reverse = code2language($code); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $language) { $ok = 0; last; } } print ($ok ? "ok 10\n" : "not ok 10\n"); $ok = 1; foreach $code (all_currency_codes()) { $currency = code2currency($code); if (!defined $currency) { $ok = 0; last; } $reverse = currency2code($currency); if (!defined $reverse) { $ok = 0; last; } # # three special cases: # The Kwacha has two codes - used in Zambia and Malawi # The Russian Ruble has two codes - rub and rur # The Belarussian Ruble has two codes - byb and byr if ($reverse ne $code && $code ne 'mwk' && $code ne 'zmk' && $code ne 'byr' && $code ne 'byb' && $code ne 'rub' && $code ne 'rur') { $ok = 0; last; } } print ($ok ? "ok 11\n" : "not ok 11\n"); $ok = 1; foreach $currency (all_currency_names()) { $code = currency2code($currency); if (!defined $code) { $ok = 0; last; } $reverse = code2currency($code); if (!defined $reverse) { $ok = 0; last; } if ($reverse ne $currency) { $ok = 0; last; } } print ($ok ? "ok 12\n" : "not ok 12\n");