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