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..217\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 $objSe = Unicode::Collate::Locale-> 32 new(locale => 'SE', normalization => undef); 33 34my $eth = _pack_U(0xF0); 35my $ETH = _pack_U(0xD0); 36my $thrn = _pack_U(0xFE); 37my $THRN = _pack_U(0xDE); 38my $ae = _pack_U(0xE6); 39my $AE = _pack_U(0xC6); 40 41ok($objSe->getlocale, 'se'); 42 43$objSe->change(level => 1); 44 45ok($objSe->lt("a", "a\x{301}")); 46ok($objSe->gt("b", "a\x{301}")); 47ok($objSe->lt("c", "c\x{30C}")); 48ok($objSe->lt("c\x{30C}", "\x{292}")); 49ok($objSe->lt( "\x{292}", "\x{1EF}")); 50ok($objSe->gt("d", "\x{1EF}")); 51ok($objSe->lt("d", "d\x{335}")); 52ok($objSe->gt("e", "d\x{335}")); 53ok($objSe->lt("g", "g\x{30C}")); 54ok($objSe->lt("g\x{30C}", "\x{1E5}")); 55ok($objSe->gt("h", "\x{1E5}")); 56ok($objSe->lt("k", "k\x{30C}")); 57ok($objSe->gt("l", "k\x{30C}")); 58ok($objSe->lt("n", "\x{14B}")); 59ok($objSe->gt("o", "\x{14B}")); 60ok($objSe->lt("s", "s\x{30C}")); 61ok($objSe->gt("t", "s\x{30C}")); 62ok($objSe->lt("t", "\x{167}")); 63ok($objSe->gt("u", "\x{167}")); 64ok($objSe->lt("z", "z\x{30C}")); 65ok($objSe->lt("z\x{30C}", "o\x{338}")); 66ok($objSe->lt("o\x{338}", $ae)); 67ok($objSe->lt($ae, "a\x{30A}")); 68ok($objSe->lt("a\x{30A}", "a\x{308}")); 69ok($objSe->lt("a\x{308}", "o\x{308}")); 70ok($objSe->lt("o\x{308}", "\x{1C0}")); 71 72# 28 73 74ok($objSe->eq("d\x{335}", $eth)); 75ok($objSe->eq( "\x{14B}", "n\x{301}")); 76ok($objSe->eq("n\x{301}", "n\x{303}")); 77ok($objSe->eq( "\x{167}", $thrn)); 78ok($objSe->eq("y", "u\x{308}")); 79ok($objSe->eq("u\x{308}", "u\x{30B}")); 80ok($objSe->eq("o\x{338}", "\x{153}")); 81ok($objSe->eq("a\x{30A}", "a\x{307}")); 82ok($objSe->eq("a\x{308}", "a\x{303}")); 83ok($objSe->eq("o\x{308}", "o\x{30B}")); 84ok($objSe->eq("o\x{30B}", "o\x{303}")); 85ok($objSe->eq("o\x{303}", "o\x{302}")); 86ok($objSe->eq("o\x{302}", "o\x{328}")); 87 88# 41 89 90$objSe->change(level => 2); 91 92ok($objSe->lt("d\x{335}", $eth)); 93ok($objSe->lt( "\x{14B}", "n\x{301}")); 94ok($objSe->lt("n\x{301}", "n\x{303}")); 95ok($objSe->lt( "\x{167}", $thrn)); 96ok($objSe->lt("y", "u\x{308}")); 97ok($objSe->lt("u\x{308}", "u\x{30B}")); 98ok($objSe->lt("o\x{338}", "\x{153}")); 99ok($objSe->lt("a\x{30A}", "a\x{307}")); 100ok($objSe->lt("a\x{308}", "a\x{303}")); 101ok($objSe->lt("o\x{308}", "o\x{30B}")); 102ok($objSe->lt("o\x{30B}", "o\x{303}")); 103ok($objSe->lt("o\x{303}", "o\x{302}")); 104ok($objSe->lt("o\x{302}", "o\x{328}")); 105 106# 54 107 108ok($objSe->eq("a\x{301}", "A\x{301}")); 109ok($objSe->eq("c\x{30C}", "C\x{30C}")); 110ok($objSe->eq( "\x{292}", "\x{1B7}")); 111ok($objSe->eq( "\x{1EF}", "\x{1EE}")); 112ok($objSe->eq("d\x{335}", "D\x{335}")); 113ok($objSe->eq($eth, $ETH)); 114ok($objSe->eq("g\x{30C}", "G\x{30C}")); 115ok($objSe->eq( "\x{1E5}", "\x{1E4}")); 116ok($objSe->eq("k\x{30C}", "K\x{30C}")); 117ok($objSe->eq( "\x{14B}", "\x{14A}")); 118ok($objSe->eq("n\x{301}", "N\x{301}")); 119ok($objSe->eq("n\x{303}", "N\x{303}")); 120ok($objSe->eq("s\x{30C}", "S\x{30C}")); 121ok($objSe->eq( "\x{167}", "\x{166}")); 122ok($objSe->eq($thrn, $THRN)); 123ok($objSe->eq("u\x{308}", "U\x{308}")); 124ok($objSe->eq("u\x{30B}", "U\x{30B}")); 125ok($objSe->eq("z\x{30C}", "Z\x{30C}")); 126ok($objSe->eq("o\x{338}", "O\x{338}")); 127ok($objSe->eq( "\x{153}", "\x{152}")); 128ok($objSe->eq($ae, $AE)); 129ok($objSe->eq($AE, "\x{1D2D}")); 130ok($objSe->eq("a\x{30A}", "A\x{30A}")); 131ok($objSe->eq("a\x{307}", "A\x{307}")); 132ok($objSe->eq("a\x{308}", "A\x{308}")); 133ok($objSe->eq("a\x{303}", "A\x{303}")); 134ok($objSe->eq("o\x{308}", "O\x{308}")); 135ok($objSe->eq("o\x{30B}", "O\x{30B}")); 136ok($objSe->eq("o\x{303}", "O\x{303}")); 137ok($objSe->eq("o\x{302}", "O\x{302}")); 138ok($objSe->eq("o\x{328}", "O\x{328}")); 139 140# 85 141 142$objSe->change(level => 3); 143 144ok($objSe->lt("a\x{301}", "A\x{301}")); 145ok($objSe->lt("c\x{30C}", "C\x{30C}")); 146ok($objSe->lt( "\x{292}", "\x{1B7}")); 147ok($objSe->lt( "\x{1EF}", "\x{1EE}")); 148ok($objSe->lt("d\x{335}", "D\x{335}")); 149ok($objSe->lt($eth, $ETH)); 150ok($objSe->lt("g\x{30C}", "G\x{30C}")); 151ok($objSe->lt( "\x{1E5}", "\x{1E4}")); 152ok($objSe->lt("k\x{30C}", "K\x{30C}")); 153ok($objSe->lt( "\x{14B}", "\x{14A}")); 154ok($objSe->lt("n\x{301}", "N\x{301}")); 155ok($objSe->lt("n\x{303}", "N\x{303}")); 156ok($objSe->lt("s\x{30C}", "S\x{30C}")); 157ok($objSe->lt( "\x{167}", "\x{166}")); 158ok($objSe->lt($thrn, $THRN)); 159ok($objSe->lt("u\x{308}", "U\x{308}")); 160ok($objSe->lt("u\x{30B}", "U\x{30B}")); 161ok($objSe->lt("z\x{30C}", "Z\x{30C}")); 162ok($objSe->lt("o\x{338}", "O\x{338}")); 163ok($objSe->lt( "\x{153}", "\x{152}")); 164ok($objSe->lt($ae, $AE)); 165ok($objSe->lt($AE, "\x{1D2D}")); 166ok($objSe->lt("a\x{30A}", "A\x{30A}")); 167ok($objSe->lt("a\x{307}", "A\x{307}")); 168ok($objSe->lt("a\x{308}", "A\x{308}")); 169ok($objSe->lt("a\x{303}", "A\x{303}")); 170ok($objSe->lt("o\x{308}", "O\x{308}")); 171ok($objSe->lt("o\x{30B}", "O\x{30B}")); 172ok($objSe->lt("o\x{303}", "O\x{303}")); 173ok($objSe->lt("o\x{302}", "O\x{302}")); 174ok($objSe->lt("o\x{328}", "O\x{328}")); 175 176# 116 177 178ok($objSe->eq("a\x{301}", _pack_U(0xE1))); 179ok($objSe->eq("a\x{341}", _pack_U(0xE1))); 180ok($objSe->eq("A\x{301}", _pack_U(0xC1))); 181ok($objSe->eq("A\x{341}", _pack_U(0xC1))); 182ok($objSe->eq("c\x{30C}", "\x{10D}")); 183ok($objSe->eq("C\x{30C}", "\x{10C}")); 184ok($objSe->eq("\x{1EF}", "\x{292}\x{30C}")); 185ok($objSe->eq("\x{1EE}", "\x{1B7}\x{30C}")); 186ok($objSe->eq("d\x{335}", "\x{111}")); 187ok($objSe->eq("D\x{335}", "\x{110}")); 188ok($objSe->eq("g\x{30C}", "\x{1E7}")); 189ok($objSe->eq("G\x{30C}", "\x{1E6}")); 190ok($objSe->eq("k\x{30C}", "\x{1E9}")); 191ok($objSe->eq("K\x{30C}", "\x{1E8}")); 192ok($objSe->eq("n\x{301}", "\x{144}")); 193ok($objSe->eq("n\x{341}", "\x{144}")); 194ok($objSe->eq("N\x{301}", "\x{143}")); 195ok($objSe->eq("N\x{341}", "\x{143}")); 196ok($objSe->eq("n\x{303}", _pack_U(0xF1))); 197ok($objSe->eq("N\x{303}", _pack_U(0xD1))); 198ok($objSe->eq("s\x{30C}", "\x{161}")); 199ok($objSe->eq("S\x{30C}", "\x{160}")); 200ok($objSe->eq("u\x{308}", _pack_U(0xFC))); 201ok($objSe->eq("U\x{308}", _pack_U(0xDC))); 202ok($objSe->eq("u\x{30B}", "\x{171}")); 203ok($objSe->eq("U\x{30B}", "\x{170}")); 204 205# 142 206 207ok($objSe->eq("z\x{30C}", "\x{17E}")); 208ok($objSe->eq("Z\x{30C}", "\x{17D}")); 209ok($objSe->eq("o\x{338}", _pack_U(0xF8))); 210ok($objSe->eq("O\x{338}", _pack_U(0xD8))); 211ok($objSe->eq("a\x{30A}", _pack_U(0xE5))); 212ok($objSe->eq("A\x{30A}", _pack_U(0xC5))); 213ok($objSe->eq("a\x{307}", "\x{227}")); 214ok($objSe->eq("A\x{307}", "\x{226}")); 215ok($objSe->eq("a\x{308}", _pack_U(0xE4))); 216ok($objSe->eq("A\x{308}", _pack_U(0xC4))); 217ok($objSe->eq("a\x{303}", _pack_U(0xE3))); 218ok($objSe->eq("A\x{303}", _pack_U(0xC3))); 219ok($objSe->eq("o\x{308}", _pack_U(0xF6))); 220ok($objSe->eq("O\x{308}", _pack_U(0xD6))); 221ok($objSe->eq("o\x{30B}", "\x{151}")); 222ok($objSe->eq("O\x{30B}", "\x{150}")); 223ok($objSe->eq("o\x{303}", _pack_U(0xF5))); 224ok($objSe->eq("O\x{303}", _pack_U(0xD5))); 225ok($objSe->eq("o\x{302}", _pack_U(0xF4))); 226ok($objSe->eq("O\x{302}", _pack_U(0xD4))); 227ok($objSe->eq("o\x{328}", "\x{1EB}")); 228ok($objSe->eq("O\x{328}", "\x{1EA}")); 229 230# 164 231 232ok($objSe->eq("u\x{308}\x{300}", "\x{1DC}")); 233ok($objSe->eq("U\x{308}\x{300}", "\x{1DB}")); 234ok($objSe->eq("u\x{308}\x{301}", "\x{1D8}")); 235ok($objSe->eq("U\x{308}\x{301}", "\x{1D7}")); 236ok($objSe->eq("u\x{308}\x{304}", "\x{1D6}")); 237ok($objSe->eq("U\x{308}\x{304}", "\x{1D5}")); 238ok($objSe->eq("u\x{308}\x{30C}", "\x{1DA}")); 239ok($objSe->eq("U\x{308}\x{30C}", "\x{1D9}")); 240ok($objSe->eq("o\x{338}\x{301}", "\x{1FF}")); 241ok($objSe->eq("O\x{338}\x{301}", "\x{1FE}")); 242 243ok($objSe->eq("\x{1FD}", "$ae\x{301}")); 244ok($objSe->eq("\x{1FC}", "$AE\x{301}")); 245ok($objSe->eq("\x{1E3}", "$ae\x{304}")); 246ok($objSe->eq("\x{1E2}", "$AE\x{304}")); 247ok($objSe->eq("A\x{30A}", "\x{212B}")); 248ok($objSe->eq("a\x{30A}\x{301}", "\x{1FB}")); 249ok($objSe->eq("A\x{30A}\x{301}", "\x{1FA}")); 250ok($objSe->eq("a\x{308}\x{304}", "\x{1DF}")); 251ok($objSe->eq("A\x{308}\x{304}", "\x{1DE}")); 252 253ok($objSe->eq("o\x{308}\x{304}", "\x{22B}")); 254ok($objSe->eq("O\x{308}\x{304}", "\x{22A}")); 255ok($objSe->eq("o\x{303}\x{301}", "\x{1E4D}")); 256ok($objSe->eq("O\x{303}\x{301}", "\x{1E4C}")); 257ok($objSe->eq("o\x{303}\x{304}", "\x{22D}")); 258ok($objSe->eq("O\x{303}\x{304}", "\x{22C}")); 259ok($objSe->eq("o\x{303}\x{308}", "\x{1E4F}")); 260ok($objSe->eq("O\x{303}\x{308}", "\x{1E4E}")); 261ok($objSe->eq("o\x{303}\x{31B}", "\x{1EE1}")); 262ok($objSe->eq("O\x{303}\x{31B}", "\x{1EE0}")); 263 264ok($objSe->eq("o\x{302}\x{300}", "\x{1ED3}")); 265ok($objSe->eq("O\x{302}\x{300}", "\x{1ED2}")); 266ok($objSe->eq("o\x{302}\x{301}", "\x{1ED1}")); 267ok($objSe->eq("O\x{302}\x{301}", "\x{1ED0}")); 268ok($objSe->eq("o\x{302}\x{303}", "\x{1ED7}")); 269ok($objSe->eq("O\x{302}\x{303}", "\x{1ED6}")); 270ok($objSe->eq("o\x{302}\x{309}", "\x{1ED5}")); 271ok($objSe->eq("O\x{302}\x{309}", "\x{1ED4}")); 272ok($objSe->eq("o\x{302}\x{323}", "\x{1ED9}")); 273ok($objSe->eq("O\x{302}\x{323}", "\x{1ED8}")); 274 275# 203 276 277$objSe->change(upper_before_lower => 1); 278 279ok($objSe->gt("z\x{30C}", "Z\x{30C}")); 280ok($objSe->gt("o\x{338}", "O\x{338}")); 281ok($objSe->gt( "\x{153}", "\x{152}")); 282ok($objSe->gt($ae, $AE)); 283ok($objSe->lt($AE, "\x{1D2D}")); 284ok($objSe->gt("a\x{30A}", "A\x{30A}")); 285ok($objSe->gt("a\x{307}", "A\x{307}")); 286ok($objSe->gt("a\x{308}", "A\x{308}")); 287ok($objSe->gt("a\x{303}", "A\x{303}")); 288ok($objSe->gt("o\x{308}", "O\x{308}")); 289ok($objSe->gt("o\x{30B}", "O\x{30B}")); 290ok($objSe->gt("o\x{303}", "O\x{303}")); 291ok($objSe->gt("o\x{302}", "O\x{302}")); 292ok($objSe->gt("o\x{328}", "O\x{328}")); 293 294# 217 295