1 2BEGIN { 3 unless ("A" eq pack('U', 0x41)) { 4 print "1..0 # Unicode::Collate " . 5 "cannot stringify a Unicode code point\n"; 6 exit 0; 7 } 8 if ($ENV{PERL_CORE}) { 9 chdir('t') if -d 't'; 10 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 11 } 12} 13 14use Test; 15BEGIN { plan tests => 51 }; 16 17use strict; 18use warnings; 19use Unicode::Collate; 20 21ok(1); 22 23my $Collator = Unicode::Collate->new( 24 table => 'keys.txt', 25 normalization => undef, 26); 27 28# U+9FA6..U+9FBB are CJK UI since Unicode 4.1.0. 29# U+3400 is CJK UI ExtA, then greater than any CJK UI. 30 31##### 2..11 32ok($Collator->lt("\x{9FA5}", "\x{3400}")); # UI < ExtA 33ok($Collator->lt("\x{9FA6}", "\x{3400}")); # new UI < ExtA 34ok($Collator->lt("\x{9FBB}", "\x{3400}")); # new UI < ExtA 35ok($Collator->gt("\x{9FBC}", "\x{3400}")); # Unassigned > ExtA 36ok($Collator->gt("\x{9FFF}", "\x{3400}")); # Unassigned > ExtA 37ok($Collator->lt("\x{9FA6}", "\x{9FBB}")); # new UI > new UI 38ok($Collator->lt("\x{3400}","\x{20000}")); # ExtA < ExtB 39ok($Collator->lt("\x{3400}","\x{2A6D6}")); # ExtA < ExtB 40ok($Collator->gt("\x{9FFF}","\x{20000}")); # Unassigned > ExtB 41ok($Collator->gt("\x{9FFF}","\x{2A6D6}")); # Unassigned > ExtB 42 43##### 12..21 44$Collator->change(UCA_Version => 11); 45ok($Collator->lt("\x{9FA5}", "\x{3400}")); # UI < ExtA 46ok($Collator->gt("\x{9FA6}", "\x{3400}")); # Unassigned > ExtA 47ok($Collator->gt("\x{9FBB}", "\x{3400}")); # Unassigned > ExtA 48ok($Collator->gt("\x{9FBC}", "\x{3400}")); # Unassigned > ExtA 49ok($Collator->gt("\x{9FFF}", "\x{3400}")); # Unassigned > ExtA 50ok($Collator->lt("\x{9FA6}", "\x{9FBB}")); # Unassigned > Unassigned 51ok($Collator->lt("\x{3400}","\x{20000}")); # ExtA < ExtB 52ok($Collator->lt("\x{3400}","\x{2A6D6}")); # ExtA < ExtB 53ok($Collator->gt("\x{9FFF}","\x{20000}")); # Unassigned > ExtB 54ok($Collator->gt("\x{9FFF}","\x{2A6D6}")); # Unassigned > ExtB 55 56##### 22..31 57$Collator->change(UCA_Version => 9); 58ok($Collator->lt("\x{9FA5}", "\x{3400}")); # UI < ExtA 59ok($Collator->gt("\x{9FA6}", "\x{3400}")); # Unassigned > ExtA 60ok($Collator->gt("\x{9FBB}", "\x{3400}")); # Unassigned > ExtA 61ok($Collator->gt("\x{9FBC}", "\x{3400}")); # Unassigned > ExtA 62ok($Collator->gt("\x{9FFF}", "\x{3400}")); # Unassigned > ExtA 63ok($Collator->lt("\x{9FA6}", "\x{9FBB}")); # Unassigned > Unassigned 64ok($Collator->lt("\x{3400}","\x{20000}")); # ExtA < ExtB 65ok($Collator->lt("\x{3400}","\x{2A6D6}")); # ExtA < ExtB 66ok($Collator->gt("\x{9FFF}","\x{20000}")); # Unassigned > ExtB 67ok($Collator->gt("\x{9FFF}","\x{2A6D6}")); # Unassigned > ExtB 68 69##### 32..41 70$Collator->change(UCA_Version => 8); 71ok($Collator->gt("\x{9FA5}", "\x{3400}")); # UI > ExtA 72ok($Collator->gt("\x{9FA6}", "\x{3400}")); # Unassigned > ExtA 73ok($Collator->gt("\x{9FBB}", "\x{3400}")); # Unassigned > ExtA 74ok($Collator->gt("\x{9FBC}", "\x{3400}")); # Unassigned > ExtA 75ok($Collator->gt("\x{9FFF}", "\x{3400}")); # Unassigned > ExtA 76ok($Collator->lt("\x{9FA6}", "\x{9FBB}")); # new UI > new UI 77ok($Collator->lt("\x{3400}","\x{20000}")); # ExtA < Unassigned(ExtB) 78ok($Collator->lt("\x{3400}","\x{2A6D6}")); # ExtA < Unassigned(ExtB) 79ok($Collator->lt("\x{9FFF}","\x{20000}")); # Unassigned < Unassigned(ExtB) 80ok($Collator->lt("\x{9FFF}","\x{2A6D6}")); # Unassigned < Unassigned(ExtB) 81 82##### 42..51 83$Collator->change(UCA_Version => 14); 84ok($Collator->lt("\x{9FA5}", "\x{3400}")); # UI < ExtA 85ok($Collator->lt("\x{9FA6}", "\x{3400}")); # new UI < ExtA 86ok($Collator->lt("\x{9FBB}", "\x{3400}")); # new UI < ExtA 87ok($Collator->gt("\x{9FBC}", "\x{3400}")); # Unassigned > ExtA 88ok($Collator->gt("\x{9FFF}", "\x{3400}")); # Unassigned > ExtA 89ok($Collator->lt("\x{9FA6}", "\x{9FBB}")); # new UI > new UI 90ok($Collator->lt("\x{3400}","\x{20000}")); # ExtA < ExtB 91ok($Collator->lt("\x{3400}","\x{2A6D6}")); # ExtA < ExtB 92ok($Collator->gt("\x{9FFF}","\x{20000}")); # Unassigned > ExtB 93ok($Collator->gt("\x{9FFF}","\x{2A6D6}")); # Unassigned > ExtB 94 95