#!./perl
#
# all.t - tests for all_* routines in
# Locale::Country
# Locale::Language
# Locale::Currency
# Locale::Script
#
# 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;
use Locale::Script;
print "1..20\n";
my $code;
my $language;
my $country;
my $ok;
my $reverse;
my $currency;
my $script;
#-----------------------------------------------------------------------
# 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");
#=======================================================================
#
# Locale::Script tests
#
#=======================================================================
#-----------------------------------------------------------------------
# Old API - without codeset specified, default to ALPHA_2
#-----------------------------------------------------------------------
$ok = 1;
foreach $code (all_script_codes())
{
$script = code2script($code);
if (!defined $script)
{
$ok = 0;
last;
}
$reverse = script2code($script);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $code)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 13\n" : "not ok 13\n");
#-----------------------------------------------------------------------
# code to script, back to code, for ALPHA2
#-----------------------------------------------------------------------
$ok = 1;
foreach $code (all_script_codes(LOCALE_CODE_ALPHA_2))
{
$script = code2script($code, LOCALE_CODE_ALPHA_2);
if (!defined $script)
{
$ok = 0;
last;
}
$reverse = script2code($script, LOCALE_CODE_ALPHA_2);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $code)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 14\n" : "not ok 14\n");
#-----------------------------------------------------------------------
# code to script, back to code, for ALPHA3
#-----------------------------------------------------------------------
$ok = 1;
foreach $code (all_script_codes(LOCALE_CODE_ALPHA_3))
{
$script = code2script($code, LOCALE_CODE_ALPHA_3);
if (!defined $script)
{
$ok = 0;
last;
}
$reverse = script2code($script, LOCALE_CODE_ALPHA_3);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $code)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 15\n" : "not ok 15\n");
#-----------------------------------------------------------------------
# code to script, back to code, for NUMERIC
#-----------------------------------------------------------------------
$ok = 1;
foreach $code (all_script_codes(LOCALE_CODE_NUMERIC))
{
$script = code2script($code, LOCALE_CODE_NUMERIC);
if (!defined $script)
{
$ok = 0;
last;
}
$reverse = script2code($script, LOCALE_CODE_NUMERIC);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $code)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 16\n" : "not ok 16\n");
#-----------------------------------------------------------------------
# Old API - script to code, back to script, using default of ALPHA_2
#-----------------------------------------------------------------------
$ok = 1;
foreach $script (all_script_names())
{
$code = script2code($script);
if (!defined $code)
{
$ok = 0;
last;
}
$reverse = code2script($code);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $script)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 17\n" : "not ok 17\n");
#-----------------------------------------------------------------------
# script to code, back to script, using LOCALE_CODE_ALPHA_2
#-----------------------------------------------------------------------
$ok = 1;
foreach $script (all_script_names())
{
$code = script2code($script, LOCALE_CODE_ALPHA_2);
if (!defined $code)
{
$ok = 0;
last;
}
$reverse = code2script($code, LOCALE_CODE_ALPHA_2);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $script)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 18\n" : "not ok 18\n");
#-----------------------------------------------------------------------
# script to code, back to script, using LOCALE_CODE_ALPHA_3
#-----------------------------------------------------------------------
$ok = 1;
foreach $script (all_script_names())
{
$code = script2code($script, LOCALE_CODE_ALPHA_3);
if (!defined $code)
{
$ok = 0;
last;
}
$reverse = code2script($code, LOCALE_CODE_ALPHA_3);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $script)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 19\n" : "not ok 19\n");
#-----------------------------------------------------------------------
# script to code, back to script, using LOCALE_CODE_NUMERIC
#-----------------------------------------------------------------------
$ok = 1;
foreach $script (all_script_names())
{
$code = script2code($script, LOCALE_CODE_NUMERIC);
if (!defined $code)
{
$ok = 0;
last;
}
$reverse = code2script($code, LOCALE_CODE_NUMERIC);
if (!defined $reverse)
{
$ok = 0;
last;
}
if ($reverse ne $script)
{
$ok = 0;
last;
}
}
print ($ok ? "ok 20\n" : "not ok 20\n");