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