15759b3d2Safresh1 25759b3d2Safresh1BEGIN { 35759b3d2Safresh1 if ($ENV{PERL_CORE}) { 45759b3d2Safresh1 chdir('t') if -d 't'; 55759b3d2Safresh1 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 65759b3d2Safresh1 } 75759b3d2Safresh1} 85759b3d2Safresh1 95759b3d2Safresh1use strict; 105759b3d2Safresh1use warnings; 11*256a93a4Safresh1BEGIN { $| = 1; print "1..689\n"; } # 5 + 36 x @Versions 125759b3d2Safresh1my $count = 0; 135759b3d2Safresh1sub ok ($;$) { 145759b3d2Safresh1 my $p = my $r = shift; 155759b3d2Safresh1 if (@_) { 165759b3d2Safresh1 my $x = shift; 175759b3d2Safresh1 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; 185759b3d2Safresh1 } 195759b3d2Safresh1 print $p ? "ok" : "not ok", ' ', ++$count, "\n"; 205759b3d2Safresh1} 215759b3d2Safresh1 225759b3d2Safresh1use Unicode::Collate; 235759b3d2Safresh1 245759b3d2Safresh1ok(1); 255759b3d2Safresh1 26*256a93a4Safresh1sub _pack_U { Unicode::Collate::pack_U(@_) } 27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) } 28*256a93a4Safresh1 295759b3d2Safresh1######################### 305759b3d2Safresh1 31*256a93a4Safresh1my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26, 32*256a93a4Safresh1 28, 30, 32, 34, 36, 38, 40, 41, 43); 335759b3d2Safresh1 345759b3d2Safresh1my $Collator = Unicode::Collate->new( 355759b3d2Safresh1 table => 'keys.txt', 365759b3d2Safresh1 normalization => undef, 375759b3d2Safresh1 UCA_Version => 34, 385759b3d2Safresh1); 395759b3d2Safresh1 405759b3d2Safresh1ok($Collator->viewSortKey("\x{17000}"), 415759b3d2Safresh1 '[FB00 8000 | 0020 | 0002 | FFFF FFFF |]'); 425759b3d2Safresh1ok($Collator->viewSortKey("\x{17001}"), 435759b3d2Safresh1 '[FB00 8001 | 0020 | 0002 | FFFF FFFF |]'); 445759b3d2Safresh1ok($Collator->viewSortKey("\x{18800}"), 455759b3d2Safresh1 '[FB00 9800 | 0020 | 0002 | FFFF FFFF |]'); 465759b3d2Safresh1ok($Collator->viewSortKey("\x{18AF2}"), 475759b3d2Safresh1 '[FB00 9AF2 | 0020 | 0002 | FFFF FFFF |]'); 485759b3d2Safresh1 495759b3d2Safresh1# Tangut < CJK UI (4E00) < Unassigned. 505759b3d2Safresh1 515759b3d2Safresh1# 17000..187EC are Tangut Ideographs since UCA_Version 34 (Unicode 9.0). 52*256a93a4Safresh1# 187ED..187F1 are Tangut Ideographs since UCA_Version 38 (Unicode 11.0). 53*256a93a4Safresh1# 187F2..187F7 are Tangut Ideographs since UCA_Version 40 (Unicode 12.0). 545759b3d2Safresh1# 18800..18AF2 are Tangut Components since UCA_Version 34 (Unicode 9.0). 55*256a93a4Safresh1# 18AF3..18AFF are Tangut Components since UCA_Version 43 (Unicode 13.0) 56*256a93a4Safresh1# 18D00..18D08 are Tangut Ideographs since UCA_Version 43 (Unicode 13.0) 575759b3d2Safresh1 585759b3d2Safresh1for my $v (@Versions) { 595759b3d2Safresh1 $Collator->change(UCA_Version => $v); 605759b3d2Safresh1 615759b3d2Safresh1 ok($Collator->cmp("\x{16FFF}", "\x{4E00}") == 1); 625759b3d2Safresh1 ok($Collator->cmp("\x{17000}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 635759b3d2Safresh1 ok($Collator->cmp("\x{17001}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 645759b3d2Safresh1 ok($Collator->cmp("\x{17FFF}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 655759b3d2Safresh1 ok($Collator->cmp("\x{18000}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 665759b3d2Safresh1 ok($Collator->cmp("\x{187EB}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 675759b3d2Safresh1 ok($Collator->cmp("\x{187EC}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 68*256a93a4Safresh1 ok($Collator->cmp("\x{187ED}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); 69*256a93a4Safresh1 ok($Collator->cmp("\x{187EF}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); 70*256a93a4Safresh1 ok($Collator->cmp("\x{187F1}", "\x{4E00}") == ($v >= 38 ? -1 : 1)); 71*256a93a4Safresh1 ok($Collator->cmp("\x{187F2}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); 72*256a93a4Safresh1 ok($Collator->cmp("\x{187F4}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); 73*256a93a4Safresh1 ok($Collator->cmp("\x{187F7}", "\x{4E00}") == ($v >= 40 ? -1 : 1)); 74*256a93a4Safresh1 ok($Collator->cmp("\x{187F8}", "\x{4E00}") == 1); 755759b3d2Safresh1 ok($Collator->cmp("\x{187FE}", "\x{4E00}") == 1); 765759b3d2Safresh1 ok($Collator->cmp("\x{187FF}", "\x{4E00}") == 1); 775759b3d2Safresh1 ok($Collator->cmp("\x{18800}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 785759b3d2Safresh1 ok($Collator->cmp("\x{18801}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 795759b3d2Safresh1 ok($Collator->cmp("\x{18AF1}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 805759b3d2Safresh1 ok($Collator->cmp("\x{18AF2}", "\x{4E00}") == ($v >= 34 ? -1 : 1)); 81*256a93a4Safresh1 ok($Collator->cmp("\x{18AF3}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); 82*256a93a4Safresh1 ok($Collator->cmp("\x{18AFF}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); 83*256a93a4Safresh1 ok($Collator->cmp("\x{18D00}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); 84*256a93a4Safresh1 ok($Collator->cmp("\x{18D08}", "\x{4E00}") == ($v >= 43 ? -1 : 1)); 85*256a93a4Safresh1 ok($Collator->cmp("\x{18D09}", "\x{4E00}") == 1); 865759b3d2Safresh1 875759b3d2Safresh1 ok($Collator->lt("\x{17000}", "\x{17001}")); 885759b3d2Safresh1 ok($Collator->lt("\x{17001}", "\x{17002}")); 895759b3d2Safresh1 ok($Collator->lt("\x{17002}", "\x{17FFF}")); 905759b3d2Safresh1 ok($Collator->lt("\x{17FFF}", "\x{18000}")); 915759b3d2Safresh1 ok($Collator->lt("\x{18000}", "\x{187EB}")); 925759b3d2Safresh1 ok($Collator->lt("\x{187EB}", "\x{187EC}")); 93*256a93a4Safresh1 ok($Collator->lt("\x{187ED}", "\x{187EE}")); 94*256a93a4Safresh1 ok($Collator->lt("\x{187F0}", "\x{187F1}")); 955759b3d2Safresh1 965759b3d2Safresh1 ok($Collator->lt("\x{18800}", "\x{18801}")); 975759b3d2Safresh1 ok($Collator->lt("\x{18801}", "\x{18AF1}")); 985759b3d2Safresh1 ok($Collator->lt("\x{18AF1}", "\x{18AF2}")); 995759b3d2Safresh1} 100