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