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..124\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 $objEe = Unicode::Collate::Locale-> 37 new(locale => 'EE', normalization => undef); 38 39ok($objEe->getlocale, 'ee'); 40 41# 2 42 43$objEe->change(level => 1); 44 45my @prim = ( 46 "d", "d\x{292}", "dz", "\x{256}", # 5 47 "e", "\x{25B}", "f", "\x{192}", # 9 48 "g", "gz", "gb", "\x{263}", "h", # 14 49 "hz", "x", "i", "kz", "kp", "l", # 20 50 "nz", "ny", "\x{14B}", "o", # 24 51 "\x{254}", "p", "tz", "ts", "u", # 29 52 "v", "\x{28B}", "w", 53); 54 55for (my $i = 1; $i < @prim; $i++) { 56 ok($objEe->lt($prim[$i-1], $prim[$i])); 57} 58 59# 32 60 61ok($objEe->eq("\x{302}", "\x{30C}")); 62ok($objEe->eq("a\x{302}", "a\x{30C}")); 63ok($objEe->eq("A\x{302}", "A\x{30C}")); 64ok($objEe->eq("e\x{302}", "e\x{30C}")); 65ok($objEe->eq("E\x{302}", "E\x{30C}")); 66ok($objEe->eq("i\x{302}", "i\x{30C}")); 67ok($objEe->eq("I\x{302}", "I\x{30C}")); 68ok($objEe->eq("o\x{302}", "o\x{30C}")); 69ok($objEe->eq("O\x{302}", "O\x{30C}")); 70ok($objEe->eq("u\x{302}", "u\x{30C}")); 71ok($objEe->eq("U\x{302}", "U\x{30C}")); 72ok($objEe->eq("y\x{302}", "y\x{30C}")); 73ok($objEe->eq("Y\x{302}", "Y\x{30C}")); 74 75# 45 76 77$objEe->change(level => 2); 78 79ok($objEe->gt("\x{302}", "\x{30C}")); 80ok($objEe->gt("a\x{302}", "a\x{30C}")); 81ok($objEe->gt("A\x{302}", "A\x{30C}")); 82ok($objEe->gt("e\x{302}", "e\x{30C}")); 83ok($objEe->gt("E\x{302}", "E\x{30C}")); 84ok($objEe->gt("i\x{302}", "i\x{30C}")); 85ok($objEe->gt("I\x{302}", "I\x{30C}")); 86ok($objEe->gt("o\x{302}", "o\x{30C}")); 87ok($objEe->gt("O\x{302}", "O\x{30C}")); 88ok($objEe->gt("u\x{302}", "u\x{30C}")); 89ok($objEe->gt("U\x{302}", "U\x{30C}")); 90ok($objEe->gt("y\x{302}", "y\x{30C}")); 91ok($objEe->gt("Y\x{302}", "Y\x{30C}")); 92 93# 58 94 95ok($objEe->eq("dz", "Dz")); 96ok($objEe->eq("Dz", "DZ")); 97ok($objEe->eq("\x{256}", "\x{189}")); 98ok($objEe->eq("\x{25B}", "\x{190}")); 99ok($objEe->eq("\x{192}", "\x{191}")); 100ok($objEe->eq("gb", "Gb")); 101ok($objEe->eq("Gb", "GB")); 102ok($objEe->eq("\x{263}", "\x{194}")); 103ok($objEe->eq("x", "X")); 104ok($objEe->eq("kp", "Kp")); 105ok($objEe->eq("Kp", "KP")); 106ok($objEe->eq("ny", "Ny")); 107ok($objEe->eq("Ny", "NY")); 108ok($objEe->eq("\x{14B}", "\x{14A}")); 109ok($objEe->eq("\x{254}", "\x{186}")); 110ok($objEe->eq("ts", "Ts")); 111ok($objEe->eq("Ts", "TS")); 112ok($objEe->eq("\x{28B}", "\x{1B2}")); 113 114# 76 115 116$objEe->change(level => 3); 117 118ok($objEe->lt("dz", "Dz")); 119ok($objEe->lt("Dz", "DZ")); 120ok($objEe->lt("\x{256}", "\x{189}")); 121ok($objEe->lt("\x{25B}", "\x{190}")); 122ok($objEe->lt("\x{192}", "\x{191}")); 123ok($objEe->lt("gb", "Gb")); 124ok($objEe->lt("Gb", "GB")); 125ok($objEe->lt("\x{263}", "\x{194}")); 126ok($objEe->lt("x", "X")); 127ok($objEe->lt("kp", "Kp")); 128ok($objEe->lt("Kp", "KP")); 129ok($objEe->lt("ny", "Ny")); 130ok($objEe->lt("Ny", "NY")); 131ok($objEe->lt("\x{14B}", "\x{14A}")); 132ok($objEe->lt("\x{254}", "\x{186}")); 133ok($objEe->lt("ts", "Ts")); 134ok($objEe->lt("Ts", "TS")); 135ok($objEe->lt("\x{28B}", "\x{1B2}")); 136 137# 94 138 139ok($objEe->eq("a\x{302}", pack('U', 0xE2))); 140ok($objEe->eq("A\x{302}", pack('U', 0xC2))); 141ok($objEe->eq("e\x{302}", pack('U', 0xEA))); 142ok($objEe->eq("E\x{302}", pack('U', 0xCA))); 143ok($objEe->eq("i\x{302}", pack('U', 0xEE))); 144ok($objEe->eq("I\x{302}", pack('U', 0xCE))); 145ok($objEe->eq("o\x{302}", pack('U', 0xF4))); 146ok($objEe->eq("O\x{302}", pack('U', 0xD4))); 147ok($objEe->eq("u\x{302}", pack('U', 0xFB))); 148ok($objEe->eq("U\x{302}", pack('U', 0xDB))); 149ok($objEe->eq("y\x{302}", "\x{177}")); 150ok($objEe->eq("Y\x{302}", "\x{176}")); 151 152# 106 153 154$objEe->change(upper_before_lower => 1); 155 156ok($objEe->gt("dz", "Dz")); 157ok($objEe->gt("Dz", "DZ")); 158ok($objEe->gt("\x{256}", "\x{189}")); 159ok($objEe->gt("\x{25B}", "\x{190}")); 160ok($objEe->gt("\x{192}", "\x{191}")); 161ok($objEe->gt("gb", "Gb")); 162ok($objEe->gt("Gb", "GB")); 163ok($objEe->gt("\x{263}", "\x{194}")); 164ok($objEe->gt("x", "X")); 165ok($objEe->gt("kp", "Kp")); 166ok($objEe->gt("Kp", "KP")); 167ok($objEe->gt("ny", "Ny")); 168ok($objEe->gt("Ny", "NY")); 169ok($objEe->gt("\x{14B}", "\x{14A}")); 170ok($objEe->gt("\x{254}", "\x{186}")); 171ok($objEe->gt("ts", "Ts")); 172ok($objEe->gt("Ts", "TS")); 173ok($objEe->gt("\x{28B}", "\x{1B2}")); 174 175# 124 176