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..87\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 $objDsb = Unicode::Collate::Locale-> 37 new(locale => 'DSB', normalization => undef); 38 39ok($objDsb->getlocale, 'dsb'); 40 41$objDsb->change(level => 1); 42 43my @prim = ( 44 "cz", "c\x{30C}", "c\x{301}", "d", # 5 45 "ez", "e\x{30C}", "f", # 8 46 "hz", "ch", "i", # 11 47 "kz", "l\x{335}", "l", # 14 48 "nz", "n\x{301}", "o", # 17 49 "rz", "r\x{301}", "s", # 20 50 "sz", "s\x{30C}", "s\x{301}", "t", # 24 51 "zz", "z\x{30C}", "z\x{301}", "\x{292}" # EZH 52); 53 54for (my $i = 1; $i < @prim; $i++) { 55 ok($objDsb->lt($prim[$i-1], $prim[$i])); 56} 57 58# 28 59 60$objDsb->change(level => 2); 61 62ok($objDsb->eq("c\x{30C}", "C\x{30C}")); 63ok($objDsb->eq("c\x{301}", "C\x{301}")); 64ok($objDsb->eq("e\x{30C}", "E\x{30C}")); 65ok($objDsb->eq("l\x{335}", "L\x{335}")); 66ok($objDsb->eq("n\x{301}", "N\x{301}")); 67ok($objDsb->eq("r\x{301}", "R\x{301}")); 68ok($objDsb->eq("s\x{30C}", "S\x{30C}")); 69ok($objDsb->eq("s\x{301}", "S\x{301}")); 70ok($objDsb->eq("z\x{30C}", "Z\x{30C}")); 71ok($objDsb->eq("z\x{301}", "Z\x{301}")); 72 73ok($objDsb->eq("ch", "cH")); 74ok($objDsb->eq("cH", "Ch")); 75ok($objDsb->eq("Ch", "CH")); 76 77# 41 78 79$objDsb->change(level => 3); 80 81ok($objDsb->lt("c\x{30C}", "C\x{30C}")); 82ok($objDsb->lt("c\x{301}", "C\x{301}")); 83ok($objDsb->lt("e\x{30C}", "E\x{30C}")); 84ok($objDsb->lt("l\x{335}", "L\x{335}")); 85ok($objDsb->lt("n\x{301}", "N\x{301}")); 86ok($objDsb->lt("r\x{301}", "R\x{301}")); 87ok($objDsb->lt("s\x{30C}", "S\x{30C}")); 88ok($objDsb->lt("s\x{301}", "S\x{301}")); 89ok($objDsb->lt("z\x{30C}", "Z\x{30C}")); 90ok($objDsb->lt("z\x{301}", "Z\x{301}")); 91 92ok($objDsb->lt("ch", "cH")); 93ok($objDsb->lt("cH", "Ch")); 94ok($objDsb->lt("Ch", "CH")); 95 96# 54 97 98ok($objDsb->eq("c\x{30C}", "\x{10D}")); 99ok($objDsb->eq("C\x{30C}", "\x{10C}")); 100ok($objDsb->eq("c\x{301}", "\x{107}")); 101ok($objDsb->eq("c\x{341}", "\x{107}")); 102ok($objDsb->eq("C\x{301}", "\x{106}")); 103ok($objDsb->eq("C\x{341}", "\x{106}")); 104ok($objDsb->eq("e\x{30C}", "\x{11B}")); 105ok($objDsb->eq("E\x{30C}", "\x{11A}")); 106ok($objDsb->eq("l\x{335}", "\x{142}")); 107ok($objDsb->eq("L\x{335}", "\x{141}")); 108ok($objDsb->eq("n\x{301}", "\x{144}")); 109ok($objDsb->eq("n\x{341}", "\x{144}")); 110ok($objDsb->eq("N\x{301}", "\x{143}")); 111ok($objDsb->eq("N\x{341}", "\x{143}")); 112ok($objDsb->eq("r\x{301}", "\x{155}")); 113ok($objDsb->eq("r\x{341}", "\x{155}")); 114ok($objDsb->eq("R\x{301}", "\x{154}")); 115ok($objDsb->eq("R\x{341}", "\x{154}")); 116ok($objDsb->eq("s\x{30C}", "\x{161}")); 117ok($objDsb->eq("S\x{30C}", "\x{160}")); 118ok($objDsb->eq("s\x{301}", "\x{15B}")); 119ok($objDsb->eq("s\x{341}", "\x{15B}")); 120ok($objDsb->eq("S\x{301}", "\x{15A}")); 121ok($objDsb->eq("S\x{341}", "\x{15A}")); 122ok($objDsb->eq("z\x{30C}", "\x{17E}")); 123ok($objDsb->eq("Z\x{30C}", "\x{17D}")); 124ok($objDsb->eq("z\x{301}", "\x{17A}")); 125ok($objDsb->eq("z\x{341}", "\x{17A}")); 126ok($objDsb->eq("Z\x{301}", "\x{179}")); 127ok($objDsb->eq("Z\x{341}", "\x{179}")); 128 129# 84 130 131$objDsb->change(upper_before_lower => 1); 132 133ok($objDsb->gt("ch", "cH")); 134ok($objDsb->gt("cH", "Ch")); 135ok($objDsb->gt("Ch", "CH")); 136 137# 87 138