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