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..108\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 $objIg = Unicode::Collate::Locale-> 37 new(locale => 'IG', normalization => undef); 38 39ok($objIg->getlocale, 'ig'); 40 41$objIg->change(level => 1); 42 43ok($objIg->lt("b", "ch")); 44ok($objIg->lt("bz","ch")); 45ok($objIg->gt("c", "ch")); 46ok($objIg->lt("g", "gb")); 47ok($objIg->lt("gz","gb")); 48ok($objIg->lt("gb","gh")); 49ok($objIg->lt("gh","gw")); 50ok($objIg->gt("h", "gw")); 51ok($objIg->lt("i", "i\x{323}")); 52ok($objIg->gt("j", "i\x{323}")); 53ok($objIg->lt("k", "kp")); 54ok($objIg->lt("kz","kp")); 55ok($objIg->lt("kp","kw")); 56ok($objIg->gt("l", "kw")); 57ok($objIg->lt("n", "n\x{307}")); 58ok($objIg->lt("nz","n\x{307}")); 59ok($objIg->gt("nw","n\x{307}")); 60ok($objIg->lt("nw", "ny")); 61ok($objIg->gt("o", "ny")); 62ok($objIg->lt("o", "o\x{323}")); 63ok($objIg->gt("p", "o\x{323}")); 64ok($objIg->lt("s", "sh")); 65ok($objIg->lt("sz","sh")); 66ok($objIg->gt("t", "sh")); 67ok($objIg->lt("u", "u\x{323}")); 68ok($objIg->gt("v", "u\x{323}")); 69 70# 28 71 72$objIg->change(level => 2); 73 74ok($objIg->eq("ch", "Ch")); 75ok($objIg->eq("Ch", "CH")); 76ok($objIg->eq("gb", "Gb")); 77ok($objIg->eq("Gb", "GB")); 78ok($objIg->eq("gh", "Gh")); 79ok($objIg->eq("Gh", "GH")); 80ok($objIg->eq("gw", "Gw")); 81ok($objIg->eq("Gw", "GW")); 82ok($objIg->eq("i\x{323}", "I\x{323}")); 83ok($objIg->eq("kp", "Kp")); 84ok($objIg->eq("Kp", "KP")); 85ok($objIg->eq("kw", "Kw")); 86ok($objIg->eq("Kw", "KW")); 87ok($objIg->eq("n\x{307}", "N\x{307}")); 88ok($objIg->eq("nw", "Nw")); 89ok($objIg->eq("Nw", "NW")); 90ok($objIg->eq("ny", "Ny")); 91ok($objIg->eq("Ny", "NY")); 92ok($objIg->eq("o\x{323}", "O\x{323}")); 93ok($objIg->eq("sh", "Sh")); 94ok($objIg->eq("Sh", "SH")); 95ok($objIg->eq("u\x{323}", "U\x{323}")); 96 97# 50 98 99$objIg->change(level => 3); 100 101ok($objIg->lt("ch", "Ch")); 102ok($objIg->lt("Ch", "CH")); 103ok($objIg->lt("gb", "Gb")); 104ok($objIg->lt("Gb", "GB")); 105ok($objIg->lt("gh", "Gh")); 106ok($objIg->lt("Gh", "GH")); 107ok($objIg->lt("gw", "Gw")); 108ok($objIg->lt("Gw", "GW")); 109ok($objIg->lt("i\x{323}", "I\x{323}")); 110ok($objIg->lt("kp", "Kp")); 111ok($objIg->lt("Kp", "KP")); 112ok($objIg->lt("kw", "Kw")); 113ok($objIg->lt("Kw", "KW")); 114ok($objIg->lt("n\x{307}", "N\x{307}")); 115ok($objIg->lt("nw", "Nw")); 116ok($objIg->lt("Nw", "NW")); 117ok($objIg->lt("ny", "Ny")); 118ok($objIg->lt("Ny", "NY")); 119ok($objIg->lt("o\x{323}", "O\x{323}")); 120ok($objIg->lt("sh", "Sh")); 121ok($objIg->lt("Sh", "SH")); 122ok($objIg->lt("u\x{323}", "U\x{323}")); 123 124# 72 125 126ok($objIg->eq("i\x{323}", "\x{1ECB}")); 127ok($objIg->eq("I\x{323}", "\x{1ECA}")); 128ok($objIg->eq("n\x{307}", "\x{1E45}")); 129ok($objIg->eq("N\x{307}", "\x{1E44}")); 130ok($objIg->eq("o\x{323}", "\x{1ECD}")); 131ok($objIg->eq("O\x{323}", "\x{1ECC}")); 132ok($objIg->eq("u\x{323}", "\x{1EE5}")); 133ok($objIg->eq("U\x{323}", "\x{1EE4}")); 134 135ok($objIg->eq("o\x{323}\x{302}", "\x{1ED9}")); 136ok($objIg->eq("O\x{323}\x{302}", "\x{1ED8}")); 137ok($objIg->eq("o\x{323}\x{31B}", "\x{1EE3}")); 138ok($objIg->eq("O\x{323}\x{31B}", "\x{1EE2}")); 139ok($objIg->eq("u\x{323}\x{31B}", "\x{1EF1}")); 140ok($objIg->eq("U\x{323}\x{31B}", "\x{1EF0}")); 141 142# 86 143 144$objIg->change(upper_before_lower => 1); 145 146ok($objIg->gt("ch", "Ch")); 147ok($objIg->gt("Ch", "CH")); 148ok($objIg->gt("gb", "Gb")); 149ok($objIg->gt("Gb", "GB")); 150ok($objIg->gt("gh", "Gh")); 151ok($objIg->gt("Gh", "GH")); 152ok($objIg->gt("gw", "Gw")); 153ok($objIg->gt("Gw", "GW")); 154ok($objIg->gt("i\x{323}", "I\x{323}")); 155ok($objIg->gt("kp", "Kp")); 156ok($objIg->gt("Kp", "KP")); 157ok($objIg->gt("kw", "Kw")); 158ok($objIg->gt("Kw", "KW")); 159ok($objIg->gt("n\x{307}", "N\x{307}")); 160ok($objIg->gt("nw", "Nw")); 161ok($objIg->gt("Nw", "NW")); 162ok($objIg->gt("ny", "Ny")); 163ok($objIg->gt("Ny", "NY")); 164ok($objIg->gt("o\x{323}", "O\x{323}")); 165ok($objIg->gt("sh", "Sh")); 166ok($objIg->gt("Sh", "SH")); 167ok($objIg->gt("u\x{323}", "U\x{323}")); 168 169# 108 170