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..110\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 $ae   = _pack_U(0xE6);
36my $AE   = _pack_U(0xC6);
37my $auml = _pack_U(0xE4);
38my $Auml = _pack_U(0xC4);
39my $ouml = _pack_U(0xF6);
40my $Ouml = _pack_U(0xD6);
41my $ostk = _pack_U(0xF8);
42my $Ostk = _pack_U(0xD8);
43my $arng = _pack_U(0xE5);
44my $Arng = _pack_U(0xC5);
45
46my $objIs = Unicode::Collate::Locale->
47    new(locale => 'IS', normalization => undef);
48
49ok($objIs->getlocale, 'is');
50
51$objIs->change(level => 1);
52
53ok($objIs->lt('a', "a\x{301}"));
54ok($objIs->gt('b', "a\x{301}"));
55ok($objIs->lt('d', $eth));
56ok($objIs->gt('e', $eth));
57ok($objIs->lt('e', "e\x{301}"));
58ok($objIs->gt('f', "e\x{301}"));
59ok($objIs->lt('i', "i\x{301}"));
60ok($objIs->gt('j', "i\x{301}"));
61ok($objIs->lt('o', "o\x{301}"));
62ok($objIs->gt('p', "o\x{301}"));
63ok($objIs->lt('u', "u\x{301}"));
64ok($objIs->gt('v', "u\x{301}"));
65ok($objIs->lt('y', "y\x{301}"));
66ok($objIs->gt('z', "y\x{301}"));
67
68# 16
69
70ok($objIs->lt('z', $thrn));
71ok($objIs->lt($thrn, $ae));
72ok($objIs->lt($ae, $ouml));
73ok($objIs->lt($ouml, $arng));
74ok($objIs->lt($arng, "\x{1C0}"));
75
76# 21
77
78ok($objIs->eq('d', "d\x{335}"));
79ok($objIs->eq($ae, $auml));
80ok($objIs->eq($ouml, $ostk));
81
82$objIs->change(level => 2);
83
84ok($objIs->lt('d', "d\x{335}"));
85ok($objIs->lt($ae, $auml));
86ok($objIs->lt($ouml, $ostk));
87
88# 27
89
90ok($objIs->eq("a\x{301}", "A\x{301}"));
91ok($objIs->eq("d\x{335}", "D\x{335}"));
92ok($objIs->eq($eth, $ETH));
93ok($objIs->eq("e\x{301}", "E\x{301}"));
94ok($objIs->eq("i\x{301}", "I\x{301}"));
95ok($objIs->eq("o\x{301}", "O\x{301}"));
96ok($objIs->eq("u\x{301}", "U\x{301}"));
97ok($objIs->eq("y\x{301}", "Y\x{301}"));
98ok($objIs->eq($thrn, $THRN));
99ok($objIs->eq($ae,   $AE));
100ok($objIs->eq($AE, "\x{1D2D}"));
101ok($objIs->eq($auml, $Auml));
102ok($objIs->eq($ouml, $Ouml));
103ok($objIs->eq($ostk, $Ostk));
104ok($objIs->eq($arng, $Arng));
105
106# 42
107
108$objIs->change(level => 3);
109
110ok($objIs->lt("a\x{301}", "A\x{301}"));
111ok($objIs->lt("d\x{335}", "D\x{335}"));
112ok($objIs->lt($eth, $ETH));
113ok($objIs->lt("e\x{301}", "E\x{301}"));
114ok($objIs->lt("i\x{301}", "I\x{301}"));
115ok($objIs->lt("o\x{301}", "O\x{301}"));
116ok($objIs->lt("u\x{301}", "U\x{301}"));
117ok($objIs->lt("y\x{301}", "Y\x{301}"));
118ok($objIs->lt($thrn, $THRN));
119ok($objIs->lt($ae,   $AE));
120ok($objIs->lt($AE, "\x{1D2D}"));
121ok($objIs->lt($auml, $Auml));
122ok($objIs->lt($ouml, $Ouml));
123ok($objIs->lt($ostk, $Ostk));
124ok($objIs->lt($arng, $Arng));
125
126# 57
127
128ok($objIs->eq("a\x{301}", _pack_U(0xE1)));
129ok($objIs->eq("a\x{341}", _pack_U(0xE1)));
130ok($objIs->eq("A\x{301}", _pack_U(0xC1)));
131ok($objIs->eq("A\x{341}", _pack_U(0xC1)));
132ok($objIs->eq("d\x{335}", "\x{111}"));
133ok($objIs->eq("D\x{335}", "\x{110}"));
134ok($objIs->eq("e\x{301}", _pack_U(0xE9)));
135ok($objIs->eq("e\x{341}", _pack_U(0xE9)));
136ok($objIs->eq("E\x{301}", _pack_U(0xC9)));
137ok($objIs->eq("E\x{341}", _pack_U(0xC9)));
138ok($objIs->eq("i\x{301}", _pack_U(0xED)));
139ok($objIs->eq("i\x{341}", _pack_U(0xED)));
140ok($objIs->eq("I\x{301}", _pack_U(0xCD)));
141ok($objIs->eq("I\x{341}", _pack_U(0xCD)));
142ok($objIs->eq("o\x{301}", _pack_U(0xF3)));
143ok($objIs->eq("o\x{341}", _pack_U(0xF3)));
144ok($objIs->eq("O\x{301}", _pack_U(0xD3)));
145ok($objIs->eq("O\x{341}", _pack_U(0xD3)));
146ok($objIs->eq("u\x{301}", _pack_U(0xFA)));
147ok($objIs->eq("u\x{341}", _pack_U(0xFA)));
148ok($objIs->eq("U\x{301}", _pack_U(0xDA)));
149ok($objIs->eq("U\x{341}", _pack_U(0xDA)));
150ok($objIs->eq("y\x{301}", _pack_U(0xFD)));
151ok($objIs->eq("y\x{341}", _pack_U(0xFD)));
152ok($objIs->eq("Y\x{301}", _pack_U(0xDD)));
153ok($objIs->eq("Y\x{341}", _pack_U(0xDD)));
154ok($objIs->eq("a\x{308}", $auml));
155ok($objIs->eq("A\x{308}", $Auml));
156ok($objIs->eq("o\x{308}", $ouml));
157ok($objIs->eq("O\x{308}", $Ouml));
158ok($objIs->eq("o\x{338}", $ostk));
159ok($objIs->eq("O\x{338}", $Ostk));
160ok($objIs->eq("a\x{30A}", $arng));
161ok($objIs->eq("A\x{30A}", $Arng));
162
163# 91
164
165ok($objIs->eq("\x{1FD}", "$ae\x{301}"));
166ok($objIs->eq("\x{1FC}", "$AE\x{301}"));
167ok($objIs->eq("\x{1E3}", "$ae\x{304}"));
168ok($objIs->eq("\x{1E2}", "$AE\x{304}"));
169ok($objIs->eq("a\x{308}\x{304}", "\x{1DF}"));
170ok($objIs->eq("A\x{308}\x{304}", "\x{1DE}"));
171ok($objIs->eq("o\x{308}\x{304}", "\x{22B}"));
172ok($objIs->eq("O\x{308}\x{304}", "\x{22A}"));
173ok($objIs->eq("o\x{338}\x{301}", "\x{1FF}"));
174ok($objIs->eq("O\x{338}\x{301}", "\x{1FE}"));
175ok($objIs->eq("A\x{30A}", "\x{212B}"));
176ok($objIs->eq("a\x{30A}\x{301}", "\x{1FB}"));
177ok($objIs->eq("A\x{30A}\x{301}", "\x{1FA}"));
178
179# 104
180
181$objIs->change(upper_before_lower => 1);
182
183ok($objIs->gt($ae,   $AE));
184ok($objIs->lt($AE, "\x{1D2D}"));
185ok($objIs->gt($auml, $Auml));
186ok($objIs->gt($ouml, $Ouml));
187ok($objIs->gt($ostk, $Ostk));
188ok($objIs->gt($arng, $Arng));
189
190# 110
191