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..58\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 $objSk = Unicode::Collate::Locale-> 32 new(locale => 'SK', normalization => undef); 33 34ok($objSk->getlocale, 'sk'); 35 36$objSk->change(level => 1); 37 38ok($objSk->lt("a", "a\x{308}")); 39ok($objSk->gt("b", "a\x{308}")); 40ok($objSk->lt("c", "c\x{30C}")); 41ok($objSk->gt("d", "c\x{30C}")); 42ok($objSk->lt("h", "ch")); 43ok($objSk->gt("i", "ch")); 44ok($objSk->lt("o", "o\x{302}")); 45ok($objSk->gt("p", "o\x{302}")); 46ok($objSk->lt("r", "r\x{30C}")); 47ok($objSk->gt("s", "r\x{30C}")); 48ok($objSk->lt("s", "s\x{30C}")); 49ok($objSk->gt("t", "s\x{30C}")); 50ok($objSk->lt("z", "z\x{30C}")); 51ok($objSk->lt("z\x{30C}", "\x{292}")); # U+0292 EZH 52 53# 16 54 55$objSk->change(level => 2); 56 57ok($objSk->eq("a\x{308}", "A\x{308}")); 58ok($objSk->eq("c\x{30C}", "C\x{30C}")); 59ok($objSk->eq("o\x{302}", "O\x{302}")); 60ok($objSk->eq("r\x{30C}", "R\x{30C}")); 61ok($objSk->eq("s\x{30C}", "S\x{30C}")); 62ok($objSk->eq("z\x{30C}", "Z\x{30C}")); 63ok($objSk->eq("ch", "cH")); 64ok($objSk->eq("cH", "Ch")); 65ok($objSk->eq("Ch", "CH")); 66 67# 25 68 69$objSk->change(level => 3); 70 71ok($objSk->lt("a\x{308}", "A\x{308}")); 72ok($objSk->lt("c\x{30C}", "C\x{30C}")); 73ok($objSk->lt("o\x{302}", "O\x{302}")); 74ok($objSk->lt("r\x{30C}", "R\x{30C}")); 75ok($objSk->lt("s\x{30C}", "S\x{30C}")); 76ok($objSk->lt("z\x{30C}", "Z\x{30C}")); 77ok($objSk->lt("ch", "cH")); 78ok($objSk->lt("cH", "Ch")); 79ok($objSk->lt("Ch", "CH")); 80 81# 34 82 83ok($objSk->eq("a\x{308}", _pack_U(0xE4))); 84ok($objSk->eq("A\x{308}", _pack_U(0xC4))); 85ok($objSk->eq("a\x{308}\x{304}", "\x{1DF}")); 86ok($objSk->eq("A\x{308}\x{304}", "\x{1DE}")); 87ok($objSk->eq("c\x{30C}", "\x{10D}")); 88ok($objSk->eq("C\x{30C}", "\x{10C}")); 89ok($objSk->eq("o\x{302}", _pack_U(0xF4))); 90ok($objSk->eq("O\x{302}", _pack_U(0xD4))); 91ok($objSk->eq("r\x{30C}", "\x{159}")); 92ok($objSk->eq("R\x{30C}", "\x{158}")); 93ok($objSk->eq("s\x{30C}", "\x{161}")); 94ok($objSk->eq("S\x{30C}", "\x{160}")); 95ok($objSk->eq("z\x{30C}", "\x{17E}")); 96ok($objSk->eq("Z\x{30C}", "\x{17D}")); 97 98# 48 99 100ok($objSk->eq("o\x{302}\x{300}", "\x{1ED3}")); 101ok($objSk->eq("O\x{302}\x{300}", "\x{1ED2}")); 102ok($objSk->eq("o\x{302}\x{301}", "\x{1ED1}")); 103ok($objSk->eq("O\x{302}\x{301}", "\x{1ED0}")); 104ok($objSk->eq("o\x{302}\x{303}", "\x{1ED7}")); 105ok($objSk->eq("O\x{302}\x{303}", "\x{1ED6}")); 106ok($objSk->eq("o\x{302}\x{309}", "\x{1ED5}")); 107ok($objSk->eq("O\x{302}\x{309}", "\x{1ED4}")); 108ok($objSk->eq("o\x{302}\x{323}", "\x{1ED9}")); 109ok($objSk->eq("O\x{302}\x{323}", "\x{1ED8}")); 110 111# 58 112