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