xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/altern.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1b39c5158Smillert
2b39c5158SmillertBEGIN {
3b39c5158Smillert    if ($ENV{PERL_CORE}) {
4b39c5158Smillert	chdir('t') if -d 't';
5b39c5158Smillert	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6b39c5158Smillert    }
7b39c5158Smillert}
8b39c5158Smillert
9b39c5158Smillertuse strict;
10b39c5158Smillertuse warnings;
11898184e3SsthenBEGIN { $| = 1; print "1..37\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
22b39c5158Smillertuse Unicode::Collate;
23b39c5158Smillert
24b39c5158Smillertok(1);
25b39c5158Smillert
26b39c5158Smillertsub _pack_U   { Unicode::Collate::pack_U(@_) }
27b39c5158Smillertsub _unpack_U { Unicode::Collate::unpack_U(@_) }
28b39c5158Smillert
29*256a93a4Safresh1#########################
30*256a93a4Safresh1
31b39c5158Smillertmy $A_acute = _pack_U(0xC1);
32b39c5158Smillertmy $acute   = _pack_U(0x0301);
33b39c5158Smillert
34b39c5158Smillertmy $Collator = Unicode::Collate->new(
35b39c5158Smillert  table => 'keys.txt',
36b39c5158Smillert  normalization => undef,
37b39c5158Smillert);
38b39c5158Smillert
39b39c5158Smillertmy %origAlt = $Collator->change(alternate => 'Blanked');
40b39c5158Smillert
41b39c5158Smillertok($Collator->lt("death", "de luge"));
42b39c5158Smillertok($Collator->lt("de luge", "de-luge"));
43b39c5158Smillertok($Collator->lt("de-luge", "deluge"));
44b39c5158Smillertok($Collator->lt("deluge", "de\x{2010}luge"));
45b39c5158Smillertok($Collator->lt("deluge", "de Luge"));
46b39c5158Smillert
47b39c5158Smillert$Collator->change(alternate => 'Non-ignorable');
48b39c5158Smillert
49b39c5158Smillertok($Collator->lt("de luge", "de Luge"));
50b39c5158Smillertok($Collator->lt("de Luge", "de-luge"));
51b39c5158Smillertok($Collator->lt("de-Luge", "de\x{2010}luge"));
52b39c5158Smillertok($Collator->lt("de-luge", "death"));
53b39c5158Smillertok($Collator->lt("death", "deluge"));
54b39c5158Smillert
55b39c5158Smillert$Collator->change(alternate => 'Shifted');
56b39c5158Smillert
57b39c5158Smillertok($Collator->lt("death", "de luge"));
58b39c5158Smillertok($Collator->lt("de luge", "de-luge"));
59b39c5158Smillertok($Collator->lt("de-luge", "deluge"));
60b39c5158Smillertok($Collator->lt("deluge", "de Luge"));
61b39c5158Smillertok($Collator->lt("de Luge", "deLuge"));
62b39c5158Smillert
63b39c5158Smillert$Collator->change(alternate => 'Shift-Trimmed');
64b39c5158Smillert
65b39c5158Smillertok($Collator->lt("death", "deluge"));
66b39c5158Smillertok($Collator->lt("deluge", "de luge"));
67b39c5158Smillertok($Collator->lt("de luge", "de-luge"));
68b39c5158Smillertok($Collator->lt("de-luge", "deLuge"));
69b39c5158Smillertok($Collator->lt("deLuge", "de Luge"));
70b39c5158Smillert
71b39c5158Smillert$Collator->change(%origAlt);
72b39c5158Smillert
73b39c5158Smillertok($Collator->{alternate}, 'shifted');
74b39c5158Smillert
75b39c5158Smillert##############
76b39c5158Smillert
77b39c5158Smillert# ignorable after alternate
78b39c5158Smillert
79b39c5158Smillert# Shifted;
80b39c5158Smillertok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!"));
81b39c5158Smillertok($Collator->eq("?\x{300}A\x{301}", "?$A_acute"));
82b39c5158Smillertok($Collator->eq("?\x{300}", "?"));
83b39c5158Smillertok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs.
84b39c5158Smillert
85b39c5158Smillert$Collator->change(level => 3);
86b39c5158Smillertok($Collator->eq("\cA", "?"));
87b39c5158Smillert
88b39c5158Smillert$Collator->change(alternate => 'blanked', level => 4);
89b39c5158Smillertok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!"));
90b39c5158Smillertok($Collator->eq("?\x{300}A\x{301}", "?$A_acute"));
91b39c5158Smillertok($Collator->eq("?\x{300}", "?"));
92b39c5158Smillertok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs.
93b39c5158Smillert
94b39c5158Smillert$Collator->change(level => 3);
95b39c5158Smillertok($Collator->eq("\cA", "?"));
96b39c5158Smillert
97b39c5158Smillert$Collator->change(alternate => 'Non-ignorable', level => 4);
98b39c5158Smillert
99b39c5158Smillertok($Collator->lt("?\x{300}", "?!"));
100b39c5158Smillertok($Collator->gt("?\x{300}A$acute", "?$A_acute"));
101b39c5158Smillertok($Collator->gt("?\x{300}", "?"));
102b39c5158Smillertok($Collator->gt("?\x{344}", "?"));
103b39c5158Smillert
104b39c5158Smillert$Collator->change(level => 3);
105b39c5158Smillertok($Collator->lt("\cA", "?"));
106b39c5158Smillert
107b39c5158Smillert$Collator->change(alternate => 'Shifted', level => 4);
108b39c5158Smillert
109