1
2BEGIN {
3    if ($ENV{PERL_CORE}) {
4	chdir('t') if -d 't';
5	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6    }
7}
8
9use strict;
10use warnings;
11BEGIN { $| = 1; print "1..115\n"; }
12my $count = 0;
13sub ok ($;$) {
14    my $p = my $r = shift;
15    if (@_) {
16	my $x = shift;
17	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
18    }
19    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
20}
21
22use Unicode::Collate::Locale;
23
24ok(1);
25
26sub _pack_U   { Unicode::Collate::pack_U(@_) }
27sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28
29#########################
30
31my $eth  = _pack_U(0xF0);
32my $ETH  = _pack_U(0xD0);
33my $thrn = _pack_U(0xFE);
34my $THRN = _pack_U(0xDE);
35my $uuml = _pack_U(0xFC);
36my $Uuml = _pack_U(0xDC);
37my $arng = _pack_U(0xE5);
38my $Arng = _pack_U(0xC5);
39my $auml = _pack_U(0xE4);
40my $Auml = _pack_U(0xC4);
41my $ae   = _pack_U(0xE6);
42my $AE   = _pack_U(0xC6);
43my $ouml = _pack_U(0xF6);
44my $Ouml = _pack_U(0xD6);
45my $ostk = _pack_U(0xF8);
46my $Ostk = _pack_U(0xD8);
47my $ocrc = _pack_U(0xF4);
48my $Ocrc = _pack_U(0xD4);
49
50my $objSv = Unicode::Collate::Locale->
51    new(locale => 'SV', normalization => undef);
52
53ok($objSv->getlocale, 'sv');
54
55$objSv->change(level => 1);
56
57ok($objSv->lt('z', $arng));
58ok($objSv->lt($arng, $auml));
59ok($objSv->lt($auml, $ouml));
60ok($objSv->lt($ouml, "\x{1C0}"));
61
62# 6
63
64ok($objSv->eq('d', "\x{111}"));
65ok($objSv->eq("\x{111}", $eth));
66ok($objSv->eq('v', 'w'));
67ok($objSv->eq('y', $uuml));
68ok($objSv->eq($uuml, "\x{171}"));
69
70ok($objSv->eq($auml, $ae));
71ok($objSv->eq($ae, "\x{119}"));
72ok($objSv->eq($ouml, $ostk));
73ok($objSv->eq($ostk, "\x{151}"));
74ok($objSv->eq("\x{151}", "\x{153}"));
75ok($objSv->eq("\x{153}", $ocrc));
76
77# 17
78
79$objSv->change(level => 2);
80
81ok($objSv->lt('d', "\x{111}"));
82ok($objSv->lt("\x{111}", $eth));
83ok($objSv->lt('v', 'w'));
84ok($objSv->lt('y', $uuml));
85ok($objSv->lt($uuml, "\x{171}"));
86
87ok($objSv->lt($auml, $ae));
88ok($objSv->lt($ae, "\x{119}"));
89ok($objSv->lt($ouml, $ostk));
90ok($objSv->lt($ostk, "\x{151}"));
91ok($objSv->lt("\x{151}", "\x{153}"));
92ok($objSv->lt("\x{153}", $ocrc));
93
94# 28
95
96ok($objSv->eq("\x{111}", "\x{110}"));
97ok($objSv->eq($eth,  $ETH));
98ok($objSv->eq('th',  $thrn));
99ok($objSv->eq($thrn, 'TH'));
100ok($objSv->eq('TH',  $THRN));
101ok($objSv->eq('w',   'W'));
102ok($objSv->eq($uuml, $Uuml));
103ok($objSv->eq("\x{171}", "\x{170}"));
104ok($objSv->eq($arng, $Arng));
105ok($objSv->eq($auml, $Auml));
106ok($objSv->eq($ae,   $AE));
107ok($objSv->eq($AE, "\x{1D2D}"));
108ok($objSv->eq("\x{119}", "\x{118}"));
109ok($objSv->eq($ouml, $Ouml));
110ok($objSv->eq($ostk, $Ostk));
111ok($objSv->eq("\x{151}", "\x{150}"));
112ok($objSv->eq("\x{153}", "\x{152}"));
113ok($objSv->eq($ocrc, $Ocrc));
114
115# 46
116
117$objSv->change(level => 3);
118
119ok($objSv->lt("\x{111}", "\x{110}"));
120ok($objSv->lt($eth,  $ETH));
121ok($objSv->lt('th',  $thrn));
122ok($objSv->lt($thrn, 'TH'));
123ok($objSv->lt('TH',  $THRN));
124ok($objSv->lt('w',   'W'));
125ok($objSv->lt($uuml, $Uuml));
126ok($objSv->lt("\x{171}", "\x{170}"));
127ok($objSv->lt($arng, $Arng));
128ok($objSv->lt($auml, $Auml));
129ok($objSv->lt($ae,   $AE));
130ok($objSv->lt($AE, "\x{1D2D}"));
131ok($objSv->lt("\x{119}", "\x{118}"));
132ok($objSv->lt($ouml, $Ouml));
133ok($objSv->lt($ostk, $Ostk));
134ok($objSv->lt("\x{151}", "\x{150}"));
135ok($objSv->lt("\x{153}", "\x{152}"));
136ok($objSv->lt($ocrc, $Ocrc));
137
138# 64
139
140ok($objSv->eq("d\x{335}", "\x{111}"));
141ok($objSv->eq("D\x{335}", "\x{110}"));
142ok($objSv->eq("u\x{308}", $uuml));
143ok($objSv->eq("U\x{308}", $Uuml));
144ok($objSv->eq("u\x{30B}", "\x{171}"));
145ok($objSv->eq("U\x{30B}", "\x{170}"));
146ok($objSv->eq("a\x{30A}", $arng));
147ok($objSv->eq("A\x{30A}", $Arng));
148ok($objSv->eq("a\x{308}", $auml));
149ok($objSv->eq("A\x{308}", $Auml));
150ok($objSv->eq("e\x{328}", "\x{119}"));
151ok($objSv->eq("E\x{328}", "\x{118}"));
152ok($objSv->eq("o\x{308}", $ouml));
153ok($objSv->eq("O\x{308}", $Ouml));
154ok($objSv->eq("o\x{338}", $ostk));
155ok($objSv->eq("O\x{338}", $Ostk));
156ok($objSv->eq("o\x{30B}", "\x{151}"));
157ok($objSv->eq("O\x{30B}", "\x{150}"));
158ok($objSv->eq("o\x{302}", $ocrc));
159ok($objSv->eq("O\x{302}", $Ocrc));
160
161# 84
162
163ok($objSv->eq("u\x{308}\x{300}", "\x{1DC}"));
164ok($objSv->eq("U\x{308}\x{300}", "\x{1DB}"));
165ok($objSv->eq("u\x{308}\x{301}", "\x{1D8}"));
166ok($objSv->eq("U\x{308}\x{301}", "\x{1D7}"));
167ok($objSv->eq("u\x{308}\x{304}", "\x{1D6}"));
168ok($objSv->eq("U\x{308}\x{304}", "\x{1D5}"));
169ok($objSv->eq("u\x{308}\x{30C}", "\x{1DA}"));
170ok($objSv->eq("U\x{308}\x{30C}", "\x{1D9}"));
171ok($objSv->eq("A\x{30A}", "\x{212B}"));
172ok($objSv->eq("a\x{30A}\x{301}", "\x{1FB}"));
173ok($objSv->eq("A\x{30A}\x{301}", "\x{1FA}"));
174ok($objSv->eq("a\x{308}\x{304}", "\x{1DF}"));
175ok($objSv->eq("A\x{308}\x{304}", "\x{1DE}"));
176ok($objSv->eq("\x{1FD}", "$ae\x{301}"));
177ok($objSv->eq("\x{1FC}", "$AE\x{301}"));
178ok($objSv->eq("\x{1E3}", "$ae\x{304}"));
179ok($objSv->eq("\x{1E2}", "$AE\x{304}"));
180ok($objSv->eq("o\x{308}\x{304}", "\x{22B}"));
181ok($objSv->eq("O\x{308}\x{304}", "\x{22A}"));
182ok($objSv->eq("o\x{338}\x{301}", "\x{1FF}"));
183ok($objSv->eq("O\x{338}\x{301}", "\x{1FE}"));
184
185# 105
186
187ok($objSv->eq("o\x{302}\x{300}", "\x{1ED3}"));
188ok($objSv->eq("O\x{302}\x{300}", "\x{1ED2}"));
189ok($objSv->eq("o\x{302}\x{301}", "\x{1ED1}"));
190ok($objSv->eq("O\x{302}\x{301}", "\x{1ED0}"));
191ok($objSv->eq("o\x{302}\x{303}", "\x{1ED7}"));
192ok($objSv->eq("O\x{302}\x{303}", "\x{1ED6}"));
193ok($objSv->eq("o\x{302}\x{309}", "\x{1ED5}"));
194ok($objSv->eq("O\x{302}\x{309}", "\x{1ED4}"));
195ok($objSv->eq("o\x{302}\x{323}", "\x{1ED9}"));
196ok($objSv->eq("O\x{302}\x{323}", "\x{1ED8}"));
197
198# 115
199