1
2BEGIN {
3    unless ('A' eq pack('U', 0x41)) {
4	print "1..0 # Unicode::Collate cannot pack a Unicode code point\n";
5	exit 0;
6    }
7    unless (0x41 == unpack('U', 'A')) {
8	print "1..0 # Unicode::Collate cannot get a Unicode code point\n";
9	exit 0;
10    }
11    if ($ENV{PERL_CORE}) {
12	chdir('t') if -d 't';
13	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
14    }
15}
16
17use strict;
18use warnings;
19BEGIN { $| = 1; print "1..112\n"; }
20my $count = 0;
21sub ok ($;$) {
22    my $p = my $r = shift;
23    if (@_) {
24	my $x = shift;
25	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
26    }
27    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
28}
29
30use Unicode::Collate::Locale;
31
32ok(1);
33
34#########################
35
36my $objIg = Unicode::Collate::Locale->
37    new(locale => 'IG', normalization => undef);
38
39ok($objIg->getlocale, 'ig');
40
41$objIg->change(level => 1);
42
43ok($objIg->lt("b", "ch"));
44ok($objIg->lt("bz","ch"));
45ok($objIg->gt("c", "ch"));
46ok($objIg->lt("g", "gb"));
47ok($objIg->lt("gz","gb"));
48ok($objIg->lt("gb","gh"));
49ok($objIg->lt("gbz","gh"));
50ok($objIg->lt("gh","gw"));
51ok($objIg->lt("ghz","gw"));
52ok($objIg->gt("h", "gw"));
53ok($objIg->lt("i", "i\x{323}"));
54ok($objIg->gt("j", "i\x{323}"));
55ok($objIg->lt("k", "kp"));
56ok($objIg->lt("kz","kp"));
57ok($objIg->lt("kp","kw"));
58ok($objIg->lt("kpz","kw"));
59ok($objIg->gt("l", "kw"));
60ok($objIg->lt("n", "n\x{307}"));
61ok($objIg->lt("nz","n\x{307}"));
62ok($objIg->gt("nw","n\x{307}"));
63ok($objIg->lt("nw", "ny"));
64ok($objIg->lt("nwz","ny"));
65ok($objIg->gt("o",  "ny"));
66ok($objIg->lt("o", "o\x{323}"));
67ok($objIg->gt("p", "o\x{323}"));
68ok($objIg->lt("s", "sh"));
69ok($objIg->lt("sz","sh"));
70ok($objIg->gt("t", "sh"));
71ok($objIg->lt("u", "u\x{323}"));
72ok($objIg->gt("v", "u\x{323}"));
73
74# 32
75
76$objIg->change(level => 2);
77
78ok($objIg->eq("ch", "Ch"));
79ok($objIg->eq("Ch", "CH"));
80ok($objIg->eq("gb", "Gb"));
81ok($objIg->eq("Gb", "GB"));
82ok($objIg->eq("gh", "Gh"));
83ok($objIg->eq("Gh", "GH"));
84ok($objIg->eq("gw", "Gw"));
85ok($objIg->eq("Gw", "GW"));
86ok($objIg->eq("i\x{323}", "I\x{323}"));
87ok($objIg->eq("kp", "Kp"));
88ok($objIg->eq("Kp", "KP"));
89ok($objIg->eq("kw", "Kw"));
90ok($objIg->eq("Kw", "KW"));
91ok($objIg->eq("n\x{307}", "N\x{307}"));
92ok($objIg->eq("nw", "Nw"));
93ok($objIg->eq("Nw", "NW"));
94ok($objIg->eq("ny", "Ny"));
95ok($objIg->eq("Ny", "NY"));
96ok($objIg->eq("o\x{323}", "O\x{323}"));
97ok($objIg->eq("sh", "Sh"));
98ok($objIg->eq("Sh", "SH"));
99ok($objIg->eq("u\x{323}", "U\x{323}"));
100
101# 54
102
103$objIg->change(level => 3);
104
105ok($objIg->lt("ch", "Ch"));
106ok($objIg->lt("Ch", "CH"));
107ok($objIg->lt("gb", "Gb"));
108ok($objIg->lt("Gb", "GB"));
109ok($objIg->lt("gh", "Gh"));
110ok($objIg->lt("Gh", "GH"));
111ok($objIg->lt("gw", "Gw"));
112ok($objIg->lt("Gw", "GW"));
113ok($objIg->lt("i\x{323}", "I\x{323}"));
114ok($objIg->lt("kp", "Kp"));
115ok($objIg->lt("Kp", "KP"));
116ok($objIg->lt("kw", "Kw"));
117ok($objIg->lt("Kw", "KW"));
118ok($objIg->lt("n\x{307}", "N\x{307}"));
119ok($objIg->lt("nw", "Nw"));
120ok($objIg->lt("Nw", "NW"));
121ok($objIg->lt("ny", "Ny"));
122ok($objIg->lt("Ny", "NY"));
123ok($objIg->lt("o\x{323}", "O\x{323}"));
124ok($objIg->lt("sh", "Sh"));
125ok($objIg->lt("Sh", "SH"));
126ok($objIg->lt("u\x{323}", "U\x{323}"));
127
128# 76
129
130ok($objIg->eq("i\x{323}", "\x{1ECB}"));
131ok($objIg->eq("I\x{323}", "\x{1ECA}"));
132ok($objIg->eq("n\x{307}", "\x{1E45}"));
133ok($objIg->eq("N\x{307}", "\x{1E44}"));
134ok($objIg->eq("o\x{323}", "\x{1ECD}"));
135ok($objIg->eq("O\x{323}", "\x{1ECC}"));
136ok($objIg->eq("u\x{323}", "\x{1EE5}"));
137ok($objIg->eq("U\x{323}", "\x{1EE4}"));
138
139ok($objIg->eq("o\x{323}\x{302}", "\x{1ED9}"));
140ok($objIg->eq("O\x{323}\x{302}", "\x{1ED8}"));
141ok($objIg->eq("o\x{323}\x{31B}", "\x{1EE3}"));
142ok($objIg->eq("O\x{323}\x{31B}", "\x{1EE2}"));
143ok($objIg->eq("u\x{323}\x{31B}", "\x{1EF1}"));
144ok($objIg->eq("U\x{323}\x{31B}", "\x{1EF0}"));
145
146# 90
147
148$objIg->change(upper_before_lower => 1);
149
150ok($objIg->gt("ch", "Ch"));
151ok($objIg->gt("Ch", "CH"));
152ok($objIg->gt("gb", "Gb"));
153ok($objIg->gt("Gb", "GB"));
154ok($objIg->gt("gh", "Gh"));
155ok($objIg->gt("Gh", "GH"));
156ok($objIg->gt("gw", "Gw"));
157ok($objIg->gt("Gw", "GW"));
158ok($objIg->gt("i\x{323}", "I\x{323}"));
159ok($objIg->gt("kp", "Kp"));
160ok($objIg->gt("Kp", "KP"));
161ok($objIg->gt("kw", "Kw"));
162ok($objIg->gt("Kw", "KW"));
163ok($objIg->gt("n\x{307}", "N\x{307}"));
164ok($objIg->gt("nw", "Nw"));
165ok($objIg->gt("Nw", "NW"));
166ok($objIg->gt("ny", "Ny"));
167ok($objIg->gt("Ny", "NY"));
168ok($objIg->gt("o\x{323}", "O\x{323}"));
169ok($objIg->gt("sh", "Sh"));
170ok($objIg->gt("Sh", "SH"));
171ok($objIg->gt("u\x{323}", "U\x{323}"));
172
173# 112
174