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..71\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 $objRo = Unicode::Collate::Locale-> 32 new(locale => 'RO', normalization => undef); 33 34ok($objRo->getlocale, 'ro'); 35 36$objRo->change(level => 1); 37 38ok($objRo->lt("a", "a\x{306}")); 39ok($objRo->lt("a\x{306}", "a\x{302}")); 40ok($objRo->gt("b", "a\x{302}")); 41ok($objRo->eq("d", "d\x{335}")); # not tailored in CLDR 2.0 42ok($objRo->gt("e", "d\x{335}")); 43ok($objRo->lt("i", "i\x{302}")); 44ok($objRo->gt("j", "i\x{302}")); 45ok($objRo->lt("s", "s\x{327}")); 46ok($objRo->gt("t", "s\x{327}")); 47ok($objRo->lt("t", "t\x{327}")); 48ok($objRo->gt("u", "t\x{327}")); 49ok($objRo->eq("z", "z\x{307}")); # not tailored in CLDR 2.0 50ok($objRo->lt("z\x{307}", "\x{292}")); # U+0292 EZH 51 52# 15 53 54$objRo->change(level => 2); 55 56ok($objRo->eq("a\x{306}", "A\x{306}")); 57ok($objRo->eq("a\x{302}", "A\x{302}")); 58ok($objRo->eq("d\x{335}", "D\x{335}")); 59ok($objRo->eq("i\x{302}", "I\x{302}")); 60ok($objRo->eq("s\x{327}", "S\x{327}")); 61ok($objRo->eq("t\x{327}", "T\x{327}")); 62ok($objRo->eq("z\x{307}", "Z\x{307}")); 63 64# 22 65 66$objRo->change(level => 3); 67 68ok($objRo->lt("a\x{306}", "A\x{306}")); 69ok($objRo->lt("a\x{302}", "A\x{302}")); 70ok($objRo->lt("d\x{335}", "D\x{335}")); 71ok($objRo->lt("i\x{302}", "I\x{302}")); 72ok($objRo->lt("s\x{327}", "S\x{327}")); 73ok($objRo->lt("t\x{327}", "T\x{327}")); 74ok($objRo->lt("z\x{307}", "Z\x{307}")); 75 76ok($objRo->eq("s\x{327}", "s\x{326}")); 77ok($objRo->eq("S\x{327}", "S\x{326}")); 78ok($objRo->eq("t\x{327}", "t\x{326}")); 79ok($objRo->eq("T\x{327}", "T\x{326}")); 80 81# 33 82 83ok($objRo->eq("a\x{306}", "\x{103}")); 84ok($objRo->eq("A\x{306}", "\x{102}")); 85ok($objRo->eq("a\x{302}", _pack_U(0xE2))); 86ok($objRo->eq("A\x{302}", _pack_U(0xC2))); 87ok($objRo->eq("d\x{335}", "\x{111}")); 88ok($objRo->eq("D\x{335}", "\x{110}")); 89ok($objRo->eq("i\x{302}", _pack_U(0xEE))); 90ok($objRo->eq("I\x{302}", _pack_U(0xCE))); 91ok($objRo->eq("s\x{327}", "\x{15F}")); 92ok($objRo->eq("s\x{326}", "\x{219}")); 93ok($objRo->eq("S\x{327}", "\x{15E}")); 94ok($objRo->eq("S\x{326}", "\x{218}")); 95ok($objRo->eq("t\x{327}", "\x{163}")); 96ok($objRo->eq("t\x{326}", "\x{21B}")); 97ok($objRo->eq("T\x{327}", "\x{162}")); 98ok($objRo->eq("T\x{326}", "\x{21A}")); 99ok($objRo->eq("z\x{307}", "\x{17C}")); 100ok($objRo->eq("Z\x{307}", "\x{17B}")); 101 102# 51 103 104ok($objRo->eq("a\x{306}\x{300}", "\x{1EB1}")); 105ok($objRo->eq("A\x{306}\x{300}", "\x{1EB0}")); 106ok($objRo->eq("a\x{306}\x{301}", "\x{1EAF}")); 107ok($objRo->eq("A\x{306}\x{301}", "\x{1EAE}")); 108ok($objRo->eq("a\x{306}\x{303}", "\x{1EB5}")); 109ok($objRo->eq("A\x{306}\x{303}", "\x{1EB4}")); 110ok($objRo->eq("a\x{306}\x{309}", "\x{1EB3}")); 111ok($objRo->eq("A\x{306}\x{309}", "\x{1EB2}")); 112ok($objRo->eq("a\x{306}\x{323}", "\x{1EB7}")); 113ok($objRo->eq("A\x{306}\x{323}", "\x{1EB6}")); 114 115ok($objRo->eq("a\x{302}\x{300}", "\x{1EA7}")); 116ok($objRo->eq("A\x{302}\x{300}", "\x{1EA6}")); 117ok($objRo->eq("a\x{302}\x{301}", "\x{1EA5}")); 118ok($objRo->eq("A\x{302}\x{301}", "\x{1EA4}")); 119ok($objRo->eq("a\x{302}\x{303}", "\x{1EAB}")); 120ok($objRo->eq("A\x{302}\x{303}", "\x{1EAA}")); 121ok($objRo->eq("a\x{302}\x{309}", "\x{1EA9}")); 122ok($objRo->eq("A\x{302}\x{309}", "\x{1EA8}")); 123ok($objRo->eq("a\x{302}\x{323}", "\x{1EAD}")); 124ok($objRo->eq("A\x{302}\x{323}", "\x{1EAC}")); 125 126# 71 127