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 $objSvReform = Unicode::Collate::Locale->
51    new(locale => 'SV-reform', normalization => undef);
52
53ok($objSvReform->getlocale, 'sv__reformed');
54
55$objSvReform->change(level => 1);
56
57ok($objSvReform->lt('z', $arng));
58ok($objSvReform->lt($arng, $auml));
59ok($objSvReform->lt($auml, $ouml));
60ok($objSvReform->lt($ouml, "\x{1C0}"));
61
62# 6
63
64ok($objSvReform->lt('v', 'w'));
65ok($objSvReform->gt('x', 'w'));
66
67ok($objSvReform->eq('d', "\x{111}"));
68ok($objSvReform->eq("\x{111}", $eth));
69ok($objSvReform->eq('y', $uuml));
70ok($objSvReform->eq($uuml, "\x{171}"));
71
72ok($objSvReform->eq($auml, $ae));
73ok($objSvReform->eq($ae, "\x{119}"));
74ok($objSvReform->eq($ouml, $ostk));
75ok($objSvReform->eq($ostk, "\x{151}"));
76ok($objSvReform->eq("\x{151}", "\x{153}"));
77ok($objSvReform->eq("\x{153}", $ocrc));
78
79# 18
80
81$objSvReform->change(level => 2);
82
83ok($objSvReform->lt('d', "\x{111}"));
84ok($objSvReform->lt("\x{111}", $eth));
85ok($objSvReform->lt('y', $uuml));
86ok($objSvReform->lt($uuml, "\x{171}"));
87
88ok($objSvReform->lt($auml, $ae));
89ok($objSvReform->lt($ae, "\x{119}"));
90ok($objSvReform->lt($ouml, $ostk));
91ok($objSvReform->lt($ostk, "\x{151}"));
92ok($objSvReform->lt("\x{151}", "\x{153}"));
93ok($objSvReform->lt("\x{153}", $ocrc));
94
95# 28
96
97ok($objSvReform->eq("\x{111}", "\x{110}"));
98ok($objSvReform->eq($eth,  $ETH));
99ok($objSvReform->eq('th',  $thrn));
100ok($objSvReform->eq($thrn, 'TH'));
101ok($objSvReform->eq('TH',  $THRN));
102ok($objSvReform->eq('w',   'W'));
103ok($objSvReform->eq($uuml, $Uuml));
104ok($objSvReform->eq("\x{171}", "\x{170}"));
105ok($objSvReform->eq($arng, $Arng));
106ok($objSvReform->eq($auml, $Auml));
107ok($objSvReform->eq($ae,   $AE));
108ok($objSvReform->eq($AE, "\x{1D2D}"));
109ok($objSvReform->eq("\x{119}", "\x{118}"));
110ok($objSvReform->eq($ouml, $Ouml));
111ok($objSvReform->eq($ostk, $Ostk));
112ok($objSvReform->eq("\x{151}", "\x{150}"));
113ok($objSvReform->eq("\x{153}", "\x{152}"));
114ok($objSvReform->eq($ocrc, $Ocrc));
115
116# 46
117
118$objSvReform->change(level => 3);
119
120ok($objSvReform->lt("\x{111}", "\x{110}"));
121ok($objSvReform->lt($eth,  $ETH));
122ok($objSvReform->lt('th',  $thrn));
123ok($objSvReform->lt($thrn, 'TH'));
124ok($objSvReform->lt('TH',  $THRN));
125ok($objSvReform->lt('w',   'W'));
126ok($objSvReform->lt($uuml, $Uuml));
127ok($objSvReform->lt("\x{171}", "\x{170}"));
128ok($objSvReform->lt($arng, $Arng));
129ok($objSvReform->lt($auml, $Auml));
130ok($objSvReform->lt($ae,   $AE));
131ok($objSvReform->lt($AE, "\x{1D2D}"));
132ok($objSvReform->lt("\x{119}", "\x{118}"));
133ok($objSvReform->lt($ouml, $Ouml));
134ok($objSvReform->lt($ostk, $Ostk));
135ok($objSvReform->lt("\x{151}", "\x{150}"));
136ok($objSvReform->lt("\x{153}", "\x{152}"));
137ok($objSvReform->lt($ocrc, $Ocrc));
138
139# 64
140
141ok($objSvReform->eq("d\x{335}", "\x{111}"));
142ok($objSvReform->eq("D\x{335}", "\x{110}"));
143ok($objSvReform->eq("u\x{308}", $uuml));
144ok($objSvReform->eq("U\x{308}", $Uuml));
145ok($objSvReform->eq("u\x{30B}", "\x{171}"));
146ok($objSvReform->eq("U\x{30B}", "\x{170}"));
147ok($objSvReform->eq("a\x{30A}", $arng));
148ok($objSvReform->eq("A\x{30A}", $Arng));
149ok($objSvReform->eq("a\x{308}", $auml));
150ok($objSvReform->eq("A\x{308}", $Auml));
151ok($objSvReform->eq("e\x{328}", "\x{119}"));
152ok($objSvReform->eq("E\x{328}", "\x{118}"));
153ok($objSvReform->eq("o\x{308}", $ouml));
154ok($objSvReform->eq("O\x{308}", $Ouml));
155ok($objSvReform->eq("o\x{338}", $ostk));
156ok($objSvReform->eq("O\x{338}", $Ostk));
157ok($objSvReform->eq("o\x{30B}", "\x{151}"));
158ok($objSvReform->eq("O\x{30B}", "\x{150}"));
159ok($objSvReform->eq("o\x{302}", $ocrc));
160ok($objSvReform->eq("O\x{302}", $Ocrc));
161
162# 84
163
164ok($objSvReform->eq("u\x{308}\x{300}", "\x{1DC}"));
165ok($objSvReform->eq("U\x{308}\x{300}", "\x{1DB}"));
166ok($objSvReform->eq("u\x{308}\x{301}", "\x{1D8}"));
167ok($objSvReform->eq("U\x{308}\x{301}", "\x{1D7}"));
168ok($objSvReform->eq("u\x{308}\x{304}", "\x{1D6}"));
169ok($objSvReform->eq("U\x{308}\x{304}", "\x{1D5}"));
170ok($objSvReform->eq("u\x{308}\x{30C}", "\x{1DA}"));
171ok($objSvReform->eq("U\x{308}\x{30C}", "\x{1D9}"));
172ok($objSvReform->eq("A\x{30A}", "\x{212B}"));
173ok($objSvReform->eq("a\x{30A}\x{301}", "\x{1FB}"));
174ok($objSvReform->eq("A\x{30A}\x{301}", "\x{1FA}"));
175ok($objSvReform->eq("a\x{308}\x{304}", "\x{1DF}"));
176ok($objSvReform->eq("A\x{308}\x{304}", "\x{1DE}"));
177ok($objSvReform->eq("\x{1FD}", "$ae\x{301}"));
178ok($objSvReform->eq("\x{1FC}", "$AE\x{301}"));
179ok($objSvReform->eq("\x{1E3}", "$ae\x{304}"));
180ok($objSvReform->eq("\x{1E2}", "$AE\x{304}"));
181ok($objSvReform->eq("o\x{308}\x{304}", "\x{22B}"));
182ok($objSvReform->eq("O\x{308}\x{304}", "\x{22A}"));
183ok($objSvReform->eq("o\x{338}\x{301}", "\x{1FF}"));
184ok($objSvReform->eq("O\x{338}\x{301}", "\x{1FE}"));
185
186# 105
187
188ok($objSvReform->eq("o\x{302}\x{300}", "\x{1ED3}"));
189ok($objSvReform->eq("O\x{302}\x{300}", "\x{1ED2}"));
190ok($objSvReform->eq("o\x{302}\x{301}", "\x{1ED1}"));
191ok($objSvReform->eq("O\x{302}\x{301}", "\x{1ED0}"));
192ok($objSvReform->eq("o\x{302}\x{303}", "\x{1ED7}"));
193ok($objSvReform->eq("O\x{302}\x{303}", "\x{1ED6}"));
194ok($objSvReform->eq("o\x{302}\x{309}", "\x{1ED5}"));
195ok($objSvReform->eq("O\x{302}\x{309}", "\x{1ED4}"));
196ok($objSvReform->eq("o\x{302}\x{323}", "\x{1ED9}"));
197ok($objSvReform->eq("O\x{302}\x{323}", "\x{1ED8}"));
198
199# 115
200