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