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..112\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 $objIg = Unicode::Collate::Locale->
32    new(locale => 'IG', normalization => undef);
33
34ok($objIg->getlocale, 'ig');
35
36$objIg->change(level => 1);
37
38ok($objIg->lt("b", "ch"));
39ok($objIg->lt("bz","ch"));
40ok($objIg->gt("c", "ch"));
41ok($objIg->lt("g", "gb"));
42ok($objIg->lt("gz","gb"));
43ok($objIg->lt("gb","gh"));
44ok($objIg->lt("gbz","gh"));
45ok($objIg->lt("gh","gw"));
46ok($objIg->lt("ghz","gw"));
47ok($objIg->gt("h", "gw"));
48ok($objIg->lt("i", "i\x{323}"));
49ok($objIg->gt("j", "i\x{323}"));
50ok($objIg->lt("k", "kp"));
51ok($objIg->lt("kz","kp"));
52ok($objIg->lt("kp","kw"));
53ok($objIg->lt("kpz","kw"));
54ok($objIg->gt("l", "kw"));
55ok($objIg->lt("n", "n\x{307}"));
56ok($objIg->lt("nz","n\x{307}"));
57ok($objIg->gt("nw","n\x{307}"));
58ok($objIg->lt("nw", "ny"));
59ok($objIg->lt("nwz","ny"));
60ok($objIg->gt("o",  "ny"));
61ok($objIg->lt("o", "o\x{323}"));
62ok($objIg->gt("p", "o\x{323}"));
63ok($objIg->lt("s", "sh"));
64ok($objIg->lt("sz","sh"));
65ok($objIg->gt("t", "sh"));
66ok($objIg->lt("u", "u\x{323}"));
67ok($objIg->gt("v", "u\x{323}"));
68
69# 32
70
71$objIg->change(level => 2);
72
73ok($objIg->eq("ch", "Ch"));
74ok($objIg->eq("Ch", "CH"));
75ok($objIg->eq("gb", "Gb"));
76ok($objIg->eq("Gb", "GB"));
77ok($objIg->eq("gh", "Gh"));
78ok($objIg->eq("Gh", "GH"));
79ok($objIg->eq("gw", "Gw"));
80ok($objIg->eq("Gw", "GW"));
81ok($objIg->eq("i\x{323}", "I\x{323}"));
82ok($objIg->eq("kp", "Kp"));
83ok($objIg->eq("Kp", "KP"));
84ok($objIg->eq("kw", "Kw"));
85ok($objIg->eq("Kw", "KW"));
86ok($objIg->eq("n\x{307}", "N\x{307}"));
87ok($objIg->eq("nw", "Nw"));
88ok($objIg->eq("Nw", "NW"));
89ok($objIg->eq("ny", "Ny"));
90ok($objIg->eq("Ny", "NY"));
91ok($objIg->eq("o\x{323}", "O\x{323}"));
92ok($objIg->eq("sh", "Sh"));
93ok($objIg->eq("Sh", "SH"));
94ok($objIg->eq("u\x{323}", "U\x{323}"));
95
96# 54
97
98$objIg->change(level => 3);
99
100ok($objIg->lt("ch", "Ch"));
101ok($objIg->lt("Ch", "CH"));
102ok($objIg->lt("gb", "Gb"));
103ok($objIg->lt("Gb", "GB"));
104ok($objIg->lt("gh", "Gh"));
105ok($objIg->lt("Gh", "GH"));
106ok($objIg->lt("gw", "Gw"));
107ok($objIg->lt("Gw", "GW"));
108ok($objIg->lt("i\x{323}", "I\x{323}"));
109ok($objIg->lt("kp", "Kp"));
110ok($objIg->lt("Kp", "KP"));
111ok($objIg->lt("kw", "Kw"));
112ok($objIg->lt("Kw", "KW"));
113ok($objIg->lt("n\x{307}", "N\x{307}"));
114ok($objIg->lt("nw", "Nw"));
115ok($objIg->lt("Nw", "NW"));
116ok($objIg->lt("ny", "Ny"));
117ok($objIg->lt("Ny", "NY"));
118ok($objIg->lt("o\x{323}", "O\x{323}"));
119ok($objIg->lt("sh", "Sh"));
120ok($objIg->lt("Sh", "SH"));
121ok($objIg->lt("u\x{323}", "U\x{323}"));
122
123# 76
124
125ok($objIg->eq("i\x{323}", "\x{1ECB}"));
126ok($objIg->eq("I\x{323}", "\x{1ECA}"));
127ok($objIg->eq("n\x{307}", "\x{1E45}"));
128ok($objIg->eq("N\x{307}", "\x{1E44}"));
129ok($objIg->eq("o\x{323}", "\x{1ECD}"));
130ok($objIg->eq("O\x{323}", "\x{1ECC}"));
131ok($objIg->eq("u\x{323}", "\x{1EE5}"));
132ok($objIg->eq("U\x{323}", "\x{1EE4}"));
133
134ok($objIg->eq("o\x{323}\x{302}", "\x{1ED9}"));
135ok($objIg->eq("O\x{323}\x{302}", "\x{1ED8}"));
136ok($objIg->eq("o\x{323}\x{31B}", "\x{1EE3}"));
137ok($objIg->eq("O\x{323}\x{31B}", "\x{1EE2}"));
138ok($objIg->eq("u\x{323}\x{31B}", "\x{1EF1}"));
139ok($objIg->eq("U\x{323}\x{31B}", "\x{1EF0}"));
140
141# 90
142
143$objIg->change(upper_before_lower => 1);
144
145ok($objIg->gt("ch", "Ch"));
146ok($objIg->gt("Ch", "CH"));
147ok($objIg->gt("gb", "Gb"));
148ok($objIg->gt("Gb", "GB"));
149ok($objIg->gt("gh", "Gh"));
150ok($objIg->gt("Gh", "GH"));
151ok($objIg->gt("gw", "Gw"));
152ok($objIg->gt("Gw", "GW"));
153ok($objIg->gt("i\x{323}", "I\x{323}"));
154ok($objIg->gt("kp", "Kp"));
155ok($objIg->gt("Kp", "KP"));
156ok($objIg->gt("kw", "Kw"));
157ok($objIg->gt("Kw", "KW"));
158ok($objIg->gt("n\x{307}", "N\x{307}"));
159ok($objIg->gt("nw", "Nw"));
160ok($objIg->gt("Nw", "NW"));
161ok($objIg->gt("ny", "Ny"));
162ok($objIg->gt("Ny", "NY"));
163ok($objIg->gt("o\x{323}", "O\x{323}"));
164ok($objIg->gt("sh", "Sh"));
165ok($objIg->gt("Sh", "SH"));
166ok($objIg->gt("u\x{323}", "U\x{323}"));
167
168# 112
169