xref: /openbsd-src/gnu/usr.bin/perl/dist/I18N-LangTags/t/05_main.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
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