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..23\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 26*256a93a4Safresh1sub _pack_U { Unicode::Collate::pack_U(@_) } 27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) } 28*256a93a4Safresh1 29b39c5158Smillert######################### 30b39c5158Smillert 31b39c5158Smillertmy $Collator = Unicode::Collate->new( 32b39c5158Smillert table => 'keys.txt', 33b39c5158Smillert normalization => undef, 34b39c5158Smillert UCA_Version => 9, 35b39c5158Smillert); 36b39c5158Smillert 37b39c5158Smillert# rearrange : 0x0E40..0x0E44, 0x0EC0..0x0EC4 (default) 38b39c5158Smillert 39b39c5158Smillert##### 2..9 40b39c5158Smillert 41b39c5158Smillertmy %old_rearrange = $Collator->change(rearrange => undef); 42b39c5158Smillert 43898184e3Ssthenok($Collator->gt( "\x{E41}A", "\x{E40}B")); 44898184e3Ssthenok($Collator->gt("A\x{E41}A", "A\x{E40}B")); 45b39c5158Smillert 46b39c5158Smillert$Collator->change(rearrange => [ 0x61 ]); 47*256a93a4Safresh1 48*256a93a4Safresh1# 0x61 FOR 'a' SHOULD BE A UNICODE CODE POINT, NOT A NATIVE CODE POINT. 49b39c5158Smillert 50b39c5158Smillertok($Collator->gt("ab", "AB")); # as 'ba' > 'AB' 51b39c5158Smillert 52b39c5158Smillert$Collator->change(%old_rearrange); 53b39c5158Smillert 54b39c5158Smillertok($Collator->lt("ab", "AB")); 55898184e3Ssthenok($Collator->lt( "\x{E40}", "\x{E41}")); 56898184e3Ssthenok($Collator->lt( "\x{E40}A", "\x{E41}B")); 57898184e3Ssthenok($Collator->lt( "\x{E41}A", "\x{E40}B")); 58898184e3Ssthenok($Collator->lt("A\x{E41}A", "A\x{E40}B")); 59b39c5158Smillert 60b39c5158Smillert##### 10..13 61b39c5158Smillert 62b39c5158Smillertmy $all_undef_8 = Unicode::Collate->new( 63b39c5158Smillert table => undef, 64b39c5158Smillert normalization => undef, 65b39c5158Smillert overrideCJK => undef, 66b39c5158Smillert overrideHangul => undef, 67b39c5158Smillert UCA_Version => 8, 68b39c5158Smillert); 69b39c5158Smillert 70898184e3Ssthenok($all_undef_8->lt( "\x{E40}", "\x{E41}")); 71898184e3Ssthenok($all_undef_8->lt( "\x{E40}A", "\x{E41}B")); 72898184e3Ssthenok($all_undef_8->lt( "\x{E41}A", "\x{E40}B")); 73898184e3Ssthenok($all_undef_8->lt("A\x{E41}A", "A\x{E40}B")); 74b39c5158Smillert 75b39c5158Smillert##### 14..18 76b39c5158Smillert 77b39c5158Smillertmy $no_rearrange = Unicode::Collate->new( 78b39c5158Smillert table => undef, 79b39c5158Smillert normalization => undef, 80b39c5158Smillert rearrange => [], 81b39c5158Smillert UCA_Version => 9, 82b39c5158Smillert); 83b39c5158Smillert 84b39c5158Smillertok($no_rearrange->lt("A", "B")); 85898184e3Ssthenok($no_rearrange->lt( "\x{E40}", "\x{E41}")); 86898184e3Ssthenok($no_rearrange->lt( "\x{E40}A", "\x{E41}B")); 87898184e3Ssthenok($no_rearrange->gt( "\x{E41}A", "\x{E40}B")); 88898184e3Ssthenok($no_rearrange->gt("A\x{E41}A", "A\x{E40}B")); 89b39c5158Smillert 90b39c5158Smillert##### 19..23 91b39c5158Smillert 92b39c5158Smillertmy $undef_rearrange = Unicode::Collate->new( 93b39c5158Smillert table => undef, 94b39c5158Smillert normalization => undef, 95b39c5158Smillert rearrange => undef, 96b39c5158Smillert UCA_Version => 9, 97b39c5158Smillert); 98b39c5158Smillert 99b39c5158Smillertok($undef_rearrange->lt("A", "B")); 100898184e3Ssthenok($undef_rearrange->lt( "\x{E40}", "\x{E41}")); 101898184e3Ssthenok($undef_rearrange->lt( "\x{E40}A", "\x{E41}B")); 102898184e3Ssthenok($undef_rearrange->gt( "\x{E41}A", "\x{E40}B")); 103898184e3Ssthenok($undef_rearrange->gt("A\x{E41}A", "A\x{E40}B")); 104b39c5158Smillert 105