1use strict;
2#sub I18N::LangTags::Detect::DEBUG () {10}
3
4use Test::More tests => 19;
5BEGIN {use_ok('I18N::LangTags', 'implicate_supers_strictly');}
6
7note('Testing strict (non-tight) insertion of super-ordinate language tags');
8
9my @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 fr pt
17    pt-br fr pt => pt-br fr pt
18 pt-br fr pt de => pt-br fr pt de
19 de pt-br fr pt => de pt-br fr pt
20    de pt-br fr => de pt-br fr pt
21   hai pt-br fr => hai pt-br fr  pt
22
23# Now test multi-part complicateds:
24   pt-br-janeiro fr => pt-br-janeiro fr pt-br pt
25pt-br-janeiro de fr => pt-br-janeiro de fr pt-br pt
26pt-br-janeiro de pt fr => pt-br-janeiro de pt fr pt-br
27
28ja    pt-br-janeiro fr => ja pt-br-janeiro fr pt-br pt
29ja pt-br-janeiro de fr => ja pt-br-janeiro de fr pt-br pt
30ja pt-br-janeiro de pt fr => ja pt-br-janeiro de pt fr pt-br
31
32pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br fr pt
33 # an odd case, since we don't filter for uniqueness in this sub
34
35};
36
37
38foreach my $in (@in) {
39  $in =~ s/^\s+//s;
40  $in =~ s/\s+$//s;
41  $in =~ s/#.+//s;
42  next unless $in =~ m/\S/;
43
44  my(@in, @should);
45  {
46    die "What kind of line is <$in>?!"
47     unless $in =~ m/^(.+)=>(.+)$/s;
48
49    my($i,$s) = ($1, $2);
50    @in     = ($i =~ m/(\S+)/g);
51    @should = ($s =~ m/(\S+)/g);
52  }
53  my @out = I18N::LangTags::implicate_supers_strictly(
54    ("@in" eq 'NIX') ? () : @in
55  );
56  @out = 'NIX' unless @out;
57
58  is_deeply(\@out, \@should, "implicate_supers_strictly for [$in]");
59}
60