/Compress/ modules are at version 2.021. Remove vestigal MAPs and comments.
[p5sagit/p5-mst-13.2.git] / ext / Unicode-Collate / t / normal.t
CommitLineData
91ae00cb 1BEGIN {
2 unless ("A" eq pack('U', 0x41)) {
3 print "1..0 # Unicode::Collate " .
4 "cannot stringify a Unicode code point\n";
5 exit 0;
6 }
91ae00cb 7 if ($ENV{PERL_CORE}) {
3756e7ca 8 chdir('t') if -d 't';
9 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
91ae00cb 10 }
11}
12
13BEGIN {
14 eval { require Unicode::Normalize; };
15 if ($@) {
16 print "1..0 # skipped: Unicode::Normalize needed for this test\n";
17 print $@;
18 exit;
19 }
20}
21use Test;
22BEGIN { plan tests => 100 };
23
24use strict;
25use warnings;
26use Unicode::Collate;
27
28our $Aring = pack('U', 0xC5);
29our $aring = pack('U', 0xE5);
30
31our $entry = <<'ENTRIES';
32030A; [.0000.030A.0002] # COMBINING RING ABOVE
33212B; [.002B.0020.0008] # ANGSTROM SIGN
340061; [.0A41.0020.0002] # LATIN SMALL LETTER A
350041; [.0A41.0020.0008] # LATIN CAPITAL LETTER A
36007A; [.0A5A.0020.0002] # LATIN SMALL LETTER Z
37005A; [.0A5A.0020.0008] # LATIN CAPITAL LETTER Z
38FF41; [.0A87.0020.0002] # LATIN SMALL LETTER A
39FF21; [.0A87.0020.0008] # LATIN CAPITAL LETTER A
4000E5; [.0AC5.0020.0002] # LATIN SMALL LETTER A WITH RING ABOVE
4100C5; [.0AC5.0020.0008] # LATIN CAPITAL LETTER A WITH RING ABOVE
42ENTRIES
43
3756e7ca 44# Aong < A+ring < Z < fullA+ring < A-ring
91ae00cb 45
46#########################
47
48our $noN = Unicode::Collate->new(
49 level => 1,
50 table => undef,
51 normalization => undef,
52 entry => $entry,
53);
54
55our $nfc = Unicode::Collate->new(
56 level => 1,
57 table => undef,
58 normalization => 'NFC',
59 entry => $entry,
60);
61
62our $nfd = Unicode::Collate->new(
63 level => 1,
64 table => undef,
65 normalization => 'NFD',
66 entry => $entry,
67);
68
69our $nfkc = Unicode::Collate->new(
70 level => 1,
71 table => undef,
72 normalization => 'NFKC',
73 entry => $entry,
74);
75
76our $nfkd = Unicode::Collate->new(
77 level => 1,
78 table => undef,
79 normalization => 'NFKD',
80 entry => $entry,
81);
82
83ok($noN->lt("\x{212B}", "A"));
84ok($noN->lt("\x{212B}", $Aring));
85ok($noN->lt("A\x{30A}", $Aring));
86ok($noN->lt("A", "\x{FF21}"));
87ok($noN->lt("Z", "\x{FF21}"));
88ok($noN->lt("Z", $Aring));
89ok($noN->lt("\x{212B}", $aring));
90ok($noN->lt("A\x{30A}", $aring));
91ok($noN->lt("Z", $aring));
92ok($noN->lt("a\x{30A}", "Z"));
93
94ok($nfd->eq("\x{212B}", "A"));
95ok($nfd->eq("\x{212B}", $Aring));
96ok($nfd->eq("A\x{30A}", $Aring));
97ok($nfd->lt("A", "\x{FF21}"));
98ok($nfd->lt("Z", "\x{FF21}"));
99ok($nfd->gt("Z", $Aring));
100ok($nfd->eq("\x{212B}", $aring));
101ok($nfd->eq("A\x{30A}", $aring));
102ok($nfd->gt("Z", $aring));
103ok($nfd->lt("a\x{30A}", "Z"));
104
105ok($nfc->gt("\x{212B}", "A"));
106ok($nfc->eq("\x{212B}", $Aring));
107ok($nfc->eq("A\x{30A}", $Aring));
108ok($nfc->lt("A", "\x{FF21}"));
109ok($nfc->lt("Z", "\x{FF21}"));
110ok($nfc->lt("Z", $Aring));
111ok($nfc->eq("\x{212B}", $aring));
112ok($nfc->eq("A\x{30A}", $aring));
113ok($nfc->lt("Z", $aring));
114ok($nfc->gt("a\x{30A}", "Z"));
115
116ok($nfkd->eq("\x{212B}", "A"));
117ok($nfkd->eq("\x{212B}", $Aring));
118ok($nfkd->eq("A\x{30A}", $Aring));
119ok($nfkd->eq("A", "\x{FF21}"));
120ok($nfkd->gt("Z", "\x{FF21}"));
121ok($nfkd->gt("Z", $Aring));
122ok($nfkd->eq("\x{212B}", $aring));
123ok($nfkd->eq("A\x{30A}", $aring));
124ok($nfkd->gt("Z", $aring));
125ok($nfkd->lt("a\x{30A}", "Z"));
126
127ok($nfkc->gt("\x{212B}", "A"));
128ok($nfkc->eq("\x{212B}", $Aring));
129ok($nfkc->eq("A\x{30A}", $Aring));
130ok($nfkc->eq("A", "\x{FF21}"));
131ok($nfkc->gt("Z", "\x{FF21}"));
132ok($nfkc->lt("Z", $Aring));
133ok($nfkc->eq("\x{212B}", $aring));
134ok($nfkc->eq("A\x{30A}", $aring));
135ok($nfkc->lt("Z", $aring));
136ok($nfkc->gt("a\x{30A}", "Z"));
137
138$nfd->change(normalization => undef);
139
140ok($nfd->lt("\x{212B}", "A"));
141ok($nfd->lt("\x{212B}", $Aring));
142ok($nfd->lt("A\x{30A}", $Aring));
143ok($nfd->lt("A", "\x{FF21}"));
144ok($nfd->lt("Z", "\x{FF21}"));
145ok($nfd->lt("Z", $Aring));
146ok($nfd->lt("\x{212B}", $aring));
147ok($nfd->lt("A\x{30A}", $aring));
148ok($nfd->lt("Z", $aring));
149ok($nfd->lt("a\x{30A}", "Z"));
150
151$nfd->change(normalization => 'C');
152
153ok($nfd->gt("\x{212B}", "A"));
154ok($nfd->eq("\x{212B}", $Aring));
155ok($nfd->eq("A\x{30A}", $Aring));
156ok($nfd->lt("A", "\x{FF21}"));
157ok($nfd->lt("Z", "\x{FF21}"));
158ok($nfd->lt("Z", $Aring));
159ok($nfd->eq("\x{212B}", $aring));
160ok($nfd->eq("A\x{30A}", $aring));
161ok($nfd->lt("Z", $aring));
162ok($nfd->gt("a\x{30A}", "Z"));
163
164$nfd->change(normalization => 'D');
165
166ok($nfd->eq("\x{212B}", "A"));
167ok($nfd->eq("\x{212B}", $Aring));
168ok($nfd->eq("A\x{30A}", $Aring));
169ok($nfd->lt("A", "\x{FF21}"));
170ok($nfd->lt("Z", "\x{FF21}"));
171ok($nfd->gt("Z", $Aring));
172ok($nfd->eq("\x{212B}", $aring));
173ok($nfd->eq("A\x{30A}", $aring));
174ok($nfd->gt("Z", $aring));
175ok($nfd->lt("a\x{30A}", "Z"));
176
177$nfd->change(normalization => 'KD');
178
179ok($nfd->eq("\x{212B}", "A"));
180ok($nfd->eq("\x{212B}", $Aring));
181ok($nfd->eq("A\x{30A}", $Aring));
182ok($nfd->eq("A", "\x{FF21}"));
183ok($nfd->gt("Z", "\x{FF21}"));
184ok($nfd->gt("Z", $Aring));
185ok($nfd->eq("\x{212B}", $aring));
186ok($nfd->eq("A\x{30A}", $aring));
187ok($nfd->gt("Z", $aring));
188ok($nfd->lt("a\x{30A}", "Z"));
189
190$nfd->change(normalization => 'KC');
191
192ok($nfd->gt("\x{212B}", "A"));
193ok($nfd->eq("\x{212B}", $Aring));
194ok($nfd->eq("A\x{30A}", $Aring));
195ok($nfd->eq("A", "\x{FF21}"));
196ok($nfd->gt("Z", "\x{FF21}"));
197ok($nfd->lt("Z", $Aring));
198ok($nfd->eq("\x{212B}", $aring));
199ok($nfd->eq("A\x{30A}", $aring));
200ok($nfd->lt("Z", $aring));
201ok($nfd->gt("a\x{30A}", "Z"));
202