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..105\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 $ae   = _pack_U(0xE6);
38my $AE   = _pack_U(0xC6);
39my $auml = _pack_U(0xE4);
40my $Auml = _pack_U(0xC4);
41my $ostk = _pack_U(0xF8);
42my $Ostk = _pack_U(0xD8);
43my $ouml = _pack_U(0xF6);
44my $Ouml = _pack_U(0xD6);
45my $arng = _pack_U(0xE5);
46my $Arng = _pack_U(0xC5);
47
48my $objFo = Unicode::Collate::Locale->
49    new(locale => 'FO', normalization => undef);
50
51ok($objFo->getlocale, 'fo');
52
53$objFo->change(level => 1);
54
55ok($objFo->lt('z', $ae));
56ok($objFo->lt($ae, $ostk));
57ok($objFo->lt($ostk, $arng));
58ok($objFo->lt($arng, "\x{1C0}"));
59
60# 6
61
62ok($objFo->eq('d', "\x{111}"));
63ok($objFo->eq("\x{111}", $eth));
64ok($objFo->eq('y', $uuml));
65ok($objFo->eq($uuml, "\x{171}"));
66ok($objFo->eq($ae, $auml));
67ok($objFo->eq($auml, "\x{119}"));
68ok($objFo->eq($ostk, $ouml));
69ok($objFo->eq($ouml, "\x{151}"));
70ok($objFo->eq("\x{151}", "\x{153}"));
71
72# 15
73
74$objFo->change(level => 2);
75
76ok($objFo->lt('d', "\x{111}"));
77ok($objFo->lt("\x{111}", $eth));
78ok($objFo->lt('y', $uuml));
79ok($objFo->lt($uuml, "\x{171}"));
80ok($objFo->lt($ae, $auml));
81ok($objFo->lt($auml, "\x{119}"));
82ok($objFo->lt($ostk, $ouml));
83ok($objFo->lt($ouml, "\x{151}"));
84ok($objFo->lt("\x{151}", "\x{153}"));
85
86# 24
87
88ok($objFo->eq("\x{111}", "\x{110}"));
89ok($objFo->eq($eth,  $ETH));
90ok($objFo->eq('th',  $thrn));
91ok($objFo->eq($thrn, 'TH'));
92ok($objFo->eq('TH',  $THRN));
93ok($objFo->eq($uuml, $Uuml));
94ok($objFo->eq("\x{171}", "\x{170}"));
95ok($objFo->eq($ae,   $AE));
96ok($objFo->eq($AE, "\x{1D2D}"));
97ok($objFo->eq($auml, $Auml));
98ok($objFo->eq("\x{119}", "\x{118}"));
99ok($objFo->eq($ostk, $Ostk));
100ok($objFo->eq($ouml, $Ouml));
101ok($objFo->eq("\x{151}", "\x{150}"));
102ok($objFo->eq("\x{153}", "\x{152}"));
103ok($objFo->eq($arng, $Arng));
104ok($objFo->eq($Arng, 'aa'));
105ok($objFo->eq('aa', 'aA'));
106ok($objFo->eq('aA', 'Aa'));
107ok($objFo->eq('Aa', 'AA'));
108ok($objFo->eq('aa', 'AA'));
109
110# 45
111
112$objFo->change(level => 3);
113
114ok($objFo->lt("\x{111}", "\x{110}"));
115ok($objFo->lt($eth,  $ETH));
116ok($objFo->lt('th',  $thrn));
117ok($objFo->lt($thrn, 'TH'));
118ok($objFo->lt('TH',  $THRN));
119ok($objFo->lt($uuml, $Uuml));
120ok($objFo->lt("\x{171}", "\x{170}"));
121ok($objFo->lt($ae,   $AE));
122ok($objFo->lt($AE, "\x{1D2D}"));
123ok($objFo->lt($auml, $Auml));
124ok($objFo->lt("\x{119}", "\x{118}"));
125ok($objFo->lt($ostk, $Ostk));
126ok($objFo->lt($ouml, $Ouml));
127ok($objFo->lt("\x{151}", "\x{150}"));
128ok($objFo->lt("\x{153}", "\x{152}"));
129ok($objFo->lt($arng, $Arng));
130ok($objFo->lt($Arng, 'aa'));
131ok($objFo->lt('aa', 'aA'));
132ok($objFo->lt('aA', 'Aa'));
133ok($objFo->lt('Aa', 'AA'));
134ok($objFo->lt('aa', 'AA'));
135
136# 66
137
138ok($objFo->eq("d\x{335}", "\x{111}"));
139ok($objFo->eq("D\x{335}", "\x{110}"));
140ok($objFo->eq("u\x{308}", $uuml));
141ok($objFo->eq("U\x{308}", $Uuml));
142ok($objFo->eq("u\x{30B}", "\x{171}"));
143ok($objFo->eq("U\x{30B}", "\x{170}"));
144ok($objFo->eq("a\x{308}", $auml));
145ok($objFo->eq("A\x{308}", $Auml));
146ok($objFo->eq("e\x{328}", "\x{119}"));
147ok($objFo->eq("E\x{328}", "\x{118}"));
148ok($objFo->eq("o\x{338}", $ostk));
149ok($objFo->eq("O\x{338}", $Ostk));
150ok($objFo->eq("o\x{308}", $ouml));
151ok($objFo->eq("O\x{308}", $Ouml));
152ok($objFo->eq("o\x{30B}", "\x{151}"));
153ok($objFo->eq("O\x{30B}", "\x{150}"));
154ok($objFo->eq("a\x{30A}", $arng));
155ok($objFo->eq("A\x{30A}", $Arng));
156
157# 84
158
159ok($objFo->eq("u\x{308}\x{300}", "\x{1DC}"));
160ok($objFo->eq("U\x{308}\x{300}", "\x{1DB}"));
161ok($objFo->eq("u\x{308}\x{301}", "\x{1D8}"));
162ok($objFo->eq("U\x{308}\x{301}", "\x{1D7}"));
163ok($objFo->eq("u\x{308}\x{304}", "\x{1D6}"));
164ok($objFo->eq("U\x{308}\x{304}", "\x{1D5}"));
165ok($objFo->eq("u\x{308}\x{30C}", "\x{1DA}"));
166ok($objFo->eq("U\x{308}\x{30C}", "\x{1D9}"));
167ok($objFo->eq("\x{1FD}", "$ae\x{301}"));
168ok($objFo->eq("\x{1FC}", "$AE\x{301}"));
169ok($objFo->eq("\x{1E3}", "$ae\x{304}"));
170ok($objFo->eq("\x{1E2}", "$AE\x{304}"));
171ok($objFo->eq("a\x{308}\x{304}", "\x{1DF}"));
172ok($objFo->eq("A\x{308}\x{304}", "\x{1DE}"));
173ok($objFo->eq("o\x{338}\x{301}", "\x{1FF}"));
174ok($objFo->eq("O\x{338}\x{301}", "\x{1FE}"));
175ok($objFo->eq("o\x{308}\x{304}", "\x{22B}"));
176ok($objFo->eq("O\x{308}\x{304}", "\x{22A}"));
177ok($objFo->eq("A\x{30A}", "\x{212B}"));
178ok($objFo->eq("a\x{30A}\x{301}", "\x{1FB}"));
179ok($objFo->eq("A\x{30A}\x{301}", "\x{1FA}"));
180
181# 105
182