1use strict; 2use Test::More tests => 67; 3BEGIN {use_ok('I18N::LangTags', ':ALL');} 4 5note("Perl v$], I18N::LangTags v$I18N::LangTags::VERSION"); 6 7foreach (['', 0], 8 ['fr', 1], 9 ['fr-ca', 1], 10 ['fr-CA', 1], 11 ['fr-CA-', 0], 12 ['fr_CA', 0], 13 ['fr-ca-joal', 1], 14 ['frca', 0], 15 ['nav', 1, 'not actual tag'], 16 ['nav-shiprock', 1, 'not actual tag'], 17 ['nav-ceremonial', 0, 'subtag too long'], 18 ['x', 0], 19 ['i', 0], 20 ['i-borg', 1, 'fictitious tag'], 21 ['x-borg', 1], 22 ['x-borg-prot5123', 1], 23 ) { 24 my ($tag, $expect, $note) = @$_; 25 $note = $note ? " # $note" : ''; 26 is(is_language_tag($tag), $expect, "is_language_tag('$tag')$note"); 27} 28foreach ( 29 [ [ 'x-borg-prot5123', 'i-BORG-Prot5123' ], 1], 30 [ [ 'en', 'en-us' ], 0], 31) { 32 my ($tags, $expect, $note) = @$_; 33 $note = $note ? " # $note" : ''; 34 is(same_language_tag(@{$tags}), $expect, "same_language_tag('@{$tags}')$note"); 35} 36 37foreach ( 38 [ [ 'en-ca', 'fr-ca' ], 0 ], 39 [ [ 'en-ca', 'en-us' ], 1 ], 40 [ [ 'en-us-southern', 'en-us-western' ], 2 ], 41 [ [ 'en-us-southern', 'en-us' ], 2 ], 42) { 43 my ($tags, $expect, $note) = @$_; 44 $note = $note ? " # $note" : ''; 45 is(similarity_language_tag(@{$tags}), $expect, "similarity_language_tag('@{$tags}')$note"); 46} 47 48ok ((grep $_ eq 'hi', panic_languages('kok')), 49 "'hi' is a panic language for 'kok'"); 50ok ((grep $_ eq 'en', panic_languages('x-woozle-wuzzle')), 51 "'en' is a panic language for 'x-woozle-wuzzle'"); 52ok ((! grep $_ eq 'mr', panic_languages('it')), 53 "'mr' is not a panic language for 'it'"); 54ok ((grep $_ eq 'es', panic_languages('it')), 55 "'es' is a panic language for 'it'"); 56ok ((grep $_ eq 'it', panic_languages('es')), 57 "'it' is a panic language for 'es'"); 58 59note("Now the ::List tests..."); 60note("# Perl v$], I18N::LangTags::List v$I18N::LangTags::List::VERSION"); 61 62use I18N::LangTags::List; 63foreach my $lt (qw( 64 en 65 en-us 66 en-kr 67 el 68 elx 69 i-mingo 70 i-mingo-tom 71 x-mingo-tom 72 it 73 it-it 74 it-IT 75 it-FR 76 ak 77 aka 78 jv 79 jw 80 no 81 no-nyn 82 nn 83 i-lux 84 lb 85 wa 86 yi 87 ji 88 den-syllabic 89 den-syllabic-western 90 den-western 91 den-latin 92 cre-syllabic 93 cre-syllabic-western 94 cre-western 95 cre-latin 96 cr-syllabic 97 cr-syllabic-western 98 cr-western 99 cr-latin 100 az-latin 101)) { 102 my $name = I18N::LangTags::List::name($lt); 103 isnt($name, undef, "I18N::LangTags::List::name('$lt')"); 104} 105 106my $correct = 'Azerbaijani in Latin script'; 107is(I18N::LangTags::List::name('az-Latn'), $correct, 108 "Properly recognize 'az-latin' (with script subcomponent): # #16500"); 109is(I18N::LangTags::List::name('az-latn'), $correct, 110 "Properly recognize 'az-latin' (with script subcomponent): # #16500"); 111