Commit | Line | Data |
---|---|---|
68adb2b0 CBW |
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 => 217 }; | |
16 | ||
6709de88 CBW |
17 | use strict; |
18 | use warnings; | |
19 | use Unicode::Collate::Locale; | |
20 | ||
68adb2b0 CBW |
21 | ok(1); |
22 | ||
23 | ######################### | |
6709de88 CBW |
24 | |
25 | my $objSe = Unicode::Collate::Locale-> | |
26 | new(locale => 'SE', normalization => undef); | |
27 | ||
28 | my $eth = pack 'U', 0xF0; | |
29 | my $ETH = pack 'U', 0xD0; | |
30 | my $thrn = pack 'U', 0xFE; | |
31 | my $THRN = pack 'U', 0xDE; | |
32 | my $ae = pack 'U', 0xE6; | |
33 | my $AE = pack 'U', 0xC6; | |
34 | ||
6709de88 CBW |
35 | ok($objSe->getlocale, 'se'); |
36 | ||
37 | $objSe->change(level => 1); | |
38 | ||
39 | ok($objSe->lt("a", "a\x{301}")); | |
40 | ok($objSe->gt("b", "a\x{301}")); | |
41 | ok($objSe->lt("c", "c\x{30C}")); | |
42 | ok($objSe->lt("c\x{30C}", "\x{292}")); | |
43 | ok($objSe->lt( "\x{292}", "\x{1EF}")); | |
44 | ok($objSe->gt("d", "\x{1EF}")); | |
45 | ok($objSe->lt("d", "d\x{335}")); | |
46 | ok($objSe->gt("e", "d\x{335}")); | |
47 | ok($objSe->lt("g", "g\x{30C}")); | |
48 | ok($objSe->lt("g\x{30C}", "\x{1E5}")); | |
49 | ok($objSe->gt("h", "\x{1E5}")); | |
50 | ok($objSe->lt("k", "k\x{30C}")); | |
51 | ok($objSe->gt("l", "k\x{30C}")); | |
52 | ok($objSe->lt("n", "\x{14B}")); | |
53 | ok($objSe->gt("o", "\x{14B}")); | |
54 | ok($objSe->lt("s", "s\x{30C}")); | |
55 | ok($objSe->gt("t", "s\x{30C}")); | |
56 | ok($objSe->lt("t", "\x{167}")); | |
57 | ok($objSe->gt("u", "\x{167}")); | |
58 | ok($objSe->lt("z", "z\x{30C}")); | |
59 | ok($objSe->lt("z\x{30C}", "o\x{338}")); | |
60 | ok($objSe->lt("o\x{338}", $ae)); | |
61 | ok($objSe->lt($ae, "a\x{30A}")); | |
62 | ok($objSe->lt("a\x{30A}", "a\x{308}")); | |
63 | ok($objSe->lt("a\x{308}", "o\x{308}")); | |
64 | ok($objSe->lt("o\x{308}", "\x{1C0}")); | |
65 | ||
66 | # 28 | |
67 | ||
68 | ok($objSe->eq("d\x{335}", $eth)); | |
69 | ok($objSe->eq( "\x{14B}", "n\x{301}")); | |
70 | ok($objSe->eq("n\x{301}", "n\x{303}")); | |
71 | ok($objSe->eq( "\x{167}", $thrn)); | |
72 | ok($objSe->eq("y", "u\x{308}")); | |
73 | ok($objSe->eq("u\x{308}", "u\x{30B}")); | |
74 | ok($objSe->eq("o\x{338}", "\x{153}")); | |
75 | ok($objSe->eq("a\x{30A}", "a\x{307}")); | |
76 | ok($objSe->eq("a\x{308}", "a\x{303}")); | |
77 | ok($objSe->eq("o\x{308}", "o\x{30B}")); | |
78 | ok($objSe->eq("o\x{30B}", "o\x{303}")); | |
79 | ok($objSe->eq("o\x{303}", "o\x{302}")); | |
80 | ok($objSe->eq("o\x{302}", "o\x{328}")); | |
81 | ||
82 | # 41 | |
83 | ||
84 | $objSe->change(level => 2); | |
85 | ||
86 | ok($objSe->lt("d\x{335}", $eth)); | |
87 | ok($objSe->lt( "\x{14B}", "n\x{301}")); | |
88 | ok($objSe->lt("n\x{301}", "n\x{303}")); | |
89 | ok($objSe->lt( "\x{167}", $thrn)); | |
90 | ok($objSe->lt("y", "u\x{308}")); | |
91 | ok($objSe->lt("u\x{308}", "u\x{30B}")); | |
92 | ok($objSe->lt("o\x{338}", "\x{153}")); | |
93 | ok($objSe->lt("a\x{30A}", "a\x{307}")); | |
94 | ok($objSe->lt("a\x{308}", "a\x{303}")); | |
95 | ok($objSe->lt("o\x{308}", "o\x{30B}")); | |
96 | ok($objSe->lt("o\x{30B}", "o\x{303}")); | |
97 | ok($objSe->lt("o\x{303}", "o\x{302}")); | |
98 | ok($objSe->lt("o\x{302}", "o\x{328}")); | |
99 | ||
100 | # 54 | |
101 | ||
102 | ok($objSe->eq("a\x{301}", "A\x{301}")); | |
103 | ok($objSe->eq("c\x{30C}", "C\x{30C}")); | |
104 | ok($objSe->eq( "\x{292}", "\x{1B7}")); | |
105 | ok($objSe->eq( "\x{1EF}", "\x{1EE}")); | |
106 | ok($objSe->eq("d\x{335}", "D\x{335}")); | |
107 | ok($objSe->eq($eth, $ETH)); | |
108 | ok($objSe->eq("g\x{30C}", "G\x{30C}")); | |
109 | ok($objSe->eq( "\x{1E5}", "\x{1E4}")); | |
110 | ok($objSe->eq("k\x{30C}", "K\x{30C}")); | |
111 | ok($objSe->eq( "\x{14B}", "\x{14A}")); | |
112 | ok($objSe->eq("n\x{301}", "N\x{301}")); | |
113 | ok($objSe->eq("n\x{303}", "N\x{303}")); | |
114 | ok($objSe->eq("s\x{30C}", "S\x{30C}")); | |
115 | ok($objSe->eq( "\x{167}", "\x{166}")); | |
116 | ok($objSe->eq($thrn, $THRN)); | |
117 | ok($objSe->eq("u\x{308}", "U\x{308}")); | |
118 | ok($objSe->eq("u\x{30B}", "U\x{30B}")); | |
119 | ok($objSe->eq("z\x{30C}", "Z\x{30C}")); | |
120 | ok($objSe->eq("o\x{338}", "O\x{338}")); | |
121 | ok($objSe->eq( "\x{153}", "\x{152}")); | |
122 | ok($objSe->eq($ae, $AE)); | |
123 | ok($objSe->eq($AE, "\x{1D2D}")); | |
124 | ok($objSe->eq("a\x{30A}", "A\x{30A}")); | |
125 | ok($objSe->eq("a\x{307}", "A\x{307}")); | |
126 | ok($objSe->eq("a\x{308}", "A\x{308}")); | |
127 | ok($objSe->eq("a\x{303}", "A\x{303}")); | |
128 | ok($objSe->eq("o\x{308}", "O\x{308}")); | |
129 | ok($objSe->eq("o\x{30B}", "O\x{30B}")); | |
130 | ok($objSe->eq("o\x{303}", "O\x{303}")); | |
131 | ok($objSe->eq("o\x{302}", "O\x{302}")); | |
132 | ok($objSe->eq("o\x{328}", "O\x{328}")); | |
133 | ||
134 | # 85 | |
135 | ||
136 | $objSe->change(level => 3); | |
137 | ||
138 | ok($objSe->lt("a\x{301}", "A\x{301}")); | |
139 | ok($objSe->lt("c\x{30C}", "C\x{30C}")); | |
140 | ok($objSe->lt( "\x{292}", "\x{1B7}")); | |
141 | ok($objSe->lt( "\x{1EF}", "\x{1EE}")); | |
142 | ok($objSe->lt("d\x{335}", "D\x{335}")); | |
143 | ok($objSe->lt($eth, $ETH)); | |
144 | ok($objSe->lt("g\x{30C}", "G\x{30C}")); | |
145 | ok($objSe->lt( "\x{1E5}", "\x{1E4}")); | |
146 | ok($objSe->lt("k\x{30C}", "K\x{30C}")); | |
147 | ok($objSe->lt( "\x{14B}", "\x{14A}")); | |
148 | ok($objSe->lt("n\x{301}", "N\x{301}")); | |
149 | ok($objSe->lt("n\x{303}", "N\x{303}")); | |
150 | ok($objSe->lt("s\x{30C}", "S\x{30C}")); | |
151 | ok($objSe->lt( "\x{167}", "\x{166}")); | |
152 | ok($objSe->lt($thrn, $THRN)); | |
153 | ok($objSe->lt("u\x{308}", "U\x{308}")); | |
154 | ok($objSe->lt("u\x{30B}", "U\x{30B}")); | |
155 | ok($objSe->lt("z\x{30C}", "Z\x{30C}")); | |
156 | ok($objSe->lt("o\x{338}", "O\x{338}")); | |
157 | ok($objSe->lt( "\x{153}", "\x{152}")); | |
158 | ok($objSe->lt($ae, $AE)); | |
159 | ok($objSe->lt($AE, "\x{1D2D}")); | |
160 | ok($objSe->lt("a\x{30A}", "A\x{30A}")); | |
161 | ok($objSe->lt("a\x{307}", "A\x{307}")); | |
162 | ok($objSe->lt("a\x{308}", "A\x{308}")); | |
163 | ok($objSe->lt("a\x{303}", "A\x{303}")); | |
164 | ok($objSe->lt("o\x{308}", "O\x{308}")); | |
165 | ok($objSe->lt("o\x{30B}", "O\x{30B}")); | |
166 | ok($objSe->lt("o\x{303}", "O\x{303}")); | |
167 | ok($objSe->lt("o\x{302}", "O\x{302}")); | |
168 | ok($objSe->lt("o\x{328}", "O\x{328}")); | |
169 | ||
170 | # 116 | |
171 | ||
172 | ok($objSe->eq("a\x{301}", pack('U', 0xE1))); | |
aa7758f7 | 173 | ok($objSe->eq("a\x{341}", pack('U', 0xE1))); |
6709de88 | 174 | ok($objSe->eq("A\x{301}", pack('U', 0xC1))); |
aa7758f7 | 175 | ok($objSe->eq("A\x{341}", pack('U', 0xC1))); |
6709de88 CBW |
176 | ok($objSe->eq("c\x{30C}", "\x{10D}")); |
177 | ok($objSe->eq("C\x{30C}", "\x{10C}")); | |
178 | ok($objSe->eq("\x{1EF}", "\x{292}\x{30C}")); | |
179 | ok($objSe->eq("\x{1EE}", "\x{1B7}\x{30C}")); | |
180 | ok($objSe->eq("d\x{335}", "\x{111}")); | |
181 | ok($objSe->eq("D\x{335}", "\x{110}")); | |
182 | ok($objSe->eq("g\x{30C}", "\x{1E7}")); | |
183 | ok($objSe->eq("G\x{30C}", "\x{1E6}")); | |
184 | ok($objSe->eq("k\x{30C}", "\x{1E9}")); | |
185 | ok($objSe->eq("K\x{30C}", "\x{1E8}")); | |
186 | ok($objSe->eq("n\x{301}", "\x{144}")); | |
aa7758f7 | 187 | ok($objSe->eq("n\x{341}", "\x{144}")); |
6709de88 | 188 | ok($objSe->eq("N\x{301}", "\x{143}")); |
aa7758f7 | 189 | ok($objSe->eq("N\x{341}", "\x{143}")); |
6709de88 CBW |
190 | ok($objSe->eq("n\x{303}", pack('U', 0xF1))); |
191 | ok($objSe->eq("N\x{303}", pack('U', 0xD1))); | |
192 | ok($objSe->eq("s\x{30C}", "\x{161}")); | |
193 | ok($objSe->eq("S\x{30C}", "\x{160}")); | |
194 | ok($objSe->eq("u\x{308}", pack('U', 0xFC))); | |
195 | ok($objSe->eq("U\x{308}", pack('U', 0xDC))); | |
196 | ok($objSe->eq("u\x{30B}", "\x{171}")); | |
197 | ok($objSe->eq("U\x{30B}", "\x{170}")); | |
198 | ||
aa7758f7 | 199 | # 142 |
6709de88 CBW |
200 | |
201 | ok($objSe->eq("z\x{30C}", "\x{17E}")); | |
202 | ok($objSe->eq("Z\x{30C}", "\x{17D}")); | |
203 | ok($objSe->eq("o\x{338}", pack('U', 0xF8))); | |
204 | ok($objSe->eq("O\x{338}", pack('U', 0xD8))); | |
205 | ok($objSe->eq("a\x{30A}", pack('U', 0xE5))); | |
206 | ok($objSe->eq("A\x{30A}", pack('U', 0xC5))); | |
207 | ok($objSe->eq("a\x{307}", "\x{227}")); | |
208 | ok($objSe->eq("A\x{307}", "\x{226}")); | |
209 | ok($objSe->eq("a\x{308}", pack('U', 0xE4))); | |
210 | ok($objSe->eq("A\x{308}", pack('U', 0xC4))); | |
211 | ok($objSe->eq("a\x{303}", pack('U', 0xE3))); | |
212 | ok($objSe->eq("A\x{303}", pack('U', 0xC3))); | |
213 | ok($objSe->eq("o\x{308}", pack('U', 0xF6))); | |
214 | ok($objSe->eq("O\x{308}", pack('U', 0xD6))); | |
215 | ok($objSe->eq("o\x{30B}", "\x{151}")); | |
216 | ok($objSe->eq("O\x{30B}", "\x{150}")); | |
217 | ok($objSe->eq("o\x{303}", pack('U', 0xF5))); | |
218 | ok($objSe->eq("O\x{303}", pack('U', 0xD5))); | |
219 | ok($objSe->eq("o\x{302}", pack('U', 0xF4))); | |
220 | ok($objSe->eq("O\x{302}", pack('U', 0xD4))); | |
221 | ok($objSe->eq("o\x{328}", "\x{1EB}")); | |
222 | ok($objSe->eq("O\x{328}", "\x{1EA}")); | |
223 | ||
aa7758f7 | 224 | # 164 |
6709de88 CBW |
225 | |
226 | ok($objSe->eq("u\x{308}\x{300}", "\x{1DC}")); | |
227 | ok($objSe->eq("U\x{308}\x{300}", "\x{1DB}")); | |
228 | ok($objSe->eq("u\x{308}\x{301}", "\x{1D8}")); | |
229 | ok($objSe->eq("U\x{308}\x{301}", "\x{1D7}")); | |
230 | ok($objSe->eq("u\x{308}\x{304}", "\x{1D6}")); | |
231 | ok($objSe->eq("U\x{308}\x{304}", "\x{1D5}")); | |
232 | ok($objSe->eq("u\x{308}\x{30C}", "\x{1DA}")); | |
233 | ok($objSe->eq("U\x{308}\x{30C}", "\x{1D9}")); | |
234 | ok($objSe->eq("o\x{338}\x{301}", "\x{1FF}")); | |
235 | ok($objSe->eq("O\x{338}\x{301}", "\x{1FE}")); | |
236 | ||
237 | ok($objSe->eq("\x{1FD}", "$ae\x{301}")); | |
238 | ok($objSe->eq("\x{1FC}", "$AE\x{301}")); | |
239 | ok($objSe->eq("\x{1E3}", "$ae\x{304}")); | |
240 | ok($objSe->eq("\x{1E2}", "$AE\x{304}")); | |
241 | ok($objSe->eq("A\x{30A}", "\x{212B}")); | |
242 | ok($objSe->eq("a\x{30A}\x{301}", "\x{1FB}")); | |
243 | ok($objSe->eq("A\x{30A}\x{301}", "\x{1FA}")); | |
244 | ok($objSe->eq("a\x{308}\x{304}", "\x{1DF}")); | |
245 | ok($objSe->eq("A\x{308}\x{304}", "\x{1DE}")); | |
246 | ||
247 | ok($objSe->eq("o\x{308}\x{304}", "\x{22B}")); | |
248 | ok($objSe->eq("O\x{308}\x{304}", "\x{22A}")); | |
249 | ok($objSe->eq("o\x{303}\x{301}","\x{1E4D}")); | |
250 | ok($objSe->eq("O\x{303}\x{301}","\x{1E4C}")); | |
251 | ok($objSe->eq("o\x{303}\x{304}", "\x{22D}")); | |
252 | ok($objSe->eq("O\x{303}\x{304}", "\x{22C}")); | |
253 | ok($objSe->eq("o\x{303}\x{308}","\x{1E4F}")); | |
254 | ok($objSe->eq("O\x{303}\x{308}","\x{1E4E}")); | |
255 | ok($objSe->eq("o\x{303}\x{31B}","\x{1EE1}")); | |
256 | ok($objSe->eq("O\x{303}\x{31B}","\x{1EE0}")); | |
257 | ||
258 | ok($objSe->eq("o\x{302}\x{300}", "\x{1ED3}")); | |
259 | ok($objSe->eq("O\x{302}\x{300}", "\x{1ED2}")); | |
260 | ok($objSe->eq("o\x{302}\x{301}", "\x{1ED1}")); | |
261 | ok($objSe->eq("O\x{302}\x{301}", "\x{1ED0}")); | |
262 | ok($objSe->eq("o\x{302}\x{303}", "\x{1ED7}")); | |
263 | ok($objSe->eq("O\x{302}\x{303}", "\x{1ED6}")); | |
264 | ok($objSe->eq("o\x{302}\x{309}", "\x{1ED5}")); | |
265 | ok($objSe->eq("O\x{302}\x{309}", "\x{1ED4}")); | |
266 | ok($objSe->eq("o\x{302}\x{323}", "\x{1ED9}")); | |
267 | ok($objSe->eq("O\x{302}\x{323}", "\x{1ED8}")); | |
268 | ||
aa7758f7 | 269 | # 203 |
6709de88 CBW |
270 | |
271 | $objSe->change(upper_before_lower => 1); | |
272 | ||
273 | ok($objSe->gt("z\x{30C}", "Z\x{30C}")); | |
274 | ok($objSe->gt("o\x{338}", "O\x{338}")); | |
275 | ok($objSe->gt( "\x{153}", "\x{152}")); | |
276 | ok($objSe->gt($ae, $AE)); | |
277 | ok($objSe->lt($AE, "\x{1D2D}")); | |
278 | ok($objSe->gt("a\x{30A}", "A\x{30A}")); | |
279 | ok($objSe->gt("a\x{307}", "A\x{307}")); | |
280 | ok($objSe->gt("a\x{308}", "A\x{308}")); | |
281 | ok($objSe->gt("a\x{303}", "A\x{303}")); | |
282 | ok($objSe->gt("o\x{308}", "O\x{308}")); | |
283 | ok($objSe->gt("o\x{30B}", "O\x{30B}")); | |
284 | ok($objSe->gt("o\x{303}", "O\x{303}")); | |
285 | ok($objSe->gt("o\x{302}", "O\x{302}")); | |
286 | ok($objSe->gt("o\x{328}", "O\x{328}")); | |
287 | ||
aa7758f7 | 288 | # 217 |