use strict; use Test::More tests => 64; BEGIN {use_ok('I18N::LangTags', ':ALL');} note("Perl v$], I18N::LangTags v$I18N::LangTags::VERSION"); foreach (['', 0], ['fr', 1], ['fr-ca', 1], ['fr-CA', 1], ['fr-CA-', 0], ['fr_CA', 0], ['fr-ca-joal', 1], ['frca', 0], ['nav', 1, 'not actual tag'], ['nav-shiprock', 1, 'not actual tag'], ['nav-ceremonial', 0, 'subtag too long'], ['x', 0], ['i', 0], ['i-borg', 1, 'fictitious tag'], ['x-borg', 1], ['x-borg-prot5123', 1], ) { my ($tag, $expect, $note) = @$_; $note = $note ? " # $note" : ''; is(is_language_tag($tag), $expect, "is_language_tag('$tag')$note"); } is(same_language_tag('x-borg-prot5123', 'i-BORG-Prot5123'), 1); is(same_language_tag('en', 'en-us'), 0); is(similarity_language_tag('en-ca', 'fr-ca'), 0); is(similarity_language_tag('en-ca', 'en-us'), 1); is(similarity_language_tag('en-us-southern', 'en-us-western'), 2); is(similarity_language_tag('en-us-southern', 'en-us'), 2); ok grep $_ eq 'hi', panic_languages('kok'); ok grep $_ eq 'en', panic_languages('x-woozle-wuzzle'); ok ! grep $_ eq 'mr', panic_languages('it'); ok grep $_ eq 'es', panic_languages('it'); ok grep $_ eq 'it', panic_languages('es'); note("Now the ::List tests..."); note("# Perl v$], I18N::LangTags::List v$I18N::LangTags::List::VERSION"); use I18N::LangTags::List; foreach my $lt (qw( en en-us en-kr el elx i-mingo i-mingo-tom x-mingo-tom it it-it it-IT it-FR ak aka jv jw no no-nyn nn i-lux lb wa yi ji den-syllabic den-syllabic-western den-western den-latin cre-syllabic cre-syllabic-western cre-western cre-latin cr-syllabic cr-syllabic-western cr-western cr-latin )) { my $name = I18N::LangTags::List::name($lt); isnt($name, undef, "I18N::LangTags::List::name('$lt')"); }