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..235\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 $objHu = Unicode::Collate::Locale-> 37 new(locale => 'HU', normalization => undef); 38 39ok($objHu->getlocale, 'hu'); 40 41$objHu->change(level => 1); 42 43ok($objHu->lt("c", "cs")); 44ok($objHu->lt("cz","cs")); 45ok($objHu->gt("d", "cs")); 46ok($objHu->lt("d", "dz")); 47ok($objHu->gt("dz","d\x{292}")); 48ok($objHu->lt("dz", "dzs")); 49ok($objHu->lt("dzz","dzs")); 50ok($objHu->gt("e", "dzs")); 51ok($objHu->lt("g", "gy")); 52ok($objHu->lt("gz","gy")); 53ok($objHu->gt("h", "gy")); 54ok($objHu->lt("l", "ly")); 55ok($objHu->lt("lz","ly")); 56ok($objHu->gt("m", "ly")); 57ok($objHu->lt("n", "ny")); 58ok($objHu->lt("nz","ny")); 59ok($objHu->gt("o", "ny")); 60ok($objHu->lt("s", "sz")); 61ok($objHu->gt("sz","s\x{292}")); 62ok($objHu->gt("t", "sz")); 63ok($objHu->lt("t", "ty")); 64ok($objHu->lt("tz","ty")); 65ok($objHu->gt("u", "ty")); 66ok($objHu->lt("z", "zs")); 67ok($objHu->lt("zz", "zs")); 68ok($objHu->lt("zs", "\x{292}")); 69 70# 28 71 72ok($objHu->lt("o", "o\x{308}")); 73ok($objHu->gt("p", "o\x{308}")); 74ok($objHu->lt("u", "u\x{308}")); 75ok($objHu->gt("v", "u\x{308}")); 76 77ok($objHu->eq("o\x{308}", "o\x{30B}")); 78ok($objHu->eq("u\x{308}", "u\x{30B}")); 79 80# 34 81 82$objHu->change(level => 2); 83 84ok($objHu->eq("cs", "cS")); 85ok($objHu->eq("cS", "Cs")); 86ok($objHu->eq("Cs", "CS")); 87ok($objHu->eq("dz", "dZ")); 88ok($objHu->eq("dZ", "Dz")); 89ok($objHu->eq("Dz", "DZ")); 90ok($objHu->eq("dzs", "dzS")); 91ok($objHu->eq("dzS", "dZs")); 92ok($objHu->eq("dZs", "dZS")); 93ok($objHu->eq("dZS", "Dzs")); 94ok($objHu->eq("Dzs", "DzS")); 95ok($objHu->eq("DzS", "DZs")); 96ok($objHu->eq("DZs", "DZS")); 97ok($objHu->eq("gy", "gY")); 98ok($objHu->eq("gY", "Gy")); 99ok($objHu->eq("Gy", "GY")); 100ok($objHu->eq("ly", "lY")); 101ok($objHu->eq("lY", "Ly")); 102ok($objHu->eq("Ly", "LY")); 103ok($objHu->eq("ny", "nY")); 104ok($objHu->eq("nY", "Ny")); 105ok($objHu->eq("Ny", "NY")); 106ok($objHu->eq("sz", "sZ")); 107ok($objHu->eq("sZ", "Sz")); 108ok($objHu->eq("Sz", "SZ")); 109ok($objHu->eq("ty", "tY")); 110ok($objHu->eq("tY", "Ty")); 111ok($objHu->eq("Ty", "TY")); 112ok($objHu->eq("zs", "zS")); 113ok($objHu->eq("zS", "Zs")); 114ok($objHu->eq("Zs", "ZS")); 115 116# 65 117 118ok($objHu->lt("o\x{308}", "o\x{30B}")); 119ok($objHu->lt("u\x{308}", "u\x{30B}")); 120 121ok($objHu->eq("o\x{308}", "O\x{308}")); 122ok($objHu->eq("o\x{30B}", "O\x{30B}")); 123ok($objHu->eq("u\x{308}", "U\x{308}")); 124ok($objHu->eq("u\x{30B}", "U\x{30B}")); 125 126# 71 127 128$objHu->change(level => 3); 129 130ok($objHu->lt("cs", "cS")); 131ok($objHu->lt("cS", "Cs")); 132ok($objHu->lt("Cs", "CS")); 133ok($objHu->lt("dz", "dZ")); 134ok($objHu->lt("dZ", "Dz")); 135ok($objHu->lt("Dz", "DZ")); 136ok($objHu->lt("dzs", "dzS")); 137ok($objHu->lt("dzS", "dZs")); 138ok($objHu->lt("dZs", "dZS")); 139ok($objHu->lt("dZS", "Dzs")); 140ok($objHu->lt("Dzs", "DzS")); 141ok($objHu->lt("DzS", "DZs")); 142ok($objHu->lt("DZs", "DZS")); 143ok($objHu->lt("gy", "gY")); 144ok($objHu->lt("gY", "Gy")); 145ok($objHu->lt("Gy", "GY")); 146ok($objHu->lt("ly", "lY")); 147ok($objHu->lt("lY", "Ly")); 148ok($objHu->lt("Ly", "LY")); 149ok($objHu->lt("ny", "nY")); 150ok($objHu->lt("nY", "Ny")); 151ok($objHu->lt("Ny", "NY")); 152ok($objHu->lt("sz", "sZ")); 153ok($objHu->lt("sZ", "Sz")); 154ok($objHu->lt("Sz", "SZ")); 155ok($objHu->lt("ty", "tY")); 156ok($objHu->lt("tY", "Ty")); 157ok($objHu->lt("Ty", "TY")); 158ok($objHu->lt("zs", "zS")); 159ok($objHu->lt("zS", "Zs")); 160ok($objHu->lt("Zs", "ZS")); 161 162# 102 163 164ok($objHu->lt("o\x{308}", "O\x{308}")); 165ok($objHu->lt("o\x{30B}", "O\x{30B}")); 166ok($objHu->lt("u\x{308}", "U\x{308}")); 167ok($objHu->lt("u\x{30B}", "U\x{30B}")); 168 169ok($objHu->eq("o\x{308}", pack('U', 0xF6))); 170ok($objHu->eq("O\x{308}", pack('U', 0xD6))); 171ok($objHu->eq("o\x{30B}", "\x{151}")); 172ok($objHu->eq("O\x{30B}", "\x{150}")); 173ok($objHu->eq("u\x{308}", pack('U', 0xFC))); 174ok($objHu->eq("U\x{308}", pack('U', 0xDC))); 175ok($objHu->eq("u\x{30B}", "\x{171}")); 176ok($objHu->eq("U\x{30B}", "\x{170}")); 177 178# 114 179 180ok($objHu->eq("o\x{308}\x{304}", "\x{22B}")); 181ok($objHu->eq("O\x{308}\x{304}", "\x{22A}")); 182ok($objHu->eq("u\x{308}\x{300}", "\x{1DC}")); 183ok($objHu->eq("U\x{308}\x{300}", "\x{1DB}")); 184ok($objHu->eq("u\x{308}\x{301}", "\x{1D8}")); 185ok($objHu->eq("U\x{308}\x{301}", "\x{1D7}")); 186ok($objHu->eq("u\x{308}\x{304}", "\x{1D6}")); 187ok($objHu->eq("U\x{308}\x{304}", "\x{1D5}")); 188ok($objHu->eq("u\x{308}\x{30C}", "\x{1DA}")); 189ok($objHu->eq("U\x{308}\x{30C}", "\x{1D9}")); 190 191# 124 192 193ok($objHu->eq("ccs", "cscs")); 194ok($objHu->eq("ccS", "cscS")); 195ok($objHu->eq("cCs", "csCs")); 196ok($objHu->eq("cCS", "csCS")); 197ok($objHu->eq("Ccs", "CScs")); 198ok($objHu->eq("CcS", "CScS")); 199ok($objHu->eq("CCs", "CSCs")); 200ok($objHu->eq("CCS", "CSCS")); 201ok($objHu->eq("ddz", "dzdz")); 202ok($objHu->eq("ddZ", "dzdZ")); 203ok($objHu->eq("dDz", "dzDz")); 204ok($objHu->eq("dDZ", "dzDZ")); 205ok($objHu->eq("Ddz", "DZdz")); 206ok($objHu->eq("DdZ", "DZdZ")); 207ok($objHu->eq("DDz", "DZDz")); 208ok($objHu->eq("DDZ", "DZDZ")); 209ok($objHu->eq("ddzs", "dzsdzs")); 210ok($objHu->eq("ddzS", "dzsdzS")); 211ok($objHu->eq("ddZs", "dzsdZs")); 212ok($objHu->eq("ddZS", "dzsdZS")); 213ok($objHu->eq("dDzs", "dzsDzs")); 214ok($objHu->eq("dDzS", "dzsDzS")); 215ok($objHu->eq("dDZs", "dzsDZs")); 216ok($objHu->eq("dDZS", "dzsDZS")); 217ok($objHu->eq("Ddzs", "DZSdzs")); 218ok($objHu->eq("DdzS", "DZSdzS")); 219ok($objHu->eq("DdZs", "DZSdZs")); 220ok($objHu->eq("DdZS", "DZSdZS")); 221ok($objHu->eq("DDzs", "DZSDzs")); 222ok($objHu->eq("DDzS", "DZSDzS")); 223ok($objHu->eq("DDZs", "DZSDZs")); 224ok($objHu->eq("DDZS", "DZSDZS")); 225ok($objHu->eq("ggy", "gygy")); 226ok($objHu->eq("ggY", "gygY")); 227ok($objHu->eq("gGy", "gyGy")); 228ok($objHu->eq("gGY", "gyGY")); 229ok($objHu->eq("Ggy", "GYgy")); 230ok($objHu->eq("GgY", "GYgY")); 231ok($objHu->eq("GGy", "GYGy")); 232ok($objHu->eq("GGY", "GYGY")); 233ok($objHu->eq("lly", "lyly")); 234ok($objHu->eq("llY", "lylY")); 235ok($objHu->eq("lLy", "lyLy")); 236ok($objHu->eq("lLY", "lyLY")); 237ok($objHu->eq("Lly", "LYly")); 238ok($objHu->eq("LlY", "LYlY")); 239ok($objHu->eq("LLy", "LYLy")); 240ok($objHu->eq("LLY", "LYLY")); 241ok($objHu->eq("nny", "nyny")); 242ok($objHu->eq("nnY", "nynY")); 243ok($objHu->eq("nNy", "nyNy")); 244ok($objHu->eq("nNY", "nyNY")); 245ok($objHu->eq("Nny", "NYny")); 246ok($objHu->eq("NnY", "NYnY")); 247ok($objHu->eq("NNy", "NYNy")); 248ok($objHu->eq("NNY", "NYNY")); 249ok($objHu->eq("ssz", "szsz")); 250ok($objHu->eq("ssZ", "szsZ")); 251ok($objHu->eq("sSz", "szSz")); 252ok($objHu->eq("sSZ", "szSZ")); 253ok($objHu->eq("Ssz", "SZsz")); 254ok($objHu->eq("SsZ", "SZsZ")); 255ok($objHu->eq("SSz", "SZSz")); 256ok($objHu->eq("SSZ", "SZSZ")); 257ok($objHu->eq("tty", "tyty")); 258ok($objHu->eq("ttY", "tytY")); 259ok($objHu->eq("tTy", "tyTy")); 260ok($objHu->eq("tTY", "tyTY")); 261ok($objHu->eq("Tty", "TYty")); 262ok($objHu->eq("TtY", "TYtY")); 263ok($objHu->eq("TTy", "TYTy")); 264ok($objHu->eq("TTY", "TYTY")); 265ok($objHu->eq("zzs", "zszs")); 266ok($objHu->eq("zzS", "zszS")); 267ok($objHu->eq("zZs", "zsZs")); 268ok($objHu->eq("zZS", "zsZS")); 269ok($objHu->eq("Zzs", "ZSzs")); 270ok($objHu->eq("ZzS", "ZSzS")); 271ok($objHu->eq("ZZs", "ZSZs")); 272ok($objHu->eq("ZZS", "ZSZS")); 273 274# 204 275 276$objHu->change(upper_before_lower => 1); 277 278ok($objHu->gt("cs", "cS")); 279ok($objHu->gt("cS", "Cs")); 280ok($objHu->gt("Cs", "CS")); 281ok($objHu->gt("dz", "dZ")); 282ok($objHu->gt("dZ", "Dz")); 283ok($objHu->gt("Dz", "DZ")); 284ok($objHu->gt("dzs", "dzS")); 285ok($objHu->gt("dzS", "dZs")); 286ok($objHu->gt("dZs", "dZS")); 287ok($objHu->gt("dZS", "Dzs")); 288ok($objHu->gt("Dzs", "DzS")); 289ok($objHu->gt("DzS", "DZs")); 290ok($objHu->gt("DZs", "DZS")); 291ok($objHu->gt("gy", "gY")); 292ok($objHu->gt("gY", "Gy")); 293ok($objHu->gt("Gy", "GY")); 294ok($objHu->gt("ly", "lY")); 295ok($objHu->gt("lY", "Ly")); 296ok($objHu->gt("Ly", "LY")); 297ok($objHu->gt("ny", "nY")); 298ok($objHu->gt("nY", "Ny")); 299ok($objHu->gt("Ny", "NY")); 300ok($objHu->gt("sz", "sZ")); 301ok($objHu->gt("sZ", "Sz")); 302ok($objHu->gt("Sz", "SZ")); 303ok($objHu->gt("ty", "tY")); 304ok($objHu->gt("tY", "Ty")); 305ok($objHu->gt("Ty", "TY")); 306ok($objHu->gt("zs", "zS")); 307ok($objHu->gt("zS", "Zs")); 308ok($objHu->gt("Zs", "ZS")); 309 310# 235 311