The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test::More;
# Time-stamp: "2004-07-01 14:33:50 ADT"
BEGIN { plan tests => 12; }
use I18N::LangTags::Detect v1.01;
print $^STDOUT, "# Hi there...\n";
ok 1;

print $^STDOUT, "# Using I18N::LangTags::Detect v$I18N::LangTags::Detect::VERSION\n";

print $^STDOUT, "# Make sure we can assign to ENV entries\n",
      "# (Otherwise we can't run the subsequent tests)...\n";
env::var('MYORP'   ) = 'Zing';          is env::var('MYORP'), 'Zing';
env::var('SWUZ'    ) = 'KLORTHO HOOBOY'; is env::var('SWUZ'), 'KLORTHO HOOBOY';

env::var('MYORP') = undef;
env::var('SWUZ') = undef;

sub j { "[" . join(' ', map { "\"$_\"" }, @_) . "]" ;}

sub show {
  print $^STDOUT, "#  (Seeing \{", join(' ', map( {dump::view($_) }, @_)), "\} at line ", @(caller)[2], ")\n";
  printenv();
  return @_[0] || '';
}
sub printenv {
  print $^STDOUT, "# ENV:\n";
  foreach my $k (sort { $a cmp $b }, env::keys()) {
    my $p = env::var($k);  $p =~ s/\n/\n#/g;
    print $^STDOUT, "#   [$k] = [$p]\n"; }
  print $^STDOUT, "# [end of ENV]\n#\n";
}

env::var('IGNORE_WIN32_LOCALE' ) = 1; # a hack, just for testing's sake.


print $^STDOUT, "# Test LANGUAGE...\n";
env::var('REQUEST_METHOD' ) = '';
env::var('LANGUAGE'       ) = 'Eu-MT';
env::var('LC_ALL'         ) = '';
env::var('LC_MESSAGES'    ) = '';
env::var('LANG'           ) = '';
is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};


print $^STDOUT, "# Test LC_ALL...\n";
env::var('REQUEST_METHOD' ) = '';
env::var('LANGUAGE'       ) = '';
env::var('LC_ALL'         ) = 'Eu-MT';
env::var('LC_MESSAGES'    ) = '';
env::var('LANG'           ) = '';

is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};

print $^STDOUT, "# Test LC_MESSAGES...\n";
env::var('REQUEST_METHOD' ) = '';
env::var('LANGUAGE'       ) = '';
env::var('LC_ALL'         ) = '';
env::var('LC_MESSAGES'    ) = 'Eu-MT';
env::var('LANG'           ) = '';

is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};


print $^STDOUT, "# Test LANG...\n";
env::var('REQUEST_METHOD' ) = '';
env::var('LANGUAGE'       ) = '';
env::var('LC_ALL'         ) = '';
env::var('LC_MESSAGES'    ) = '';
env::var('LANG'           ) = 'Eu_MT';

is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};



print $^STDOUT, "# Test LANG...\n";
env::var('LANGUAGE' ) = '';
env::var('REQUEST_METHOD' ) = '';
env::var('LC_ALL' ) = '';
env::var('LC_MESSAGES' ) = '';
env::var('LANG'     ) = 'Eu_MT';

is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};




print $^STDOUT, "# Test HTTP_ACCEPT_LANGUAGE...\n";
env::var('REQUEST_METHOD'       ) = 'GET';
env::var('HTTP_ACCEPT_LANGUAGE' ) = 'eu-MT';
is show( j <      I18N::LangTags::Detect::detect()), q{["eu-mt"]};


env::var('HTTP_ACCEPT_LANGUAGE' ) = 'x-plorp, zaz, eu-MT, i-klung';
is show( j <      I18N::LangTags::Detect::detect()), qq{["x-plorp" "i-plorp" "zaz" "eu-mt" "i-klung" "x-klung"]};

env::var('HTTP_ACCEPT_LANGUAGE' ) = 'x-plorp, zaz, eU-Mt, i-klung';
is show( j <      I18N::LangTags::Detect::detect()), qq{["x-plorp" "i-plorp" "zaz" "eu-mt" "i-klung" "x-klung"]};




print $^STDOUT, "# Byebye!\n";
ok 1;