9923c840685cc924d5ec6869a0503d429111cf18
[perl.git] / ext / I18N-LangTags / t / 50_super.t
1
2 # Time-stamp: "2004-03-30 17:46:17 AST"
3
4 use Test;
5 BEGIN { plan tests => 26 };
6 print "#\n# Testing normal (tight) insertion of super-ordinate language tags...\n#\n";
7
8 use I18N::LangTags qw(implicate_supers);
9
10 my @in = grep m/\S/, split /[\n\r]/, q{
11  NIX => NIX
12   sv => sv
13   en => en
14  hai => hai
15
16           pt-br => pt-br pt
17        pt-br fr => pt-br pt fr
18     pt-br fr pt => pt-br fr pt
19
20  pt-br fr pt de => pt-br fr pt de
21  de pt-br fr pt => de pt-br fr pt
22     de pt-br fr => de pt-br pt fr
23    hai pt-br fr => hai pt-br pt fr
24
25  # Now test multi-part complicateds:
26           pt-br-janeiro => pt-br-janeiro pt-br pt
27        pt-br-janeiro fr => pt-br-janeiro pt-br pt fr
28     pt-br-janeiro de fr => pt-br-janeiro pt-br pt de fr
29  pt-br-janeiro de pt fr => pt-br-janeiro pt-br de pt fr
30
31           pt-br-janeiro pt-br-saopaolo => pt-br-janeiro pt-br pt pt-br-saopaolo
32        pt-br-janeiro fr pt-br-saopaolo => pt-br-janeiro pt-br pt fr pt-br-saopaolo
33     pt-br-janeiro de pt-br-saopaolo fr => pt-br-janeiro pt-br pt de pt-br-saopaolo fr
34     pt-br-janeiro de pt-br fr pt-br-saopaolo => pt-br-janeiro de pt-br pt fr pt-br-saopaolo
35
36  pt-br de en fr pt-br-janeiro => pt-br pt de en fr pt-br-janeiro
37  pt-br de en fr               => pt-br pt de en fr
38
39     ja    pt-br-janeiro fr => ja pt-br-janeiro pt-br pt fr
40     ja pt-br-janeiro de fr => ja pt-br-janeiro pt-br pt de fr
41  ja pt-br-janeiro de pt fr => ja pt-br-janeiro pt-br de pt fr
42
43  pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br pt fr
44 # an odd case, since we don't filter for uniqueness in this sub
45  
46 };
47
48 sub uniq { my %seen; return grep(!($seen{$_}++), @_); }
49
50 foreach my $in (@in) {
51   $in =~ s/^\s+//s;
52   $in =~ s/\s+$//s;
53   $in =~ s/#.+//s;
54   next unless $in =~ m/\S/;
55   
56   my(@in, @should);
57   {
58     die "What kind of line is <$in>?!"
59      unless $in =~ m/^(.+)=>(.+)$/s;
60   
61     my($i,$s) = ($1, $2);
62     @in     = ($i =~ m/(\S+)/g);
63     @should = ($s =~ m/(\S+)/g);
64     #print "{@in}{@should}\n";
65   }
66   my @out = implicate_supers(
67     ("@in" eq 'NIX') ? () : @in
68   );
69   #print "O: ", join(' ', map "<$_>", @out), "\n";
70   @out = 'NIX' unless @out;
71
72   
73   if( @out == @should
74       and lc( join "\e", @out ) eq lc( join "\e", @should )
75   ) {
76     print "#     Happily got [@out] from [$in]\n";
77     ok 1;
78   } else {
79     ok 0;
80     print "#!!Got:         [@out]\n",
81           "#!! but wanted: [@should]\n",
82           "#!! from \"$in\"\n#\n";
83   }
84 }
85
86 print "#\n#\n# Bye-bye!\n";
87 ok 1;
88