xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t (revision 898184e3e61f9129feb5978fad5a8c6865f00b92)
1*898184e3Ssthen
2*898184e3SsthenBEGIN {
3*898184e3Ssthen    unless ("A" eq pack('U', 0x41)) {
4*898184e3Ssthen	print "1..0 # Unicode::Collate " .
5*898184e3Ssthen	    "cannot stringify a Unicode code point\n";
6*898184e3Ssthen	exit 0;
7*898184e3Ssthen    }
8*898184e3Ssthen    if ($ENV{PERL_CORE}) {
9*898184e3Ssthen	chdir('t') if -d 't';
10*898184e3Ssthen	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
11*898184e3Ssthen    }
12*898184e3Ssthen}
13*898184e3Ssthen
14*898184e3Ssthenuse strict;
15*898184e3Ssthenuse warnings;
16*898184e3SsthenBEGIN { $| = 1; print "1..130\n"; }
17*898184e3Ssthenmy $count = 0;
18*898184e3Ssthensub ok ($;$) {
19*898184e3Ssthen    my $p = my $r = shift;
20*898184e3Ssthen    if (@_) {
21*898184e3Ssthen	my $x = shift;
22*898184e3Ssthen	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
23*898184e3Ssthen    }
24*898184e3Ssthen    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
25*898184e3Ssthen}
26*898184e3Ssthen
27*898184e3Ssthenuse Unicode::Collate::Locale;
28*898184e3Ssthen
29*898184e3Ssthenok(1);
30*898184e3Ssthen
31*898184e3Ssthen#########################
32*898184e3Ssthen
33*898184e3Ssthenour (@listEs, @listEsT, @listFr);
34*898184e3Ssthen
35*898184e3Ssthen@listEs = qw(
36*898184e3Ssthen    cambio camella camello camelo Camer�n
37*898184e3Ssthen    chico chile Chile CHILE chocolate
38*898184e3Ssthen    cielo curso espacio espanto espa�ol esperanza lama l�quido
39*898184e3Ssthen    llama Llama LLAMA llamar luz nos nueve �u ojo
40*898184e3Ssthen);
41*898184e3Ssthen
42*898184e3Ssthen@listEsT = qw(
43*898184e3Ssthen    cambio camelo camella camello Camer�n cielo curso
44*898184e3Ssthen    chico chile Chile CHILE chocolate
45*898184e3Ssthen    espacio espanto espa�ol esperanza lama l�quido luz
46*898184e3Ssthen    llama Llama LLAMA llamar nos nueve �u ojo
47*898184e3Ssthen);
48*898184e3Ssthen
49*898184e3Ssthen@listFr = (
50*898184e3Ssthen  qw(
51*898184e3Ssthen    cadurcien c�cum c�CUM C�CUM C�CUM caennais c�sium cafard
52*898184e3Ssthen    coercitif cote c�te C�te cot� Cot� c�t� C�t� coter
53*898184e3Ssthen    �l�ve �lev� g�ne g�ne M�CON ma�on
54*898184e3Ssthen    p�che P�CHE p�che P�CHE p�ch� P�CH� p�cher p�cher
55*898184e3Ssthen    rel�ve relev� r�v�le r�v�l�
56*898184e3Ssthen    sur�l�vation s�rement sur�minent s�ret�
57*898184e3Ssthen    vice-consul vicennal vice-pr�sident vice-roi vic�simal),
58*898184e3Ssthen  "vice versa", "vice-versa",
59*898184e3Ssthen);
60*898184e3Ssthen
61*898184e3Ssthenok(@listEs,  27);
62*898184e3Ssthenok(@listEsT, 27);
63*898184e3Ssthenok(@listFr,  46);
64*898184e3Ssthen
65*898184e3Ssthenok(Unicode::Collate::Locale::_locale('es_MX'), 'es');
66*898184e3Ssthenok(Unicode::Collate::Locale::_locale('en_CA'), 'default');
67*898184e3Ssthen
68*898184e3Ssthen# 6
69*898184e3Ssthen
70*898184e3Ssthenmy $Collator = Unicode::Collate::Locale->
71*898184e3Ssthen    new(normalization => undef);
72*898184e3Ssthenok($Collator->getlocale, 'default');
73*898184e3Ssthen
74*898184e3Ssthenok(
75*898184e3Ssthen  join(':', $Collator->sort(
76*898184e3Ssthen    qw/ lib strict Carp ExtUtils CGI Time warnings Math overload Pod CPAN /
77*898184e3Ssthen  ) ),
78*898184e3Ssthen  join(':',
79*898184e3Ssthen    qw/ Carp CGI CPAN ExtUtils lib Math overload Pod strict Time warnings /
80*898184e3Ssthen  ),
81*898184e3Ssthen);
82*898184e3Ssthen
83*898184e3Ssthenok($Collator->cmp("", ""), 0);
84*898184e3Ssthenok($Collator->eq("", ""));
85*898184e3Ssthenok($Collator->cmp("", "perl"), -1);
86*898184e3Ssthenok($Collator->gt("PERL", "perl"));
87*898184e3Ssthen
88*898184e3Ssthen# 12
89*898184e3Ssthen
90*898184e3Ssthen$Collator->change(level => 2);
91*898184e3Ssthen
92*898184e3Ssthenok($Collator->eq("PERL", "perl"));
93*898184e3Ssthen
94*898184e3Ssthenmy $objEs  = Unicode::Collate::Locale->new
95*898184e3Ssthen    (normalization => undef, locale => 'ES');
96*898184e3Ssthenok($objEs->getlocale, 'es');
97*898184e3Ssthen
98*898184e3Ssthenmy $objEsT = Unicode::Collate::Locale->new
99*898184e3Ssthen    (normalization => undef, locale => 'es_ES_traditional');
100*898184e3Ssthenok($objEsT->getlocale, 'es__traditional');
101*898184e3Ssthen
102*898184e3Ssthenmy $objFr  = Unicode::Collate::Locale->new
103*898184e3Ssthen    (normalization => undef, locale => 'FR');
104*898184e3Ssthenok($objFr->getlocale, 'fr');
105*898184e3Ssthen
106*898184e3Ssthen# 16
107*898184e3Ssthen
108*898184e3Ssthensub randomize { my %hash; @hash{@_} = (); keys %hash; } # ?!
109*898184e3Ssthen
110*898184e3Ssthenfor (my $i = 0; $i < $#listEs; $i++) {
111*898184e3Ssthen    ok($objEs->lt($listEs[$i], $listEs[$i+1]));
112*898184e3Ssthen}
113*898184e3Ssthen# 42
114*898184e3Ssthen
115*898184e3Ssthenfor (my $i = 0; $i < $#listEsT; $i++) {
116*898184e3Ssthen    ok($objEsT->lt($listEsT[$i], $listEsT[$i+1]));
117*898184e3Ssthen}
118*898184e3Ssthen# 68
119*898184e3Ssthen
120*898184e3Ssthenfor (my $i = 0; $i < $#listFr; $i++) {
121*898184e3Ssthen    ok($objFr->lt($listFr[$i], $listFr[$i+1]));
122*898184e3Ssthen}
123*898184e3Ssthen# 113
124*898184e3Ssthen
125*898184e3Ssthenour @randEs = randomize(@listEs);
126*898184e3Ssthenour @sortEs = $objEs->sort(@randEs);
127*898184e3Ssthenok("@sortEs" eq "@listEs");
128*898184e3Ssthen
129*898184e3Ssthenour @randEsT = randomize(@listEsT);
130*898184e3Ssthenour @sortEsT = $objEsT->sort(@randEsT);
131*898184e3Ssthenok("@sortEsT" eq "@listEsT");
132*898184e3Ssthen
133*898184e3Ssthenour @randFr = randomize(@listFr);
134*898184e3Ssthenour @sortFr = $objFr->sort(@randFr);
135*898184e3Ssthenok("@sortFr" eq "@listFr");
136*898184e3Ssthen
137*898184e3Ssthen# 116
138*898184e3Ssthen
139*898184e3Ssthen{
140*898184e3Ssthen    my $keyXS = '__useXS'; # see Unicode::Collate internal
141*898184e3Ssthen    my $noLoc = Unicode::Collate->new(normalization => undef);
142*898184e3Ssthen    my $UseXS = ref($noLoc->{$keyXS});
143*898184e3Ssthen    ok(ref($Collator->{$keyXS}), $UseXS);
144*898184e3Ssthen    ok(ref($objFr   ->{$keyXS}), $UseXS);
145*898184e3Ssthen    ok(ref($objEs   ->{$keyXS}), $UseXS);
146*898184e3Ssthen    ok(ref($objEsT  ->{$keyXS}), $UseXS);
147*898184e3Ssthen}
148*898184e3Ssthen# 120
149*898184e3Ssthen
150*898184e3Ssthenok(Unicode::Collate::Locale::_locale('sr'),            'sr');
151*898184e3Ssthenok(Unicode::Collate::Locale::_locale('sr_Cyrl'),       'sr');
152*898184e3Ssthenok(Unicode::Collate::Locale::_locale('sr_Latn'),       'sr_Latn');
153*898184e3Ssthenok(Unicode::Collate::Locale::_locale('sr_LATN'),       'sr_Latn');
154*898184e3Ssthenok(Unicode::Collate::Locale::_locale('sr_latn'),       'sr_Latn');
155*898184e3Ssthenok(Unicode::Collate::Locale::_locale('de'),            'default');
156*898184e3Ssthenok(Unicode::Collate::Locale::_locale('de_phone'),      'de__phonebook');
157*898184e3Ssthenok(Unicode::Collate::Locale::_locale('de__phonebook'), 'de__phonebook');
158*898184e3Ssthenok(Unicode::Collate::Locale::_locale('de-phonebk'),    'de__phonebook');
159*898184e3Ssthenok(Unicode::Collate::Locale::_locale('de--phonebk'),   'de__phonebook');
160*898184e3Ssthen
161*898184e3Ssthen# 130
162