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..217\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 $objSe = Unicode::Collate::Locale->
32    new(locale => 'SE', normalization => undef);
33
34my $eth  = _pack_U(0xF0);
35my $ETH  = _pack_U(0xD0);
36my $thrn = _pack_U(0xFE);
37my $THRN = _pack_U(0xDE);
38my $ae   = _pack_U(0xE6);
39my $AE   = _pack_U(0xC6);
40
41ok($objSe->getlocale, 'se');
42
43$objSe->change(level => 1);
44
45ok($objSe->lt("a", "a\x{301}"));
46ok($objSe->gt("b", "a\x{301}"));
47ok($objSe->lt("c", "c\x{30C}"));
48ok($objSe->lt("c\x{30C}", "\x{292}"));
49ok($objSe->lt( "\x{292}", "\x{1EF}"));
50ok($objSe->gt("d", "\x{1EF}"));
51ok($objSe->lt("d", "d\x{335}"));
52ok($objSe->gt("e", "d\x{335}"));
53ok($objSe->lt("g", "g\x{30C}"));
54ok($objSe->lt("g\x{30C}", "\x{1E5}"));
55ok($objSe->gt("h", "\x{1E5}"));
56ok($objSe->lt("k", "k\x{30C}"));
57ok($objSe->gt("l", "k\x{30C}"));
58ok($objSe->lt("n", "\x{14B}"));
59ok($objSe->gt("o", "\x{14B}"));
60ok($objSe->lt("s", "s\x{30C}"));
61ok($objSe->gt("t", "s\x{30C}"));
62ok($objSe->lt("t",  "\x{167}"));
63ok($objSe->gt("u",  "\x{167}"));
64ok($objSe->lt("z", "z\x{30C}"));
65ok($objSe->lt("z\x{30C}", "o\x{338}"));
66ok($objSe->lt("o\x{338}", $ae));
67ok($objSe->lt($ae, "a\x{30A}"));
68ok($objSe->lt("a\x{30A}", "a\x{308}"));
69ok($objSe->lt("a\x{308}", "o\x{308}"));
70ok($objSe->lt("o\x{308}", "\x{1C0}"));
71
72# 28
73
74ok($objSe->eq("d\x{335}", $eth));
75ok($objSe->eq( "\x{14B}", "n\x{301}"));
76ok($objSe->eq("n\x{301}", "n\x{303}"));
77ok($objSe->eq( "\x{167}", $thrn));
78ok($objSe->eq("y", "u\x{308}"));
79ok($objSe->eq("u\x{308}", "u\x{30B}"));
80ok($objSe->eq("o\x{338}",  "\x{153}"));
81ok($objSe->eq("a\x{30A}", "a\x{307}"));
82ok($objSe->eq("a\x{308}", "a\x{303}"));
83ok($objSe->eq("o\x{308}", "o\x{30B}"));
84ok($objSe->eq("o\x{30B}", "o\x{303}"));
85ok($objSe->eq("o\x{303}", "o\x{302}"));
86ok($objSe->eq("o\x{302}", "o\x{328}"));
87
88# 41
89
90$objSe->change(level => 2);
91
92ok($objSe->lt("d\x{335}", $eth));
93ok($objSe->lt( "\x{14B}", "n\x{301}"));
94ok($objSe->lt("n\x{301}", "n\x{303}"));
95ok($objSe->lt( "\x{167}", $thrn));
96ok($objSe->lt("y", "u\x{308}"));
97ok($objSe->lt("u\x{308}", "u\x{30B}"));
98ok($objSe->lt("o\x{338}",  "\x{153}"));
99ok($objSe->lt("a\x{30A}", "a\x{307}"));
100ok($objSe->lt("a\x{308}", "a\x{303}"));
101ok($objSe->lt("o\x{308}", "o\x{30B}"));
102ok($objSe->lt("o\x{30B}", "o\x{303}"));
103ok($objSe->lt("o\x{303}", "o\x{302}"));
104ok($objSe->lt("o\x{302}", "o\x{328}"));
105
106# 54
107
108ok($objSe->eq("a\x{301}", "A\x{301}"));
109ok($objSe->eq("c\x{30C}", "C\x{30C}"));
110ok($objSe->eq( "\x{292}",  "\x{1B7}"));
111ok($objSe->eq( "\x{1EF}",  "\x{1EE}"));
112ok($objSe->eq("d\x{335}", "D\x{335}"));
113ok($objSe->eq($eth, $ETH));
114ok($objSe->eq("g\x{30C}", "G\x{30C}"));
115ok($objSe->eq( "\x{1E5}",  "\x{1E4}"));
116ok($objSe->eq("k\x{30C}", "K\x{30C}"));
117ok($objSe->eq( "\x{14B}",  "\x{14A}"));
118ok($objSe->eq("n\x{301}", "N\x{301}"));
119ok($objSe->eq("n\x{303}", "N\x{303}"));
120ok($objSe->eq("s\x{30C}", "S\x{30C}"));
121ok($objSe->eq( "\x{167}",  "\x{166}"));
122ok($objSe->eq($thrn, $THRN));
123ok($objSe->eq("u\x{308}", "U\x{308}"));
124ok($objSe->eq("u\x{30B}", "U\x{30B}"));
125ok($objSe->eq("z\x{30C}", "Z\x{30C}"));
126ok($objSe->eq("o\x{338}", "O\x{338}"));
127ok($objSe->eq( "\x{153}",  "\x{152}"));
128ok($objSe->eq($ae, $AE));
129ok($objSe->eq($AE, "\x{1D2D}"));
130ok($objSe->eq("a\x{30A}", "A\x{30A}"));
131ok($objSe->eq("a\x{307}", "A\x{307}"));
132ok($objSe->eq("a\x{308}", "A\x{308}"));
133ok($objSe->eq("a\x{303}", "A\x{303}"));
134ok($objSe->eq("o\x{308}", "O\x{308}"));
135ok($objSe->eq("o\x{30B}", "O\x{30B}"));
136ok($objSe->eq("o\x{303}", "O\x{303}"));
137ok($objSe->eq("o\x{302}", "O\x{302}"));
138ok($objSe->eq("o\x{328}", "O\x{328}"));
139
140# 85
141
142$objSe->change(level => 3);
143
144ok($objSe->lt("a\x{301}", "A\x{301}"));
145ok($objSe->lt("c\x{30C}", "C\x{30C}"));
146ok($objSe->lt( "\x{292}",  "\x{1B7}"));
147ok($objSe->lt( "\x{1EF}",  "\x{1EE}"));
148ok($objSe->lt("d\x{335}", "D\x{335}"));
149ok($objSe->lt($eth, $ETH));
150ok($objSe->lt("g\x{30C}", "G\x{30C}"));
151ok($objSe->lt( "\x{1E5}",  "\x{1E4}"));
152ok($objSe->lt("k\x{30C}", "K\x{30C}"));
153ok($objSe->lt( "\x{14B}",  "\x{14A}"));
154ok($objSe->lt("n\x{301}", "N\x{301}"));
155ok($objSe->lt("n\x{303}", "N\x{303}"));
156ok($objSe->lt("s\x{30C}", "S\x{30C}"));
157ok($objSe->lt( "\x{167}",  "\x{166}"));
158ok($objSe->lt($thrn, $THRN));
159ok($objSe->lt("u\x{308}", "U\x{308}"));
160ok($objSe->lt("u\x{30B}", "U\x{30B}"));
161ok($objSe->lt("z\x{30C}", "Z\x{30C}"));
162ok($objSe->lt("o\x{338}", "O\x{338}"));
163ok($objSe->lt( "\x{153}",  "\x{152}"));
164ok($objSe->lt($ae, $AE));
165ok($objSe->lt($AE, "\x{1D2D}"));
166ok($objSe->lt("a\x{30A}", "A\x{30A}"));
167ok($objSe->lt("a\x{307}", "A\x{307}"));
168ok($objSe->lt("a\x{308}", "A\x{308}"));
169ok($objSe->lt("a\x{303}", "A\x{303}"));
170ok($objSe->lt("o\x{308}", "O\x{308}"));
171ok($objSe->lt("o\x{30B}", "O\x{30B}"));
172ok($objSe->lt("o\x{303}", "O\x{303}"));
173ok($objSe->lt("o\x{302}", "O\x{302}"));
174ok($objSe->lt("o\x{328}", "O\x{328}"));
175
176# 116
177
178ok($objSe->eq("a\x{301}", _pack_U(0xE1)));
179ok($objSe->eq("a\x{341}", _pack_U(0xE1)));
180ok($objSe->eq("A\x{301}", _pack_U(0xC1)));
181ok($objSe->eq("A\x{341}", _pack_U(0xC1)));
182ok($objSe->eq("c\x{30C}", "\x{10D}"));
183ok($objSe->eq("C\x{30C}", "\x{10C}"));
184ok($objSe->eq("\x{1EF}", "\x{292}\x{30C}"));
185ok($objSe->eq("\x{1EE}", "\x{1B7}\x{30C}"));
186ok($objSe->eq("d\x{335}", "\x{111}"));
187ok($objSe->eq("D\x{335}", "\x{110}"));
188ok($objSe->eq("g\x{30C}", "\x{1E7}"));
189ok($objSe->eq("G\x{30C}", "\x{1E6}"));
190ok($objSe->eq("k\x{30C}", "\x{1E9}"));
191ok($objSe->eq("K\x{30C}", "\x{1E8}"));
192ok($objSe->eq("n\x{301}", "\x{144}"));
193ok($objSe->eq("n\x{341}", "\x{144}"));
194ok($objSe->eq("N\x{301}", "\x{143}"));
195ok($objSe->eq("N\x{341}", "\x{143}"));
196ok($objSe->eq("n\x{303}", _pack_U(0xF1)));
197ok($objSe->eq("N\x{303}", _pack_U(0xD1)));
198ok($objSe->eq("s\x{30C}", "\x{161}"));
199ok($objSe->eq("S\x{30C}", "\x{160}"));
200ok($objSe->eq("u\x{308}", _pack_U(0xFC)));
201ok($objSe->eq("U\x{308}", _pack_U(0xDC)));
202ok($objSe->eq("u\x{30B}", "\x{171}"));
203ok($objSe->eq("U\x{30B}", "\x{170}"));
204
205# 142
206
207ok($objSe->eq("z\x{30C}", "\x{17E}"));
208ok($objSe->eq("Z\x{30C}", "\x{17D}"));
209ok($objSe->eq("o\x{338}", _pack_U(0xF8)));
210ok($objSe->eq("O\x{338}", _pack_U(0xD8)));
211ok($objSe->eq("a\x{30A}", _pack_U(0xE5)));
212ok($objSe->eq("A\x{30A}", _pack_U(0xC5)));
213ok($objSe->eq("a\x{307}", "\x{227}"));
214ok($objSe->eq("A\x{307}", "\x{226}"));
215ok($objSe->eq("a\x{308}", _pack_U(0xE4)));
216ok($objSe->eq("A\x{308}", _pack_U(0xC4)));
217ok($objSe->eq("a\x{303}", _pack_U(0xE3)));
218ok($objSe->eq("A\x{303}", _pack_U(0xC3)));
219ok($objSe->eq("o\x{308}", _pack_U(0xF6)));
220ok($objSe->eq("O\x{308}", _pack_U(0xD6)));
221ok($objSe->eq("o\x{30B}", "\x{151}"));
222ok($objSe->eq("O\x{30B}", "\x{150}"));
223ok($objSe->eq("o\x{303}", _pack_U(0xF5)));
224ok($objSe->eq("O\x{303}", _pack_U(0xD5)));
225ok($objSe->eq("o\x{302}", _pack_U(0xF4)));
226ok($objSe->eq("O\x{302}", _pack_U(0xD4)));
227ok($objSe->eq("o\x{328}", "\x{1EB}"));
228ok($objSe->eq("O\x{328}", "\x{1EA}"));
229
230# 164
231
232ok($objSe->eq("u\x{308}\x{300}", "\x{1DC}"));
233ok($objSe->eq("U\x{308}\x{300}", "\x{1DB}"));
234ok($objSe->eq("u\x{308}\x{301}", "\x{1D8}"));
235ok($objSe->eq("U\x{308}\x{301}", "\x{1D7}"));
236ok($objSe->eq("u\x{308}\x{304}", "\x{1D6}"));
237ok($objSe->eq("U\x{308}\x{304}", "\x{1D5}"));
238ok($objSe->eq("u\x{308}\x{30C}", "\x{1DA}"));
239ok($objSe->eq("U\x{308}\x{30C}", "\x{1D9}"));
240ok($objSe->eq("o\x{338}\x{301}", "\x{1FF}"));
241ok($objSe->eq("O\x{338}\x{301}", "\x{1FE}"));
242
243ok($objSe->eq("\x{1FD}", "$ae\x{301}"));
244ok($objSe->eq("\x{1FC}", "$AE\x{301}"));
245ok($objSe->eq("\x{1E3}", "$ae\x{304}"));
246ok($objSe->eq("\x{1E2}", "$AE\x{304}"));
247ok($objSe->eq("A\x{30A}", "\x{212B}"));
248ok($objSe->eq("a\x{30A}\x{301}", "\x{1FB}"));
249ok($objSe->eq("A\x{30A}\x{301}", "\x{1FA}"));
250ok($objSe->eq("a\x{308}\x{304}", "\x{1DF}"));
251ok($objSe->eq("A\x{308}\x{304}", "\x{1DE}"));
252
253ok($objSe->eq("o\x{308}\x{304}", "\x{22B}"));
254ok($objSe->eq("O\x{308}\x{304}", "\x{22A}"));
255ok($objSe->eq("o\x{303}\x{301}", "\x{1E4D}"));
256ok($objSe->eq("O\x{303}\x{301}", "\x{1E4C}"));
257ok($objSe->eq("o\x{303}\x{304}", "\x{22D}"));
258ok($objSe->eq("O\x{303}\x{304}", "\x{22C}"));
259ok($objSe->eq("o\x{303}\x{308}", "\x{1E4F}"));
260ok($objSe->eq("O\x{303}\x{308}", "\x{1E4E}"));
261ok($objSe->eq("o\x{303}\x{31B}", "\x{1EE1}"));
262ok($objSe->eq("O\x{303}\x{31B}", "\x{1EE0}"));
263
264ok($objSe->eq("o\x{302}\x{300}", "\x{1ED3}"));
265ok($objSe->eq("O\x{302}\x{300}", "\x{1ED2}"));
266ok($objSe->eq("o\x{302}\x{301}", "\x{1ED1}"));
267ok($objSe->eq("O\x{302}\x{301}", "\x{1ED0}"));
268ok($objSe->eq("o\x{302}\x{303}", "\x{1ED7}"));
269ok($objSe->eq("O\x{302}\x{303}", "\x{1ED6}"));
270ok($objSe->eq("o\x{302}\x{309}", "\x{1ED5}"));
271ok($objSe->eq("O\x{302}\x{309}", "\x{1ED4}"));
272ok($objSe->eq("o\x{302}\x{323}", "\x{1ED9}"));
273ok($objSe->eq("O\x{302}\x{323}", "\x{1ED8}"));
274
275# 203
276
277$objSe->change(upper_before_lower => 1);
278
279ok($objSe->gt("z\x{30C}", "Z\x{30C}"));
280ok($objSe->gt("o\x{338}", "O\x{338}"));
281ok($objSe->gt( "\x{153}",  "\x{152}"));
282ok($objSe->gt($ae, $AE));
283ok($objSe->lt($AE, "\x{1D2D}"));
284ok($objSe->gt("a\x{30A}", "A\x{30A}"));
285ok($objSe->gt("a\x{307}", "A\x{307}"));
286ok($objSe->gt("a\x{308}", "A\x{308}"));
287ok($objSe->gt("a\x{303}", "A\x{303}"));
288ok($objSe->gt("o\x{308}", "O\x{308}"));
289ok($objSe->gt("o\x{30B}", "O\x{30B}"));
290ok($objSe->gt("o\x{303}", "O\x{303}"));
291ok($objSe->gt("o\x{302}", "O\x{302}"));
292ok($objSe->gt("o\x{328}", "O\x{328}"));
293
294# 217
295