1 2BEGIN { 3 if ($ENV{PERL_CORE}) { 4 chdir('t') if -d 't'; 5 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 6 } 7} 8 9use strict; 10use warnings; 11BEGIN { $| = 1; print "1..166\n"; } 12my $count = 0; 13sub ok ($;$) { 14 my $p = my $r = shift; 15 if (@_) { 16 my $x = shift; 17 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; 18 } 19 print $p ? "ok" : "not ok", ' ', ++$count, "\n"; 20} 21 22use Unicode::Collate::Locale; 23 24ok(1); 25 26sub _pack_U { Unicode::Collate::pack_U(@_) } 27sub _unpack_U { Unicode::Collate::unpack_U(@_) } 28 29######################### 30 31my $objUr = Unicode::Collate::Locale-> 32 new(locale => 'UR', normalization => undef); 33 34ok($objUr->getlocale, 'ur'); 35 36$objUr->change(level => 3); 37 38ok($objUr->eq("\x{623}", "\x{627}\x{654}")); 39ok($objUr->eq("\x{622}", "\x{627}\x{653}")); 40ok($objUr->eq("\x{624}", "\x{648}\x{654}")); 41ok($objUr->eq("\x{6C2}", "\x{6C1}\x{654}")); 42ok($objUr->eq("\x{626}", "\x{64A}\x{654}")); 43ok($objUr->eq("\x{6D3}", "\x{6D2}\x{654}")); 44 45# 8 46 47$objUr->change(level => 2); 48 49ok($objUr->lt("\x{627}", "\x{623}")); 50ok($objUr->lt("\x{648}", "\x{624}")); 51ok($objUr->lt("\x{6C1}", "\x{6C2}")); 52ok($objUr->lt("\x{6CC}", "\x{626}")); 53ok($objUr->lt("\x{6D2}", "\x{6D3}")); 54 55# 13 56 57ok($objUr->lt("\x{652}", "\x{64E}")); 58ok($objUr->lt("\x{64E}", "\x{650}")); 59ok($objUr->lt("\x{650}", "\x{64F}")); 60ok($objUr->lt("\x{64F}", "\x{670}")); 61ok($objUr->lt("\x{670}", "\x{656}")); 62ok($objUr->lt("\x{656}", "\x{657}")); 63ok($objUr->lt("\x{657}", "\x{64B}")); 64ok($objUr->lt("\x{64B}", "\x{64D}")); 65ok($objUr->lt("\x{64D}", "\x{64C}")); 66ok($objUr->lt("\x{64C}", "\x{654}")); 67ok($objUr->lt("\x{654}", "\x{651}")); 68ok($objUr->lt("\x{651}", "\x{658}")); 69ok($objUr->lt("\x{658}", "\x{653}")); 70ok($objUr->lt("\x{653}", "\x{655}")); 71 72# 27 73 74$objUr->change(level => 1); 75 76ok($objUr->eq("\x{627}", "\x{623}")); 77ok($objUr->eq("\x{648}", "\x{624}")); 78ok($objUr->eq("\x{6C1}", "\x{6C2}")); 79ok($objUr->eq("\x{6CC}", "\x{626}")); 80ok($objUr->eq("\x{6D2}", "\x{6D3}")); 81 82# 32 83 84ok($objUr->eq("\x{652}", "\x{64E}")); 85ok($objUr->eq("\x{64E}", "\x{650}")); 86ok($objUr->eq("\x{650}", "\x{64F}")); 87ok($objUr->eq("\x{64F}", "\x{670}")); 88ok($objUr->eq("\x{670}", "\x{656}")); 89ok($objUr->eq("\x{656}", "\x{657}")); 90ok($objUr->eq("\x{657}", "\x{64B}")); 91ok($objUr->eq("\x{64B}", "\x{64D}")); 92ok($objUr->eq("\x{64D}", "\x{64C}")); 93ok($objUr->eq("\x{64C}", "\x{654}")); 94ok($objUr->eq("\x{654}", "\x{651}")); 95ok($objUr->eq("\x{651}", "\x{658}")); 96ok($objUr->eq("\x{658}", "\x{653}")); 97ok($objUr->eq("\x{653}", "\x{655}")); 98 99# 46 100 101for my $h (0, 1) { 102 no warnings 'utf8'; 103 my $t = $h ? _pack_U(0xFFFF) : ""; 104 $objUr->change(highestFFFF => 1) if $h; 105 106 ok($objUr->lt("\x{627}$t", "\x{622}")); 107 ok($objUr->lt("\x{622}$t", "\x{628}")); 108 ok($objUr->lt("\x{628}$t", "\x{628}\x{6BE}")); 109 ok($objUr->lt("\x{628}\x{6BE}$t", "\x{67E}")); 110 ok($objUr->lt("\x{67E}$t", "\x{67E}\x{6BE}")); 111 ok($objUr->lt("\x{67E}\x{6BE}$t", "\x{62A}")); 112 ok($objUr->lt("\x{62A}$t", "\x{62A}\x{6BE}")); 113 ok($objUr->lt("\x{62A}\x{6BE}$t", "\x{679}")); 114 ok($objUr->lt("\x{679}$t", "\x{679}\x{6BE}")); 115 ok($objUr->lt("\x{679}\x{6BE}$t", "\x{62B}")); 116 ok($objUr->lt("\x{62B}$t", "\x{62C}")); 117 ok($objUr->lt("\x{62C}$t", "\x{62C}\x{6BE}")); 118 ok($objUr->lt("\x{62C}\x{6BE}$t", "\x{686}")); 119 ok($objUr->lt("\x{686}$t", "\x{686}\x{6BE}")); 120 ok($objUr->lt("\x{686}\x{6BE}$t", "\x{62D}")); 121 ok($objUr->lt("\x{62D}$t", "\x{62E}")); 122 ok($objUr->lt("\x{62E}$t", "\x{62F}")); 123 ok($objUr->lt("\x{62F}$t", "\x{62F}\x{6BE}")); 124 ok($objUr->lt("\x{62F}\x{6BE}$t", "\x{688}")); 125 ok($objUr->lt("\x{688}$t", "\x{688}\x{6BE}")); 126 ok($objUr->lt("\x{688}\x{6BE}$t", "\x{630}")); 127 ok($objUr->lt("\x{630}$t", "\x{631}")); 128 ok($objUr->lt("\x{631}$t", "\x{631}\x{6BE}")); 129 ok($objUr->lt("\x{631}\x{6BE}$t", "\x{691}")); 130 ok($objUr->lt("\x{691}$t", "\x{691}\x{6BE}")); 131 ok($objUr->lt("\x{691}\x{6BE}$t", "\x{632}")); 132 ok($objUr->lt("\x{632}$t", "\x{698}")); 133 ok($objUr->lt("\x{698}$t", "\x{633}")); 134 ok($objUr->lt("\x{633}$t", "\x{634}")); 135 ok($objUr->lt("\x{634}$t", "\x{635}")); 136 ok($objUr->lt("\x{635}$t", "\x{636}")); 137 ok($objUr->lt("\x{636}$t", "\x{637}")); 138 ok($objUr->lt("\x{637}$t", "\x{638}")); 139 ok($objUr->lt("\x{638}$t", "\x{639}")); 140 ok($objUr->lt("\x{639}$t", "\x{63A}")); 141 ok($objUr->lt("\x{63A}$t", "\x{641}")); 142 ok($objUr->lt("\x{641}$t", "\x{642}")); 143 ok($objUr->lt("\x{642}$t", "\x{6A9}")); 144 ok($objUr->lt("\x{6A9}$t", "\x{6A9}\x{6BE}")); 145 ok($objUr->lt("\x{6A9}\x{6BE}$t", "\x{6AF}")); 146 ok($objUr->lt("\x{6AF}$t", "\x{6AF}\x{6BE}")); 147 ok($objUr->lt("\x{6AF}\x{6BE}$t", "\x{644}")); 148 ok($objUr->lt("\x{644}$t", "\x{644}\x{6BE}")); 149 ok($objUr->lt("\x{644}\x{6BE}$t", "\x{645}")); 150 ok($objUr->lt("\x{645}$t", "\x{645}\x{6BE}")); 151 ok($objUr->lt("\x{645}\x{6BE}$t", "\x{646}")); 152 ok($objUr->lt("\x{646}$t", "\x{646}\x{6BE}")); 153 ok($objUr->lt("\x{646}\x{6BE}$t", "\x{6BA}")); 154 ok($objUr->lt("\x{6BA}$t", "\x{6BA}\x{6BE}")); 155 ok($objUr->lt("\x{6BA}\x{6BE}$t", "\x{648}")); 156 ok($objUr->lt("\x{648}$t", "\x{648}\x{6BE}")); 157 ok($objUr->lt("\x{648}\x{6BE}$t", "\x{6C1}")); 158 ok($objUr->lt("\x{6C1}$t", "\x{6BE}")); 159 ok($objUr->lt("\x{6BE}$t", "\x{6C3}")); 160 ok($objUr->lt("\x{6C3}$t", "\x{621}")); 161 ok($objUr->lt("\x{621}$t", "\x{6CC}")); 162 ok($objUr->lt("\x{6CC}$t", "\x{6CC}\x{6BE}")); 163 ok($objUr->lt("\x{6CC}\x{6BE}$t", "\x{6D2}")); 164 ok($objUr->lt("\x{6D2}$t", "\x{66E}")); 165 ok($objUr->lt("\x{66E}$t", "\x{67B}")); 166} 167 168# 166 169 170