xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/iglevel2.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1898184e3Ssthen
2898184e3SsthenBEGIN {
3898184e3Ssthen    if ($ENV{PERL_CORE}) {
4898184e3Ssthen	chdir('t') if -d 't';
5898184e3Ssthen	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6898184e3Ssthen    }
7898184e3Ssthen}
8898184e3Ssthen
9898184e3Ssthenuse strict;
10898184e3Ssthenuse warnings;
11898184e3SsthenBEGIN { $| = 1; print "1..42\n"; }
12898184e3Ssthenmy $count = 0;
13898184e3Ssthensub ok ($;$) {
14898184e3Ssthen    my $p = my $r = shift;
15898184e3Ssthen    if (@_) {
16898184e3Ssthen	my $x = shift;
17898184e3Ssthen	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
18898184e3Ssthen    }
19898184e3Ssthen    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
20898184e3Ssthen}
21898184e3Ssthen
22898184e3Ssthenuse Unicode::Collate;
23898184e3Ssthen
24898184e3Ssthenok(1);
25898184e3Ssthen
26*256a93a4Safresh1sub _pack_U   { Unicode::Collate::pack_U(@_) }
27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28*256a93a4Safresh1
29898184e3Ssthen#########################
30898184e3Ssthen
31898184e3Ssthenmy $Collator = Unicode::Collate->new(
32898184e3Ssthen  table => 'keys.txt',
33898184e3Ssthen  normalization => undef,
34898184e3Ssthen  ignore_level2 => 1,
35898184e3Ssthen  entry => << 'ENTRIES',
36898184e3Ssthen1B00  ; [.0000.00FF.0002.1B00] # BALINESE SIGN ULU RICEM
37898184e3Ssthen1B01  ; [.0000.0100.0002.1B01] # BALINESE SIGN ULU CANDRA
38898184e3Ssthen1B02  ; [.0000.0101.0002.1B02] # BALINESE SIGN CECEK
39898184e3Ssthen03C6  ; [.1900.0020.0002.03C6] # GREEK SMALL LETTER PHI
40898184e3Ssthen03D5  ; [.1900.0020.0004.03D5] # GREEK PHI SYMBOL; QQK
41898184e3Ssthen03A6  ; [.1900.0020.0008.03A6] # GREEK CAPITAL LETTER PHI
42898184e3SsthenENTRIES
43898184e3Ssthen);
44898184e3Ssthen
45898184e3Ssthenok($Collator->eq("camel", "came\x{300}l"));
46898184e3Ssthenok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
47898184e3Ssthenok($Collator->lt("camel", "Camel"));
48898184e3Ssthen
49898184e3Ssthen# 4
50898184e3Ssthen
51898184e3Ssthen$Collator->change(ignore_level2 => 0);
52898184e3Ssthen
53898184e3Ssthenok($Collator->lt("camel", "came\x{300}l"));
54898184e3Ssthenok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
55898184e3Ssthenok($Collator->lt("camel", "Camel"));
56898184e3Ssthen
57898184e3Ssthen$Collator->change(level => 1);
58898184e3Ssthen
59898184e3Ssthenok($Collator->eq("camel", "came\x{300}l"));
60898184e3Ssthenok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
61898184e3Ssthenok($Collator->eq("camel", "Camel"));
62898184e3Ssthen
63898184e3Ssthen$Collator->change(level => 2);
64898184e3Ssthen
65898184e3Ssthenok($Collator->lt("camel", "came\x{300}l"));
66898184e3Ssthenok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
67898184e3Ssthenok($Collator->eq("camel", "Camel"));
68898184e3Ssthen
69898184e3Ssthen# 13
70898184e3Ssthen
71898184e3Ssthen$Collator->change(ignore_level2 => 1);
72898184e3Ssthen
73898184e3Ssthenok($Collator->eq("camel", "came\x{300}l"));
74898184e3Ssthenok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
75898184e3Ssthenok($Collator->eq("camel", "Camel"));
76898184e3Ssthen
77898184e3Ssthen$Collator->change(level => 3);
78898184e3Ssthen
79898184e3Ssthenok($Collator->eq("camel", "came\x{300}l"));
80898184e3Ssthenok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
81898184e3Ssthenok($Collator->lt("camel", "Camel"));
82898184e3Ssthen
83898184e3Ssthen#  secondary: neither 00FF nor 0100 is zero
84898184e3Ssthenok($Collator->eq("camel", "came\x{1B00}l"));
85898184e3Ssthenok($Collator->eq("camel", "came\x{1B01}l"));
86898184e3Ssthenok($Collator->eq("camel", "came\x{1B02}l"));
87898184e3Ssthen
88898184e3Ssthen#  primary: 1900 isn't zero
89898184e3Ssthenok($Collator->lt("\x{3C6}", "\x{3D5}"));
90898184e3Ssthenok($Collator->lt("\x{3D5}", "\x{3A6}"));
91898184e3Ssthen
92898184e3Ssthen# 24
93898184e3Ssthen
94898184e3Ssthen{
95898184e3Ssthen    my $s;
96898184e3Ssthen    my $txt = "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.";
97898184e3Ssthen
98898184e3Ssthen    $Collator->change(ignore_level2 => 0, level => 1);
99898184e3Ssthen
100898184e3Ssthen    $s = $txt;
101898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
102898184e3Ssthen    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
103898184e3Ssthen
104898184e3Ssthen    $Collator->change(level => 2);
105898184e3Ssthen
106898184e3Ssthen    $s = $txt;
107898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
108898184e3Ssthen    ok($s, "=Camel= donkey zebra came\x{301}l =CAMEL= horse =cAm\0E\0L=.");
109898184e3Ssthen
110898184e3Ssthen    $Collator->change(level => 3);
111898184e3Ssthen
112898184e3Ssthen    $s = $txt;
113898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
114898184e3Ssthen    ok($s, "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.");
115898184e3Ssthen
116898184e3Ssthen    $Collator->change(ignore_level2 => 1);
117898184e3Ssthen
118898184e3Ssthen    $s = $txt;
119898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
120898184e3Ssthen    ok($s, "Camel donkey zebra =came\x{301}l= CAMEL horse cAm\0E\0L.");
121898184e3Ssthen
122898184e3Ssthen    $Collator->change(level => 2);
123898184e3Ssthen    $s = $txt;
124898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
125898184e3Ssthen    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
126898184e3Ssthen
127898184e3Ssthen    $Collator->change(level => 1);
128898184e3Ssthen    $s = $txt;
129898184e3Ssthen    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
130898184e3Ssthen    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
131898184e3Ssthen
132898184e3Ssthen}
133898184e3Ssthen
134898184e3Ssthen# 30
135898184e3Ssthen
136898184e3Ssthen{
137898184e3Ssthen    my $c = Unicode::Collate->new(
138898184e3Ssthen        table => 'keys.txt', normalization => undef, level => 1,
139898184e3Ssthen    );
140898184e3Ssthen    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
141898184e3Ssthen    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
142898184e3Ssthen    ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
143898184e3Ssthen}
144898184e3Ssthen
145898184e3Ssthen{
146898184e3Ssthen    my $c = Unicode::Collate->new(
147898184e3Ssthen        table => 'keys.txt', normalization => undef, level => 2,
148898184e3Ssthen    );
149898184e3Ssthen    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
150898184e3Ssthen    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
151898184e3Ssthen    ok($str, "<b>Camel</b> donkey zebra came\x{301}l <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
152898184e3Ssthen}
153898184e3Ssthen
154898184e3Ssthen{
155898184e3Ssthen    my $c = Unicode::Collate->new(
156898184e3Ssthen        table => 'keys.txt', normalization => undef, ignore_level2 => 1,
157898184e3Ssthen    );
158898184e3Ssthen    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
159898184e3Ssthen    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
160898184e3Ssthen    ok($str, "Camel donkey zebra <b>came\x{301}l</b> CAMEL horse <b>cam\0e\0l</b>...");
161898184e3Ssthen}
162898184e3Ssthen
163898184e3Ssthen{
164898184e3Ssthen    my $c = Unicode::Collate->new(
165898184e3Ssthen        table => 'keys.txt', normalization => undef, level => 3,
166898184e3Ssthen    );
167898184e3Ssthen    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
168898184e3Ssthen    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
169898184e3Ssthen    ok($str, "Camel donkey zebra came\x{301}l CAMEL horse <b>cam\0e\0l</b>...");
170898184e3Ssthen}
171898184e3Ssthen
172898184e3Ssthen# 34
173898184e3Ssthen
174898184e3Ssthen{
175898184e3Ssthen    my $str;
176898184e3Ssthen    my $camel = "camel Camel came\x{301}l c-a-m-e-l cam\0e\0l";
177898184e3Ssthen
178898184e3Ssthen    $Collator->change(ignore_level2 => 0);
179898184e3Ssthen
180898184e3Ssthen    $Collator->change(level => 1);
181898184e3Ssthen    $str = $camel;
182898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
183898184e3Ssthen    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
184898184e3Ssthen
185898184e3Ssthen    $Collator->change(level => 2);
186898184e3Ssthen    $str = $camel;
187898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
188898184e3Ssthen    ok($str, "=camel= =Camel= came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
189898184e3Ssthen
190898184e3Ssthen    $Collator->change(level => 3);
191898184e3Ssthen    $str = $camel;
192898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
193898184e3Ssthen    ok($str, "=camel= Camel came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
194898184e3Ssthen
195898184e3Ssthen    $Collator->change(level => 4);
196898184e3Ssthen    $str = $camel;
197898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
198898184e3Ssthen    ok($str, "=camel= Camel came\x{301}l c-a-m-e-l =cam\0e\0l=");
199898184e3Ssthen
200898184e3Ssthen    $Collator->change(ignore_level2 => 1);
201898184e3Ssthen
202898184e3Ssthen    $Collator->change(level => 1);
203898184e3Ssthen    $str = $camel;
204898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
205898184e3Ssthen    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
206898184e3Ssthen
207898184e3Ssthen    $Collator->change(level => 2);
208898184e3Ssthen    $str = $camel;
209898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
210898184e3Ssthen    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
211898184e3Ssthen
212898184e3Ssthen    $Collator->change(level => 3);
213898184e3Ssthen    $str = $camel;
214898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
215898184e3Ssthen    ok($str, "=camel= Camel =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
216898184e3Ssthen
217898184e3Ssthen    $Collator->change(level => 4);
218898184e3Ssthen    $str = $camel;
219898184e3Ssthen    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
220898184e3Ssthen    ok($str, "=camel= Camel =came\x{301}l= c-a-m-e-l =cam\0e\0l=");
221898184e3Ssthen}
222898184e3Ssthen
223898184e3Ssthen# 42
224898184e3Ssthen
225