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..122\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 $objTo = Unicode::Collate::Locale->
37    new(locale => 'TO', normalization => undef);
38
39ok($objTo->getlocale, 'to');
40
41$objTo->change(level => 1);
42
43ok($objTo->lt("n", "ng"));
44ok($objTo->lt("nz","ng"));
45ok($objTo->gt("o", "ng"));
46ok($objTo->lt("z", "\x{2BB}"));
47ok($objTo->lt("z", "\x{2BD}"));
48
49# 7
50
51ok($objTo->eq("a", "a\x{301}"));
52ok($objTo->eq("A", "A\x{301}"));
53ok($objTo->eq("e", "e\x{301}"));
54ok($objTo->eq("E", "E\x{301}"));
55ok($objTo->eq("i", "i\x{301}"));
56ok($objTo->eq("I", "I\x{301}"));
57ok($objTo->eq("o", "o\x{301}"));
58ok($objTo->eq("O", "O\x{301}"));
59ok($objTo->eq("u", "u\x{301}"));
60ok($objTo->eq("U", "U\x{301}"));
61
62ok($objTo->eq("a\x{301}", "a\x{304}"));
63ok($objTo->eq("A\x{301}", "A\x{304}"));
64ok($objTo->eq("e\x{301}", "e\x{304}"));
65ok($objTo->eq("E\x{301}", "E\x{304}"));
66ok($objTo->eq("i\x{301}", "i\x{304}"));
67ok($objTo->eq("I\x{301}", "I\x{304}"));
68ok($objTo->eq("o\x{301}", "o\x{304}"));
69ok($objTo->eq("O\x{301}", "O\x{304}"));
70ok($objTo->eq("u\x{301}", "u\x{304}"));
71ok($objTo->eq("U\x{301}", "U\x{304}"));
72
73# 27
74
75$objTo->change(level => 2);
76
77ok($objTo->lt("a", "a\x{301}"));
78ok($objTo->lt("A", "A\x{301}"));
79ok($objTo->lt("e", "e\x{301}"));
80ok($objTo->lt("E", "E\x{301}"));
81ok($objTo->lt("i", "i\x{301}"));
82ok($objTo->lt("I", "I\x{301}"));
83ok($objTo->lt("o", "o\x{301}"));
84ok($objTo->lt("O", "O\x{301}"));
85ok($objTo->lt("u", "u\x{301}"));
86ok($objTo->lt("U", "U\x{301}"));
87
88ok($objTo->lt("a\x{301}", "a\x{304}"));
89ok($objTo->lt("A\x{301}", "A\x{304}"));
90ok($objTo->lt("e\x{301}", "e\x{304}"));
91ok($objTo->lt("E\x{301}", "E\x{304}"));
92ok($objTo->lt("i\x{301}", "i\x{304}"));
93ok($objTo->lt("I\x{301}", "I\x{304}"));
94ok($objTo->lt("o\x{301}", "o\x{304}"));
95ok($objTo->lt("O\x{301}", "O\x{304}"));
96ok($objTo->lt("u\x{301}", "u\x{304}"));
97ok($objTo->lt("U\x{301}", "U\x{304}"));
98
99# 47
100
101ok($objTo->eq("ng", "Ng"));
102ok($objTo->eq("Ng", "NG"));
103ok($objTo->eq("NG", "\x{14B}"));
104ok($objTo->eq("\x{14B}", "\x{14A}"));
105ok($objTo->eq("\x{2BB}", "\x{2BD}"));
106
107ok($objTo->eq("a\x{301}", "A\x{301}"));
108ok($objTo->eq("a\x{304}", "A\x{304}"));
109ok($objTo->eq("e\x{301}", "E\x{301}"));
110ok($objTo->eq("e\x{304}", "E\x{304}"));
111ok($objTo->eq("i\x{301}", "I\x{301}"));
112ok($objTo->eq("i\x{304}", "I\x{304}"));
113ok($objTo->eq("o\x{301}", "O\x{301}"));
114ok($objTo->eq("o\x{304}", "O\x{304}"));
115ok($objTo->eq("u\x{301}", "U\x{301}"));
116ok($objTo->eq("u\x{304}", "U\x{304}"));
117
118# 62
119
120$objTo->change(level => 3);
121
122ok($objTo->lt("ng", "Ng"));
123ok($objTo->lt("Ng", "NG"));
124ok($objTo->lt("NG", "\x{14B}"));
125ok($objTo->lt("\x{14B}", "\x{14A}"));
126ok($objTo->lt("\x{2BB}", "\x{2BD}"));
127
128ok($objTo->lt("a\x{301}", "A\x{301}"));
129ok($objTo->lt("a\x{304}", "A\x{304}"));
130ok($objTo->lt("e\x{301}", "E\x{301}"));
131ok($objTo->lt("e\x{304}", "E\x{304}"));
132ok($objTo->lt("i\x{301}", "I\x{301}"));
133ok($objTo->lt("i\x{304}", "I\x{304}"));
134ok($objTo->lt("o\x{301}", "O\x{301}"));
135ok($objTo->lt("o\x{304}", "O\x{304}"));
136ok($objTo->lt("u\x{301}", "U\x{301}"));
137ok($objTo->lt("u\x{304}", "U\x{304}"));
138
139# 77
140
141ok($objTo->eq("a\x{301}", pack('U', 0xE1)));
142ok($objTo->eq("a\x{341}", pack('U', 0xE1)));
143ok($objTo->eq("A\x{301}", pack('U', 0xC1)));
144ok($objTo->eq("A\x{341}", pack('U', 0xC1)));
145ok($objTo->eq("e\x{301}", pack('U', 0xE9)));
146ok($objTo->eq("e\x{341}", pack('U', 0xE9)));
147ok($objTo->eq("E\x{301}", pack('U', 0xC9)));
148ok($objTo->eq("E\x{341}", pack('U', 0xC9)));
149ok($objTo->eq("i\x{301}", pack('U', 0xED)));
150ok($objTo->eq("i\x{341}", pack('U', 0xED)));
151ok($objTo->eq("I\x{301}", pack('U', 0xCD)));
152ok($objTo->eq("I\x{341}", pack('U', 0xCD)));
153ok($objTo->eq("o\x{301}", pack('U', 0xF3)));
154ok($objTo->eq("o\x{341}", pack('U', 0xF3)));
155ok($objTo->eq("O\x{301}", pack('U', 0xD3)));
156ok($objTo->eq("O\x{341}", pack('U', 0xD3)));
157ok($objTo->eq("u\x{301}", pack('U', 0xFA)));
158ok($objTo->eq("u\x{341}", pack('U', 0xFA)));
159ok($objTo->eq("U\x{301}", pack('U', 0xDA)));
160ok($objTo->eq("U\x{341}", pack('U', 0xDA)));
161
162ok($objTo->eq("a\x{304}", "\x{101}"));
163ok($objTo->eq("A\x{304}", "\x{100}"));
164ok($objTo->eq("e\x{304}", "\x{113}"));
165ok($objTo->eq("E\x{304}", "\x{112}"));
166ok($objTo->eq("i\x{304}", "\x{12B}"));
167ok($objTo->eq("I\x{304}", "\x{12A}"));
168ok($objTo->eq("o\x{304}", "\x{14D}"));
169ok($objTo->eq("O\x{304}", "\x{14C}"));
170ok($objTo->eq("u\x{304}", "\x{16B}"));
171ok($objTo->eq("U\x{304}", "\x{16A}"));
172
173# 107
174
175$objTo->change(upper_before_lower => 1);
176
177ok($objTo->gt("ng", "Ng"));
178ok($objTo->gt("Ng", "NG"));
179ok($objTo->lt("NG", "\x{14B}"));
180ok($objTo->gt("\x{14B}", "\x{14A}"));
181ok($objTo->lt("\x{2BB}", "\x{2BD}"));
182
183ok($objTo->gt("a\x{301}", "A\x{301}"));
184ok($objTo->gt("a\x{304}", "A\x{304}"));
185ok($objTo->gt("e\x{301}", "E\x{301}"));
186ok($objTo->gt("e\x{304}", "E\x{304}"));
187ok($objTo->gt("i\x{301}", "I\x{301}"));
188ok($objTo->gt("i\x{304}", "I\x{304}"));
189ok($objTo->gt("o\x{301}", "O\x{301}"));
190ok($objTo->gt("o\x{304}", "O\x{304}"));
191ok($objTo->gt("u\x{301}", "U\x{301}"));
192ok($objTo->gt("u\x{304}", "U\x{304}"));
193
194# 122
195