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..124\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 $objEe = Unicode::Collate::Locale->
32    new(locale => 'EE', normalization => undef);
33
34ok($objEe->getlocale, 'ee');
35
36# 2
37
38$objEe->change(level => 1);
39
40my @prim = (
41    "d", "d\x{292}", "dz", "\x{256}", # 5
42    "e",  "\x{25B}", "f",  "\x{192}", # 9
43    "g", "gz", "gb", "\x{263}", "h",  # 14
44    "hz", "x", "i", "kz", "kp", "l",  # 20
45    "nz", "ny", "\x{14B}", "o",       # 24
46    "\x{254}", "p", "tz", "ts", "u",  # 29
47    "v", "\x{28B}", "w",
48);
49
50for (my $i = 1; $i < @prim; $i++) {
51    ok($objEe->lt($prim[$i-1], $prim[$i]));
52}
53
54# 32
55
56ok($objEe->eq("\x{302}",  "\x{30C}"));
57ok($objEe->eq("a\x{302}", "a\x{30C}"));
58ok($objEe->eq("A\x{302}", "A\x{30C}"));
59ok($objEe->eq("e\x{302}", "e\x{30C}"));
60ok($objEe->eq("E\x{302}", "E\x{30C}"));
61ok($objEe->eq("i\x{302}", "i\x{30C}"));
62ok($objEe->eq("I\x{302}", "I\x{30C}"));
63ok($objEe->eq("o\x{302}", "o\x{30C}"));
64ok($objEe->eq("O\x{302}", "O\x{30C}"));
65ok($objEe->eq("u\x{302}", "u\x{30C}"));
66ok($objEe->eq("U\x{302}", "U\x{30C}"));
67ok($objEe->eq("y\x{302}", "y\x{30C}"));
68ok($objEe->eq("Y\x{302}", "Y\x{30C}"));
69
70# 45
71
72$objEe->change(level => 2);
73
74ok($objEe->gt("\x{302}",  "\x{30C}"));
75ok($objEe->gt("a\x{302}", "a\x{30C}"));
76ok($objEe->gt("A\x{302}", "A\x{30C}"));
77ok($objEe->gt("e\x{302}", "e\x{30C}"));
78ok($objEe->gt("E\x{302}", "E\x{30C}"));
79ok($objEe->gt("i\x{302}", "i\x{30C}"));
80ok($objEe->gt("I\x{302}", "I\x{30C}"));
81ok($objEe->gt("o\x{302}", "o\x{30C}"));
82ok($objEe->gt("O\x{302}", "O\x{30C}"));
83ok($objEe->gt("u\x{302}", "u\x{30C}"));
84ok($objEe->gt("U\x{302}", "U\x{30C}"));
85ok($objEe->gt("y\x{302}", "y\x{30C}"));
86ok($objEe->gt("Y\x{302}", "Y\x{30C}"));
87
88# 58
89
90ok($objEe->eq("dz", "Dz"));
91ok($objEe->eq("Dz", "DZ"));
92ok($objEe->eq("\x{256}", "\x{189}"));
93ok($objEe->eq("\x{25B}", "\x{190}"));
94ok($objEe->eq("\x{192}", "\x{191}"));
95ok($objEe->eq("gb", "Gb"));
96ok($objEe->eq("Gb", "GB"));
97ok($objEe->eq("\x{263}", "\x{194}"));
98ok($objEe->eq("x", "X"));
99ok($objEe->eq("kp", "Kp"));
100ok($objEe->eq("Kp", "KP"));
101ok($objEe->eq("ny", "Ny"));
102ok($objEe->eq("Ny", "NY"));
103ok($objEe->eq("\x{14B}", "\x{14A}"));
104ok($objEe->eq("\x{254}", "\x{186}"));
105ok($objEe->eq("ts", "Ts"));
106ok($objEe->eq("Ts", "TS"));
107ok($objEe->eq("\x{28B}", "\x{1B2}"));
108
109# 76
110
111$objEe->change(level => 3);
112
113ok($objEe->lt("dz", "Dz"));
114ok($objEe->lt("Dz", "DZ"));
115ok($objEe->lt("\x{256}", "\x{189}"));
116ok($objEe->lt("\x{25B}", "\x{190}"));
117ok($objEe->lt("\x{192}", "\x{191}"));
118ok($objEe->lt("gb", "Gb"));
119ok($objEe->lt("Gb", "GB"));
120ok($objEe->lt("\x{263}", "\x{194}"));
121ok($objEe->lt("x", "X"));
122ok($objEe->lt("kp", "Kp"));
123ok($objEe->lt("Kp", "KP"));
124ok($objEe->lt("ny", "Ny"));
125ok($objEe->lt("Ny", "NY"));
126ok($objEe->lt("\x{14B}", "\x{14A}"));
127ok($objEe->lt("\x{254}", "\x{186}"));
128ok($objEe->lt("ts", "Ts"));
129ok($objEe->lt("Ts", "TS"));
130ok($objEe->lt("\x{28B}", "\x{1B2}"));
131
132# 94
133
134ok($objEe->eq("a\x{302}", _pack_U(0xE2)));
135ok($objEe->eq("A\x{302}", _pack_U(0xC2)));
136ok($objEe->eq("e\x{302}", _pack_U(0xEA)));
137ok($objEe->eq("E\x{302}", _pack_U(0xCA)));
138ok($objEe->eq("i\x{302}", _pack_U(0xEE)));
139ok($objEe->eq("I\x{302}", _pack_U(0xCE)));
140ok($objEe->eq("o\x{302}", _pack_U(0xF4)));
141ok($objEe->eq("O\x{302}", _pack_U(0xD4)));
142ok($objEe->eq("u\x{302}", _pack_U(0xFB)));
143ok($objEe->eq("U\x{302}", _pack_U(0xDB)));
144ok($objEe->eq("y\x{302}", "\x{177}"));
145ok($objEe->eq("Y\x{302}", "\x{176}"));
146
147# 106
148
149$objEe->change(upper_before_lower => 1);
150
151ok($objEe->gt("dz", "Dz"));
152ok($objEe->gt("Dz", "DZ"));
153ok($objEe->gt("\x{256}", "\x{189}"));
154ok($objEe->gt("\x{25B}", "\x{190}"));
155ok($objEe->gt("\x{192}", "\x{191}"));
156ok($objEe->gt("gb", "Gb"));
157ok($objEe->gt("Gb", "GB"));
158ok($objEe->gt("\x{263}", "\x{194}"));
159ok($objEe->gt("x", "X"));
160ok($objEe->gt("kp", "Kp"));
161ok($objEe->gt("Kp", "KP"));
162ok($objEe->gt("ny", "Ny"));
163ok($objEe->gt("Ny", "NY"));
164ok($objEe->gt("\x{14B}", "\x{14A}"));
165ok($objEe->gt("\x{254}", "\x{186}"));
166ok($objEe->gt("ts", "Ts"));
167ok($objEe->gt("Ts", "TS"));
168ok($objEe->gt("\x{28B}", "\x{1B2}"));
169
170# 124
171