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 / iglevel2.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 => 42 };
16
17 use strict;
18 use warnings;
19 use Unicode::Collate;
20
21 ok(1);
22
23 #########################
24
25 my $Collator = Unicode::Collate->new(
26   table => 'keys.txt',
27   normalization => undef,
28   ignore_level2 => 1,
29   entry => << 'ENTRIES',
30 1B00  ; [.0000.00FF.0002.1B00] # BALINESE SIGN ULU RICEM
31 1B01  ; [.0000.0100.0002.1B01] # BALINESE SIGN ULU CANDRA
32 1B02  ; [.0000.0101.0002.1B02] # BALINESE SIGN CECEK
33 03C6  ; [.1900.0020.0002.03C6] # GREEK SMALL LETTER PHI
34 03D5  ; [.1900.0020.0004.03D5] # GREEK PHI SYMBOL; QQK
35 03A6  ; [.1900.0020.0008.03A6] # GREEK CAPITAL LETTER PHI
36 ENTRIES
37 );
38
39 ok($Collator->eq("camel", "came\x{300}l"));
40 ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
41 ok($Collator->lt("camel", "Camel"));
42
43 # 4
44
45 $Collator->change(ignore_level2 => 0);
46
47 ok($Collator->lt("camel", "came\x{300}l"));
48 ok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
49 ok($Collator->lt("camel", "Camel"));
50
51 $Collator->change(level => 1);
52
53 ok($Collator->eq("camel", "came\x{300}l"));
54 ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
55 ok($Collator->eq("camel", "Camel"));
56
57 $Collator->change(level => 2);
58
59 ok($Collator->lt("camel", "came\x{300}l"));
60 ok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
61 ok($Collator->eq("camel", "Camel"));
62
63 # 13
64
65 $Collator->change(ignore_level2 => 1);
66
67 ok($Collator->eq("camel", "came\x{300}l"));
68 ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
69 ok($Collator->eq("camel", "Camel"));
70
71 $Collator->change(level => 3);
72
73 ok($Collator->eq("camel", "came\x{300}l"));
74 ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
75 ok($Collator->lt("camel", "Camel"));
76
77 #  secondary: neither 00FF nor 0100 is zero
78 ok($Collator->eq("camel", "came\x{1B00}l"));
79 ok($Collator->eq("camel", "came\x{1B01}l"));
80 ok($Collator->eq("camel", "came\x{1B02}l"));
81
82 #  primary: 1900 isn't zero
83 ok($Collator->lt("\x{03C6}", "\x{03D5}"));
84 ok($Collator->lt("\x{03D5}", "\x{03A6}"));
85
86 # 24
87
88 {
89     my $s;
90     my $txt = "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.";
91
92     $Collator->change(ignore_level2 => 0, level => 1);
93
94     $s = $txt;
95     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
96     ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
97
98     $Collator->change(level => 2);
99
100     $s = $txt;
101     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
102     ok($s, "=Camel= donkey zebra came\x{301}l =CAMEL= horse =cAm\0E\0L=.");
103
104     $Collator->change(level => 3);
105
106     $s = $txt;
107     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
108     ok($s, "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.");
109
110     $Collator->change(ignore_level2 => 1);
111
112     $s = $txt;
113     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
114     ok($s, "Camel donkey zebra =came\x{301}l= CAMEL horse cAm\0E\0L.");
115
116     $Collator->change(level => 2);
117     $s = $txt;
118     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
119     ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
120
121     $Collator->change(level => 1);
122     $s = $txt;
123     $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
124     ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
125
126 }
127
128 # 30
129
130 {
131     my $c = Unicode::Collate->new(
132         table => 'keys.txt', normalization => undef, level => 1,
133     );
134     my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
135     $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
136     ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
137 }
138
139 {
140     my $c = Unicode::Collate->new(
141         table => 'keys.txt', normalization => undef, level => 2,
142     );
143     my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
144     $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
145     ok($str, "<b>Camel</b> donkey zebra came\x{301}l <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
146 }
147
148 {
149     my $c = Unicode::Collate->new(
150         table => 'keys.txt', normalization => undef, ignore_level2 => 1,
151     );
152     my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
153     $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
154     ok($str, "Camel donkey zebra <b>came\x{301}l</b> CAMEL horse <b>cam\0e\0l</b>...");
155 }
156
157 {
158     my $c = Unicode::Collate->new(
159         table => 'keys.txt', normalization => undef, level => 3,
160     );
161     my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
162     $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
163     ok($str, "Camel donkey zebra came\x{301}l CAMEL horse <b>cam\0e\0l</b>...");
164 }
165
166 # 34
167
168 {
169     my $str;
170     my $camel = "camel Camel came\x{301}l c-a-m-e-l cam\0e\0l";
171
172     $Collator->change(ignore_level2 => 0);
173
174     $Collator->change(level => 1);
175     $str = $camel;
176     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
177     ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
178
179     $Collator->change(level => 2);
180     $str = $camel;
181     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
182     ok($str, "=camel= =Camel= came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
183
184     $Collator->change(level => 3);
185     $str = $camel;
186     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
187     ok($str, "=camel= Camel came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
188
189     $Collator->change(level => 4);
190     $str = $camel;
191     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
192     ok($str, "=camel= Camel came\x{301}l c-a-m-e-l =cam\0e\0l=");
193
194     $Collator->change(ignore_level2 => 1);
195
196     $Collator->change(level => 1);
197     $str = $camel;
198     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
199     ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
200
201     $Collator->change(level => 2);
202     $str = $camel;
203     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
204     ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
205
206     $Collator->change(level => 3);
207     $str = $camel;
208     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
209     ok($str, "=camel= Camel =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
210
211     $Collator->change(level => 4);
212     $str = $camel;
213     $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
214     ok($str, "=camel= Camel =came\x{301}l= c-a-m-e-l =cam\0e\0l=");
215 }
216
217 # 42
218