3 unless ("A" eq pack('U', 0x41)) {
4 print "1..0 # Unicode::Collate " .
5 "cannot stringify a Unicode code point\n";
10 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
16 BEGIN { $| = 1; print "1..37\n"; }
19 my $p = my $r = shift;
22 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
24 print $p ? "ok" : "not ok", ' ', ++$count, "\n";
31 #########################
33 sub _pack_U { Unicode::Collate::pack_U(@_) }
34 sub _unpack_U { Unicode::Collate::unpack_U(@_) }
36 my $A_acute = _pack_U(0xC1);
37 my $acute = _pack_U(0x0301);
39 my $Collator = Unicode::Collate->new(
41 normalization => undef,
44 my %origVar = $Collator->change(variable => 'Blanked');
46 ok($Collator->lt("death", "de luge"));
47 ok($Collator->lt("de luge", "de-luge"));
48 ok($Collator->lt("de-luge", "deluge"));
49 ok($Collator->lt("deluge", "de\x{2010}luge"));
50 ok($Collator->lt("deluge", "de Luge"));
52 $Collator->change(variable => 'Non-ignorable');
54 ok($Collator->lt("de luge", "de Luge"));
55 ok($Collator->lt("de Luge", "de-luge"));
56 ok($Collator->lt("de-Luge", "de\x{2010}luge"));
57 ok($Collator->lt("de-luge", "death"));
58 ok($Collator->lt("death", "deluge"));
60 $Collator->change(variable => 'Shifted');
62 ok($Collator->lt("death", "de luge"));
63 ok($Collator->lt("de luge", "de-luge"));
64 ok($Collator->lt("de-luge", "deluge"));
65 ok($Collator->lt("deluge", "de Luge"));
66 ok($Collator->lt("de Luge", "deLuge"));
68 $Collator->change(variable => 'Shift-Trimmed');
70 ok($Collator->lt("death", "deluge"));
71 ok($Collator->lt("deluge", "de luge"));
72 ok($Collator->lt("de luge", "de-luge"));
73 ok($Collator->lt("de-luge", "deLuge"));
74 ok($Collator->lt("deLuge", "de Luge"));
76 $Collator->change(%origVar);
78 ok($Collator->{variable}, 'shifted');
82 # ignorable after variable
85 ok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!"));
86 ok($Collator->eq("?\x{300}A\x{301}", "?$A_acute"));
87 ok($Collator->eq("?\x{300}", "?"));
88 ok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs.
90 $Collator->change(level => 3);
91 ok($Collator->eq("\cA", "?"));
93 $Collator->change(variable => 'blanked', level => 4);
94 ok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!"));
95 ok($Collator->eq("?\x{300}A\x{301}", "?$A_acute"));
96 ok($Collator->eq("?\x{300}", "?"));
97 ok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs.
99 $Collator->change(level => 3);
100 ok($Collator->eq("\cA", "?"));
102 $Collator->change(variable => 'Non-ignorable', level => 4);
104 ok($Collator->lt("?\x{300}", "?!"));
105 ok($Collator->gt("?\x{300}A$acute", "?$A_acute"));
106 ok($Collator->gt("?\x{300}", "?"));
107 ok($Collator->gt("?\x{344}", "?"));
109 $Collator->change(level => 3);
110 ok($Collator->lt("\cA", "?"));
112 $Collator->change(variable => 'Shifted', level => 4);