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