This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Updated Unicode-Collate to CPAN version 0.76
[perl5.git] / cpan / Unicode-Collate / t / loc_zhpy.t
1
2 BEGIN {
3     unless ("A" eq pack('U', 0x41)) {
4         print "1..0 # Unicode::Collate " .
5             "cannot stringify a Unicode code point\n";
6         exit 0;
7     }
8     if ($ENV{PERL_CORE}) {
9         chdir('t') if -d 't';
10         @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
11     }
12 }
13
14 use Test;
15 BEGIN { plan tests => 283 };
16
17 use strict;
18 use warnings;
19 use Unicode::Collate::Locale;
20
21 ok(1);
22
23 #########################
24
25 my $objZhP = Unicode::Collate::Locale->
26     new(locale => 'ZH__pinyin', normalization => undef);
27
28 ok($objZhP->getlocale, 'zh__pinyin');
29
30 $objZhP->change(level => 1);
31
32 ok($objZhP->eq("a\x{304}", "a\x{301}"));
33 ok($objZhP->eq("a\x{301}", "a\x{30C}"));
34 ok($objZhP->eq("a\x{30C}", "a\x{300}"));
35 ok($objZhP->eq("a\x{300}", "a"));
36 ok($objZhP->eq("e\x{304}", "e\x{301}"));
37 ok($objZhP->eq("e\x{301}", "e\x{30C}"));
38 ok($objZhP->eq("e\x{30C}", "e\x{300}"));
39 ok($objZhP->eq("e\x{300}", "e"));
40 ok($objZhP->eq("e\x{302}\x{304}", "e\x{302}\x{301}"));
41 ok($objZhP->eq("e\x{302}\x{301}", "e\x{302}\x{30C}"));
42 ok($objZhP->eq("e\x{302}\x{30C}", "e\x{302}\x{300}"));
43 ok($objZhP->eq("e\x{302}\x{300}", "e\x{302}"));
44 ok($objZhP->eq("i\x{304}", "i\x{301}"));
45 ok($objZhP->eq("i\x{301}", "i\x{30C}"));
46 ok($objZhP->eq("i\x{30C}", "i\x{300}"));
47 ok($objZhP->eq("i\x{300}", "i"));
48 ok($objZhP->eq("m\x{304}", "m\x{301}"));
49 ok($objZhP->eq("m\x{301}", "m\x{30C}"));
50 ok($objZhP->eq("m\x{30C}", "m\x{300}"));
51 ok($objZhP->eq("m\x{300}", "m"));
52 ok($objZhP->eq("n\x{304}", "n\x{301}"));
53 ok($objZhP->eq("n\x{301}", "n\x{30C}"));
54 ok($objZhP->eq("n\x{30C}", "n\x{300}"));
55 ok($objZhP->eq("n\x{300}", "n"));
56 ok($objZhP->eq("o\x{304}", "o\x{301}"));
57 ok($objZhP->eq("o\x{301}", "o\x{30C}"));
58 ok($objZhP->eq("o\x{30C}", "o\x{300}"));
59 ok($objZhP->eq("o\x{300}", "o"));
60 ok($objZhP->eq("u\x{304}", "u\x{301}"));
61 ok($objZhP->eq("u\x{301}", "u\x{30C}"));
62 ok($objZhP->eq("u\x{30C}", "u\x{300}"));
63 ok($objZhP->eq("u\x{300}", "u"));
64 ok($objZhP->eq("u\x{308}\x{304}", "u\x{308}\x{301}"));
65 ok($objZhP->eq("u\x{308}\x{301}", "u\x{308}\x{30C}"));
66 ok($objZhP->eq("u\x{308}\x{30C}", "u\x{308}\x{300}"));
67 ok($objZhP->eq("u\x{308}\x{300}", "u\x{308}"));
68
69 # 38
70
71 $objZhP->change(level => 2);
72
73 ok($objZhP->lt("a\x{304}", "a\x{301}"));
74 ok($objZhP->lt("a\x{301}", "a\x{30C}"));
75 ok($objZhP->lt("a\x{30C}", "a\x{300}"));
76 ok($objZhP->lt("a\x{300}", "a"));
77 ok($objZhP->lt("e\x{304}", "e\x{301}"));
78 ok($objZhP->lt("e\x{301}", "e\x{30C}"));
79 ok($objZhP->lt("e\x{30C}", "e\x{300}"));
80 ok($objZhP->lt("e\x{300}", "e"));
81 ok($objZhP->lt("e\x{302}\x{304}", "e\x{302}\x{301}"));
82 ok($objZhP->lt("e\x{302}\x{301}", "e\x{302}\x{30C}"));
83 ok($objZhP->lt("e\x{302}\x{30C}", "e\x{302}\x{300}"));
84 ok($objZhP->lt("e\x{302}\x{300}", "e\x{302}"));
85 ok($objZhP->lt("i\x{304}", "i\x{301}"));
86 ok($objZhP->lt("i\x{301}", "i\x{30C}"));
87 ok($objZhP->lt("i\x{30C}", "i\x{300}"));
88 ok($objZhP->lt("i\x{300}", "i"));
89 ok($objZhP->lt("m\x{304}", "m\x{301}"));
90 ok($objZhP->lt("m\x{301}", "m\x{30C}"));
91 ok($objZhP->lt("m\x{30C}", "m\x{300}"));
92 ok($objZhP->lt("m\x{300}", "m"));
93 ok($objZhP->lt("n\x{304}", "n\x{301}"));
94 ok($objZhP->lt("n\x{301}", "n\x{30C}"));
95 ok($objZhP->lt("n\x{30C}", "n\x{300}"));
96 ok($objZhP->lt("n\x{300}", "n"));
97 ok($objZhP->lt("o\x{304}", "o\x{301}"));
98 ok($objZhP->lt("o\x{301}", "o\x{30C}"));
99 ok($objZhP->lt("o\x{30C}", "o\x{300}"));
100 ok($objZhP->lt("o\x{300}", "o"));
101 ok($objZhP->lt("u\x{304}", "u\x{301}"));
102 ok($objZhP->lt("u\x{301}", "u\x{30C}"));
103 ok($objZhP->lt("u\x{30C}", "u\x{300}"));
104 ok($objZhP->lt("u\x{300}", "u"));
105 ok($objZhP->lt("u\x{308}\x{304}", "u\x{308}\x{301}"));
106 ok($objZhP->lt("u\x{308}\x{301}", "u\x{308}\x{30C}"));
107 ok($objZhP->lt("u\x{308}\x{30C}", "u\x{308}\x{300}"));
108 ok($objZhP->lt("u\x{308}\x{300}", "u\x{308}"));
109
110 # 74
111
112 ok($objZhP->eq("a\x{304}", "A\x{304}"));
113 ok($objZhP->eq("a\x{301}", "A\x{301}"));
114 ok($objZhP->eq("a\x{30C}", "A\x{30C}"));
115 ok($objZhP->eq("a\x{300}", "A\x{300}"));
116 ok($objZhP->eq("e\x{304}", "E\x{304}"));
117 ok($objZhP->eq("e\x{301}", "E\x{301}"));
118 ok($objZhP->eq("e\x{30C}", "E\x{30C}"));
119 ok($objZhP->eq("e\x{300}", "E\x{300}"));
120 ok($objZhP->eq("e\x{302}\x{304}", "E\x{302}\x{304}"));
121 ok($objZhP->eq("e\x{302}\x{301}", "E\x{302}\x{301}"));
122 ok($objZhP->eq("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
123 ok($objZhP->eq("e\x{302}\x{300}", "E\x{302}\x{300}"));
124 ok($objZhP->eq("e\x{302}", "E\x{302}"));
125 ok($objZhP->eq("i\x{304}", "I\x{304}"));
126 ok($objZhP->eq("i\x{301}", "I\x{301}"));
127 ok($objZhP->eq("i\x{30C}", "I\x{30C}"));
128 ok($objZhP->eq("i\x{300}", "I\x{300}"));
129 ok($objZhP->eq("m\x{304}", "M\x{304}"));
130 ok($objZhP->eq("m\x{301}", "M\x{301}"));
131 ok($objZhP->eq("m\x{30C}", "M\x{30C}"));
132 ok($objZhP->eq("m\x{300}", "M\x{300}"));
133 ok($objZhP->eq("n\x{304}", "N\x{304}"));
134 ok($objZhP->eq("n\x{301}", "N\x{301}"));
135 ok($objZhP->eq("n\x{30C}", "N\x{30C}"));
136 ok($objZhP->eq("n\x{300}", "N\x{300}"));
137 ok($objZhP->eq("o\x{304}", "O\x{304}"));
138 ok($objZhP->eq("o\x{301}", "O\x{301}"));
139 ok($objZhP->eq("o\x{30C}", "O\x{30C}"));
140 ok($objZhP->eq("o\x{300}", "O\x{300}"));
141 ok($objZhP->eq("u\x{304}", "U\x{304}"));
142 ok($objZhP->eq("u\x{301}", "U\x{301}"));
143 ok($objZhP->eq("u\x{30C}", "U\x{30C}"));
144 ok($objZhP->eq("u\x{300}", "U\x{300}"));
145 ok($objZhP->eq("u\x{308}\x{304}", "U\x{308}\x{304}"));
146 ok($objZhP->eq("u\x{308}\x{301}", "U\x{308}\x{301}"));
147 ok($objZhP->eq("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
148 ok($objZhP->eq("u\x{308}\x{300}", "U\x{308}\x{300}"));
149 ok($objZhP->eq("u\x{308}", "U\x{308}"));
150
151 # 112
152
153 $objZhP->change(level => 3);
154
155 ok($objZhP->lt("a\x{304}", "A\x{304}"));
156 ok($objZhP->lt("a\x{301}", "A\x{301}"));
157 ok($objZhP->lt("a\x{30C}", "A\x{30C}"));
158 ok($objZhP->lt("a\x{300}", "A\x{300}"));
159 ok($objZhP->lt("e\x{304}", "E\x{304}"));
160 ok($objZhP->lt("e\x{301}", "E\x{301}"));
161 ok($objZhP->lt("e\x{30C}", "E\x{30C}"));
162 ok($objZhP->lt("e\x{300}", "E\x{300}"));
163 ok($objZhP->lt("e\x{302}\x{304}", "E\x{302}\x{304}"));
164 ok($objZhP->lt("e\x{302}\x{301}", "E\x{302}\x{301}"));
165 ok($objZhP->lt("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
166 ok($objZhP->lt("e\x{302}\x{300}", "E\x{302}\x{300}"));
167 ok($objZhP->lt("e\x{302}", "E\x{302}"));
168 ok($objZhP->lt("i\x{304}", "I\x{304}"));
169 ok($objZhP->lt("i\x{301}", "I\x{301}"));
170 ok($objZhP->lt("i\x{30C}", "I\x{30C}"));
171 ok($objZhP->lt("i\x{300}", "I\x{300}"));
172 ok($objZhP->lt("m\x{304}", "M\x{304}"));
173 ok($objZhP->lt("m\x{301}", "M\x{301}"));
174 ok($objZhP->lt("m\x{30C}", "M\x{30C}"));
175 ok($objZhP->lt("m\x{300}", "M\x{300}"));
176 ok($objZhP->lt("n\x{304}", "N\x{304}"));
177 ok($objZhP->lt("n\x{301}", "N\x{301}"));
178 ok($objZhP->lt("n\x{30C}", "N\x{30C}"));
179 ok($objZhP->lt("n\x{300}", "N\x{300}"));
180 ok($objZhP->lt("o\x{304}", "O\x{304}"));
181 ok($objZhP->lt("o\x{301}", "O\x{301}"));
182 ok($objZhP->lt("o\x{30C}", "O\x{30C}"));
183 ok($objZhP->lt("o\x{300}", "O\x{300}"));
184 ok($objZhP->lt("u\x{304}", "U\x{304}"));
185 ok($objZhP->lt("u\x{301}", "U\x{301}"));
186 ok($objZhP->lt("u\x{30C}", "U\x{30C}"));
187 ok($objZhP->lt("u\x{300}", "U\x{300}"));
188 ok($objZhP->lt("u\x{308}\x{304}", "U\x{308}\x{304}"));
189 ok($objZhP->lt("u\x{308}\x{301}", "U\x{308}\x{301}"));
190 ok($objZhP->lt("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
191 ok($objZhP->lt("u\x{308}\x{300}", "U\x{308}\x{300}"));
192 ok($objZhP->lt("u\x{308}", "U\x{308}"));
193
194 # 150
195
196 ok($objZhP->eq("a\x{304}", "\x{101}"));
197 ok($objZhP->eq("A\x{304}", "\x{100}"));
198 ok($objZhP->eq("a\x{301}", pack('U', 0xE1)));
199 ok($objZhP->eq("a\x{301}", "a\x{341}"));
200 ok($objZhP->eq("A\x{301}", pack('U', 0xC1)));
201 ok($objZhP->eq("A\x{301}", "A\x{341}"));
202 ok($objZhP->eq("a\x{30C}", "\x{1CE}"));
203 ok($objZhP->eq("A\x{30C}", "\x{1CD}"));
204 ok($objZhP->eq("a\x{300}", pack('U', 0xE0)));
205 ok($objZhP->eq("a\x{300}", "a\x{340}"));
206 ok($objZhP->eq("A\x{300}", pack('U', 0xC0)));
207 ok($objZhP->eq("A\x{300}", "A\x{340}"));
208 ok($objZhP->eq("e\x{304}", "\x{113}"));
209 ok($objZhP->eq("E\x{304}", "\x{112}"));
210 ok($objZhP->eq("e\x{301}", pack('U', 0xE9)));
211 ok($objZhP->eq("e\x{301}", "e\x{341}"));
212 ok($objZhP->eq("E\x{301}", pack('U', 0xC9)));
213 ok($objZhP->eq("E\x{301}", "E\x{341}"));
214 ok($objZhP->eq("e\x{30C}", "\x{11B}"));
215 ok($objZhP->eq("E\x{30C}", "\x{11A}"));
216 ok($objZhP->eq("e\x{300}", pack('U', 0xE8)));
217 ok($objZhP->eq("e\x{300}", "e\x{340}"));
218 ok($objZhP->eq("E\x{300}", pack('U', 0xC8)));
219 ok($objZhP->eq("E\x{300}", "E\x{340}"));
220 ok($objZhP->eq("e\x{302}\x{304}", pack('U*', 0xEA, 0x304)));
221 ok($objZhP->eq("E\x{302}\x{304}", pack('U*', 0xCA, 0x304)));
222 ok($objZhP->eq("e\x{302}\x{301}", "\x{1EBF}"));
223 ok($objZhP->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x301)));
224 ok($objZhP->eq("e\x{302}\x{301}", "e\x{302}\x{341}"));
225 ok($objZhP->eq("E\x{302}\x{301}", "\x{1EBE}"));
226 ok($objZhP->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x301)));
227 ok($objZhP->eq("E\x{302}\x{301}", "E\x{302}\x{341}"));
228 ok($objZhP->eq("e\x{302}\x{30C}", pack('U*', 0xEA, 0x30C)));
229 ok($objZhP->eq("E\x{302}\x{30C}", pack('U*', 0xCA, 0x30C)));
230 ok($objZhP->eq("e\x{302}\x{300}", "\x{1EC1}"));
231 ok($objZhP->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x300)));
232 ok($objZhP->eq("e\x{302}\x{300}", "e\x{302}\x{340}"));
233 ok($objZhP->eq("E\x{302}\x{300}", "\x{1EC0}"));
234 ok($objZhP->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x300)));
235 ok($objZhP->eq("E\x{302}\x{300}", "E\x{302}\x{340}"));
236 ok($objZhP->eq("e\x{302}", pack('U', 0xEA)));
237 ok($objZhP->eq("E\x{302}", pack('U', 0xCA)));
238 ok($objZhP->eq("i\x{304}", "\x{12B}"));
239 ok($objZhP->eq("I\x{304}", "\x{12A}"));
240 ok($objZhP->eq("i\x{301}", pack('U', 0xED)));
241 ok($objZhP->eq("i\x{301}", "i\x{341}"));
242 ok($objZhP->eq("I\x{301}", pack('U', 0xCD)));
243 ok($objZhP->eq("I\x{301}", "I\x{341}"));
244 ok($objZhP->eq("i\x{30C}", "\x{1D0}"));
245 ok($objZhP->eq("I\x{30C}", "\x{1CF}"));
246 ok($objZhP->eq("i\x{300}", pack('U', 0xEC)));
247 ok($objZhP->eq("i\x{300}", "i\x{340}"));
248 ok($objZhP->eq("I\x{300}", pack('U', 0xCC)));
249 ok($objZhP->eq("I\x{300}", "I\x{340}"));
250 ok($objZhP->eq("m\x{301}", "\x{1E3F}"));
251 ok($objZhP->eq("m\x{301}", "m\x{341}"));
252 ok($objZhP->eq("M\x{301}", "\x{1E3E}"));
253 ok($objZhP->eq("M\x{301}", "M\x{341}"));
254 ok($objZhP->eq("m\x{300}", "m\x{340}"));
255 ok($objZhP->eq("M\x{300}", "M\x{340}"));
256 ok($objZhP->eq("n\x{301}", "\x{144}"));
257 ok($objZhP->eq("n\x{301}", "n\x{341}"));
258 ok($objZhP->eq("N\x{301}", "\x{143}"));
259 ok($objZhP->eq("N\x{301}", "N\x{341}"));
260 ok($objZhP->eq("n\x{30C}", "\x{148}"));
261 ok($objZhP->eq("N\x{30C}", "\x{147}"));
262 ok($objZhP->eq("n\x{300}", "\x{1F9}"));
263 ok($objZhP->eq("n\x{300}", "n\x{340}"));
264 ok($objZhP->eq("N\x{300}", "\x{1F8}"));
265 ok($objZhP->eq("N\x{300}", "N\x{340}"));
266 ok($objZhP->eq("o\x{304}", "\x{14D}"));
267 ok($objZhP->eq("O\x{304}", "\x{14C}"));
268 ok($objZhP->eq("o\x{301}", pack('U', 0xF3)));
269 ok($objZhP->eq("o\x{301}", "o\x{341}"));
270 ok($objZhP->eq("O\x{301}", pack('U', 0xD3)));
271 ok($objZhP->eq("O\x{301}", "O\x{341}"));
272 ok($objZhP->eq("o\x{30C}", "\x{1D2}"));
273 ok($objZhP->eq("O\x{30C}", "\x{1D1}"));
274 ok($objZhP->eq("o\x{300}", pack('U', 0xF2)));
275 ok($objZhP->eq("o\x{300}", "o\x{340}"));
276 ok($objZhP->eq("O\x{300}", pack('U', 0xD2)));
277 ok($objZhP->eq("O\x{300}", "O\x{340}"));
278 ok($objZhP->eq("u\x{304}", "\x{16B}"));
279 ok($objZhP->eq("U\x{304}", "\x{16A}"));
280 ok($objZhP->eq("u\x{301}", pack('U', 0xFA)));
281 ok($objZhP->eq("u\x{301}", "u\x{341}"));
282 ok($objZhP->eq("U\x{301}", pack('U', 0xDA)));
283 ok($objZhP->eq("U\x{301}", "U\x{341}"));
284 ok($objZhP->eq("u\x{30C}", "\x{1D4}"));
285 ok($objZhP->eq("U\x{30C}", "\x{1D3}"));
286 ok($objZhP->eq("u\x{300}", pack('U', 0xF9)));
287 ok($objZhP->eq("u\x{300}", "u\x{340}"));
288 ok($objZhP->eq("U\x{300}", pack('U', 0xD9)));
289 ok($objZhP->eq("U\x{300}", "U\x{340}"));
290 ok($objZhP->eq("u\x{308}\x{304}", "\x{1D6}"));
291 ok($objZhP->eq("u\x{308}\x{304}", pack('U*', 0xFC, 0x304)));
292 ok($objZhP->eq("U\x{308}\x{304}", "\x{1D5}"));
293 ok($objZhP->eq("U\x{308}\x{304}", pack('U*', 0xDC, 0x304)));
294 ok($objZhP->eq("u\x{308}\x{301}", "\x{1D8}"));
295 ok($objZhP->eq("u\x{308}\x{301}", pack('U*', 0xFC, 0x301)));
296 ok($objZhP->eq("u\x{308}\x{301}", "u\x{308}\x{341}"));
297 ok($objZhP->eq("U\x{308}\x{301}", "\x{1D7}"));
298 ok($objZhP->eq("U\x{308}\x{301}", pack('U*', 0xDC, 0x301)));
299 ok($objZhP->eq("U\x{308}\x{301}", "U\x{308}\x{341}"));
300 ok($objZhP->eq("u\x{308}\x{30C}", "\x{1DA}"));
301 ok($objZhP->eq("u\x{308}\x{30C}", pack('U*', 0xFC, 0x30C)));
302 ok($objZhP->eq("U\x{308}\x{30C}", "\x{1D9}"));
303 ok($objZhP->eq("U\x{308}\x{30C}", pack('U*', 0xDC, 0x30C)));
304 ok($objZhP->eq("u\x{308}\x{300}", "\x{1DC}"));
305 ok($objZhP->eq("u\x{308}\x{300}", pack('U*', 0xFC, 0x300)));
306 ok($objZhP->eq("u\x{308}\x{300}", "u\x{308}\x{340}"));
307 ok($objZhP->eq("U\x{308}\x{300}", "\x{1DB}"));
308 ok($objZhP->eq("U\x{308}\x{300}", pack('U*', 0xDC, 0x300)));
309 ok($objZhP->eq("U\x{308}\x{300}", "U\x{308}\x{340}"));
310 ok($objZhP->eq("u\x{308}", pack('U', 0xFC)));
311 ok($objZhP->eq("U\x{308}", pack('U', 0xDC)));
312
313 # 266
314
315 ok($objZhP->eq("e\x{302}\x{303}", "\x{1EC5}"));
316 ok($objZhP->eq("E\x{302}\x{303}", "\x{1EC4}"));
317 ok($objZhP->eq("e\x{302}\x{309}", "\x{1EC3}"));
318 ok($objZhP->eq("E\x{302}\x{309}", "\x{1EC2}"));
319 ok($objZhP->eq("e\x{302}\x{323}", "\x{1EC7}"));
320 ok($objZhP->eq("E\x{302}\x{323}", "\x{1EC6}"));
321
322 # 272
323
324 $objZhP->change(level => 1);
325
326 ok($objZhP->lt("\x{963F}", "\x{5730}"));
327 ok($objZhP->lt("\x{5730}", "\x{7ACB}"));
328 ok($objZhP->lt("\x{7ACB}", "\x{4EBA}"));
329 ok($objZhP->lt("\x{4EBA}", "\x{65E5}"));
330 ok($objZhP->lt("\x{65E5}", "\x{4E0A}"));
331 ok($objZhP->lt("\x{4E0A}", "\x{5929}"));
332 ok($objZhP->lt("\x{5929}", "\x{4E0B}"));
333 ok($objZhP->lt("\x{4E0B}", "\x{65BC}"));
334 ok($objZhP->lt("\x{65BC}", "\x{4E2D}"));
335 ok($objZhP->lt("\x{4E2D}", "\x{7AFA}"));
336 ok($objZhP->lt("\x{7AFA}", "\x{5750}"));
337
338 # 283