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