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