Move I18N::LangTags from ext/ to dist/
[perl.git] / dist / I18N-LangTags / t / 10_http.t
1
2 # Time-stamp: "2004-06-17 23:06:22 PDT"
3
4 use I18N::LangTags::Detect;
5
6 use Test;
7 BEGIN { plan tests => 87 };
8
9 my @in = grep m/\S/, split /\n/, q{
10
11 [ sv      ]  sv
12 [ en      ]  en
13 [ en fi   ]  en, fi
14 [ en-us   ]  en-us
15 [ en-us   ]  en-US
16 [ en-us   ]  EN-US
17
18 [ en-au en i-klingon x-klingon en-gb en-us mt-mt mt ja ]  EN-au, JA;q=0.14, i-klingon;q=0.83, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86
19 [ en-au en i-klingon x-klingon en-gb en-us mt-mt mt tli ja ]  EN-au, tli;q=0.201, JA;q=0.14, i-klingon;q=0.83, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86
20 [ en-au en en-gb en-us ja  ]  en-au, ja;q=0.20, en-gb;q=0.60, en-us;q=0.40, en;q=0.80
21
22 [ en-au en en-gb en-us mt-mt mt ja ]  EN-au, JA;q=0.14, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86
23 [ en-au en en-gb en-us ja  ]  en-au, ja;q=0.20, en-gb;q=0.60, en-us;q=0.40, en;q=0.80
24 [ en fr           ]  en;q=1,fr;q=.5
25 [ en fr           ]  en;q=1,fr;q=.99
26 [ en ru ko        ]  en, ru;q=0.7, ko;q=0.3
27 [ en ru ko        ]  en, ru;q=0.7, KO;q=0.3
28 [ en-us en        ]  en-us, en;q=0.50
29 [ en fr           ]  fr ; q = 0.9, en
30 [ en fr           ]  en,fr;q=.90
31 [ ru en-uk en fr  ]  ru, en-UK;q=0.5, en;q=0.3, fr;q=0.1
32 [ en-us fr es-mx  ]  en-us,fr;q=0.7,es-mx;q=0.3 
33 [ en-us en        ]  en-us, en;q=0.50 
34
35 [ da en-gb en       ]  da, en-gb;q=0.8, en;q=0.7
36 [ da en-gb en       ]  da, en;q=0.7, en-gb;q=0.8
37 [ da en-gb en       ]  da, en-gb;q=0.8, en;q=0.7
38 [ da en-gb en       ]  da,en;q=0.7,en-gb;q=0.8
39 [ da en-gb en       ]  da, en-gb ; q=0.8, en ; q=0.7
40 [ da en-gb en       ]  da , en-gb ; q = 0.8 , en ; q  =0.7
41 [ da en-gb en       ]  da (yup, Danish) , en-gb ; q = 0.8 , en ; q  =0.7
42
43 [ no dk en-uk en-us ]  en-UK;q=0.7, en-US;q=0.6, no;q=1.0, dk;q=0.8
44 [ no dk en-uk en-us ]  en-US;q=0.6, en-UK;q=0.7, no;q=1.0, dk;q=0.8
45 [ no dk en-uk en-us ]  en-UK;q=0.7, no;q=1.0, en-US;q=0.6, dk;q=0.8
46 [ no dk en-uk en-us ]  en-UK;q=0.7, no;q=1.0, dk;q=0.8, en-US;q=0.6
47
48 [ fi en ]  fi;q=1, en;q=0.2
49 [ de-de de en en-us en-gb ]  de-DE, de;q=0.80, en;q=0.60, en-US;q=0.40, en-GB;q=0.20
50 [ ru          ]  ru; q=1, *; q=0.1
51 [ ru en       ]  ru, en; q=0.1
52 [ ja en       ]  ja,en;q=0.5
53 [ en          ]  en; q=1.0
54 [ ja          ]  ja; q=1.0
55 [ ja          ]  ja; q=1.0
56 [ en ja       ]  en; q=0.5, ja; q=0.5
57 [ fr-ca fr en ]  fr-ca, fr;q=0.8, en;q=0.7
58 [ NIX ] NIX
59 };
60
61 foreach my $in (@in) {
62   $in =~ s/^\s*\[([^\]]+)\]\s*//s or die "Bad input: $in";
63   my @should = do { my $x = $1; $x =~ m/(\S+)/g };
64
65   if($in eq 'NIX') { $in = ''; @should = (); }
66
67   local $ENV{'HTTP_ACCEPT_LANGUAGE'};
68   
69   foreach my $modus (
70     sub {
71       print "# Testing with arg...\n";
72       $ENV{'HTTP_ACCEPT_LANGUAGE'} = 'PLORK';
73       return $_[0];
74     },
75     sub {
76       print "# Testing wath HTTP_ACCEPT_LANGUAGE...\n";
77       $ENV{'HTTP_ACCEPT_LANGUAGE'} = $_[0];
78      return();
79     },
80   ) {
81     my @args = &$modus($in);
82
83     # ////////////////////////////////////////////////////
84     my @out = I18N::LangTags::Detect->http_accept_langs(@args);
85     # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
86
87     if(
88      @out == @should
89        and lc( join "\e", @out ) eq lc( join "\e", @should )
90     ) {
91       print "# Happily got [@out] from [$in]\n";
92       ok 1;
93     } else {
94       ok 0;
95       print "#Got:         [@out]\n",
96             "# but wanted: [@should]\n",
97             "# < \"$in\"\n#\n";
98     }
99   }
100 }
101
102 print "#\n#\n# Bye-bye!\n";
103 ok 1;
104