This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Convert I18N::LangTags to Test::More from Test.
[perl5.git] / dist / I18N-LangTags / t / 10_http.t
CommitLineData
6aaed204 1use strict;
8000a3fa
RGS
2
3use I18N::LangTags::Detect;
4
6aaed204 5use Test::More;
8000a3fa
RGS
6
7my @in = grep m/\S/, split /\n/, q{
8
9[ sv ] sv
10[ en ] en
11[ en fi ] en, fi
12[ en-us ] en-us
13[ en-us ] en-US
14[ en-us ] EN-US
15
8575f5e6
RGS
16[ 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
17[ 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
8000a3fa
RGS
18[ 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
19
20[ 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
21[ 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
22[ en fr ] en;q=1,fr;q=.5
23[ en fr ] en;q=1,fr;q=.99
24[ en ru ko ] en, ru;q=0.7, ko;q=0.3
25[ en ru ko ] en, ru;q=0.7, KO;q=0.3
26[ en-us en ] en-us, en;q=0.50
27[ en fr ] fr ; q = 0.9, en
28[ en fr ] en,fr;q=.90
29[ ru en-uk en fr ] ru, en-UK;q=0.5, en;q=0.3, fr;q=0.1
30[ en-us fr es-mx ] en-us,fr;q=0.7,es-mx;q=0.3
31[ en-us en ] en-us, en;q=0.50
32
33[ da en-gb en ] da, en-gb;q=0.8, en;q=0.7
34[ da en-gb en ] da, en;q=0.7, en-gb;q=0.8
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-gb ; q = 0.8 , en ; q =0.7
39[ da en-gb en ] da (yup, Danish) , en-gb ; q = 0.8 , en ; q =0.7
40
41[ no dk en-uk en-us ] en-UK;q=0.7, en-US;q=0.6, no;q=1.0, dk;q=0.8
42[ no dk en-uk en-us ] en-US;q=0.6, en-UK;q=0.7, no;q=1.0, dk;q=0.8
43[ no dk en-uk en-us ] en-UK;q=0.7, no;q=1.0, en-US;q=0.6, dk;q=0.8
44[ no dk en-uk en-us ] en-UK;q=0.7, no;q=1.0, dk;q=0.8, en-US;q=0.6
45
46[ fi en ] fi;q=1, en;q=0.2
47[ 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
48[ ru ] ru; q=1, *; q=0.1
49[ ru en ] ru, en; q=0.1
50[ ja en ] ja,en;q=0.5
51[ en ] en; q=1.0
52[ ja ] ja; q=1.0
53[ ja ] ja; q=1.0
54[ en ja ] en; q=0.5, ja; q=0.5
55[ fr-ca fr en ] fr-ca, fr;q=0.8, en;q=0.7
56[ NIX ] NIX
57};
58
6aaed204 59plan(tests => 2 * @in);
8000a3fa
RGS
60foreach my $in (@in) {
61 $in =~ s/^\s*\[([^\]]+)\]\s*//s or die "Bad input: $in";
62 my @should = do { my $x = $1; $x =~ m/(\S+)/g };
63
64 if($in eq 'NIX') { $in = ''; @should = (); }
65
66 local $ENV{'HTTP_ACCEPT_LANGUAGE'};
67
6aaed204
NC
68 foreach (
69 ['arg', sub {
8000a3fa
RGS
70 print "# Testing with arg...\n";
71 $ENV{'HTTP_ACCEPT_LANGUAGE'} = 'PLORK';
72 return $_[0];
6aaed204
NC
73 }],
74 ['HTTP_ACCEPT_LANGUAGE', sub {
8000a3fa
RGS
75 print "# Testing wath HTTP_ACCEPT_LANGUAGE...\n";
76 $ENV{'HTTP_ACCEPT_LANGUAGE'} = $_[0];
77 return();
6aaed204
NC
78 }],
79 ) {
80 my ($type, $modus) = @$_;
8000a3fa
RGS
81 my @args = &$modus($in);
82
83 # ////////////////////////////////////////////////////
84 my @out = I18N::LangTags::Detect->http_accept_langs(@args);
85 # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
86
6aaed204 87 is_deeply(\@out, \@should, "Testing [$in] with $type");
8000a3fa
RGS
88 }
89}