Turn on UTF-8 flag only if the $str is valid utf8
[p5sagit/p5-mst-13.2.git] / lib / I18N / LangTags / test.pl
1 # Before `make install' is performed this script should be runnable with
2 # `make test'. After `make install' it should work as `perl test.pl'
3
4 ######################### We start with some black magic to print on failure.
5 require 5;
6  # Time-stamp: "2001-06-21 22:59:38 MDT"
7 use strict;
8 use Test;
9 BEGIN { plan tests => 46 };
10 BEGIN { ok 1 }
11 use I18N::LangTags (':ALL');
12
13 print "# Perl v$], I18N::LangTags v$I18N::LangTags::VERSION\n";
14
15 ok !is_language_tag('');
16 ok  is_language_tag('fr');
17 ok  is_language_tag('fr-ca');
18 ok  is_language_tag('fr-CA');
19 ok !is_language_tag('fr-CA-');
20 ok !is_language_tag('fr_CA');
21 ok  is_language_tag('fr-ca-joual');
22 ok !is_language_tag('frca');
23 ok  is_language_tag('nav');
24 ok  is_language_tag('nav-shiprock');
25 ok !is_language_tag('nav-ceremonial'); # subtag too long
26 ok !is_language_tag('x');
27 ok !is_language_tag('i');
28 ok  is_language_tag('i-borg'); # NB: fictitious tag
29 ok  is_language_tag('x-borg');
30 ok  is_language_tag('x-borg-prot5123');
31 ok  same_language_tag('x-borg-prot5123', 'i-BORG-Prot5123' );
32 ok !same_language_tag('en', 'en-us' );
33
34 ok 0 == similarity_language_tag('en-ca', 'fr-ca');
35 ok 1 == similarity_language_tag('en-ca', 'en-us');
36 ok 2 == similarity_language_tag('en-us-southern', 'en-us-western');
37 ok 2 == similarity_language_tag('en-us-southern', 'en-us');
38
39 ok grep $_ eq 'hi', panic_languages('kok');
40 ok grep $_ eq 'en', panic_languages('x-woozle-wuzzle');
41 ok ! grep $_ eq 'mr', panic_languages('it');
42 ok grep $_ eq 'es', panic_languages('it');
43 ok grep $_ eq 'it', panic_languages('es');
44
45
46 print "# Now the ::List tests...\n";
47 use I18N::LangTags::List;
48 foreach my $lt (qw(
49  en
50  en-us
51  en-kr
52  el
53  elx
54  i-mingo
55  i-mingo-tom
56  x-mingo-tom
57  it
58  it-it
59  it-IT
60  it-FR
61  yi
62  ji
63  cre-syllabic
64  cre-syllabic-western
65  cre-western
66  cre-latin
67 )) {
68   my $name = I18N::LangTags::List::name($lt);
69   if($name) {
70     ok(1);
71     print "#        $lt -> $name\n";
72   } else {
73     ok(0);
74     print "#        Failed lookup on $lt\n";
75   }
76 }
77
78 print "# So there!\n";
79