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..110\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 $eth = _pack_U(0xF0); 32my $ETH = _pack_U(0xD0); 33my $thrn = _pack_U(0xFE); 34my $THRN = _pack_U(0xDE); 35my $ae = _pack_U(0xE6); 36my $AE = _pack_U(0xC6); 37my $auml = _pack_U(0xE4); 38my $Auml = _pack_U(0xC4); 39my $ouml = _pack_U(0xF6); 40my $Ouml = _pack_U(0xD6); 41my $ostk = _pack_U(0xF8); 42my $Ostk = _pack_U(0xD8); 43my $arng = _pack_U(0xE5); 44my $Arng = _pack_U(0xC5); 45 46my $objIs = Unicode::Collate::Locale-> 47 new(locale => 'IS', normalization => undef); 48 49ok($objIs->getlocale, 'is'); 50 51$objIs->change(level => 1); 52 53ok($objIs->lt('a', "a\x{301}")); 54ok($objIs->gt('b', "a\x{301}")); 55ok($objIs->lt('d', $eth)); 56ok($objIs->gt('e', $eth)); 57ok($objIs->lt('e', "e\x{301}")); 58ok($objIs->gt('f', "e\x{301}")); 59ok($objIs->lt('i', "i\x{301}")); 60ok($objIs->gt('j', "i\x{301}")); 61ok($objIs->lt('o', "o\x{301}")); 62ok($objIs->gt('p', "o\x{301}")); 63ok($objIs->lt('u', "u\x{301}")); 64ok($objIs->gt('v', "u\x{301}")); 65ok($objIs->lt('y', "y\x{301}")); 66ok($objIs->gt('z', "y\x{301}")); 67 68# 16 69 70ok($objIs->lt('z', $thrn)); 71ok($objIs->lt($thrn, $ae)); 72ok($objIs->lt($ae, $ouml)); 73ok($objIs->lt($ouml, $arng)); 74ok($objIs->lt($arng, "\x{1C0}")); 75 76# 21 77 78ok($objIs->eq('d', "d\x{335}")); 79ok($objIs->eq($ae, $auml)); 80ok($objIs->eq($ouml, $ostk)); 81 82$objIs->change(level => 2); 83 84ok($objIs->lt('d', "d\x{335}")); 85ok($objIs->lt($ae, $auml)); 86ok($objIs->lt($ouml, $ostk)); 87 88# 27 89 90ok($objIs->eq("a\x{301}", "A\x{301}")); 91ok($objIs->eq("d\x{335}", "D\x{335}")); 92ok($objIs->eq($eth, $ETH)); 93ok($objIs->eq("e\x{301}", "E\x{301}")); 94ok($objIs->eq("i\x{301}", "I\x{301}")); 95ok($objIs->eq("o\x{301}", "O\x{301}")); 96ok($objIs->eq("u\x{301}", "U\x{301}")); 97ok($objIs->eq("y\x{301}", "Y\x{301}")); 98ok($objIs->eq($thrn, $THRN)); 99ok($objIs->eq($ae, $AE)); 100ok($objIs->eq($AE, "\x{1D2D}")); 101ok($objIs->eq($auml, $Auml)); 102ok($objIs->eq($ouml, $Ouml)); 103ok($objIs->eq($ostk, $Ostk)); 104ok($objIs->eq($arng, $Arng)); 105 106# 42 107 108$objIs->change(level => 3); 109 110ok($objIs->lt("a\x{301}", "A\x{301}")); 111ok($objIs->lt("d\x{335}", "D\x{335}")); 112ok($objIs->lt($eth, $ETH)); 113ok($objIs->lt("e\x{301}", "E\x{301}")); 114ok($objIs->lt("i\x{301}", "I\x{301}")); 115ok($objIs->lt("o\x{301}", "O\x{301}")); 116ok($objIs->lt("u\x{301}", "U\x{301}")); 117ok($objIs->lt("y\x{301}", "Y\x{301}")); 118ok($objIs->lt($thrn, $THRN)); 119ok($objIs->lt($ae, $AE)); 120ok($objIs->lt($AE, "\x{1D2D}")); 121ok($objIs->lt($auml, $Auml)); 122ok($objIs->lt($ouml, $Ouml)); 123ok($objIs->lt($ostk, $Ostk)); 124ok($objIs->lt($arng, $Arng)); 125 126# 57 127 128ok($objIs->eq("a\x{301}", _pack_U(0xE1))); 129ok($objIs->eq("a\x{341}", _pack_U(0xE1))); 130ok($objIs->eq("A\x{301}", _pack_U(0xC1))); 131ok($objIs->eq("A\x{341}", _pack_U(0xC1))); 132ok($objIs->eq("d\x{335}", "\x{111}")); 133ok($objIs->eq("D\x{335}", "\x{110}")); 134ok($objIs->eq("e\x{301}", _pack_U(0xE9))); 135ok($objIs->eq("e\x{341}", _pack_U(0xE9))); 136ok($objIs->eq("E\x{301}", _pack_U(0xC9))); 137ok($objIs->eq("E\x{341}", _pack_U(0xC9))); 138ok($objIs->eq("i\x{301}", _pack_U(0xED))); 139ok($objIs->eq("i\x{341}", _pack_U(0xED))); 140ok($objIs->eq("I\x{301}", _pack_U(0xCD))); 141ok($objIs->eq("I\x{341}", _pack_U(0xCD))); 142ok($objIs->eq("o\x{301}", _pack_U(0xF3))); 143ok($objIs->eq("o\x{341}", _pack_U(0xF3))); 144ok($objIs->eq("O\x{301}", _pack_U(0xD3))); 145ok($objIs->eq("O\x{341}", _pack_U(0xD3))); 146ok($objIs->eq("u\x{301}", _pack_U(0xFA))); 147ok($objIs->eq("u\x{341}", _pack_U(0xFA))); 148ok($objIs->eq("U\x{301}", _pack_U(0xDA))); 149ok($objIs->eq("U\x{341}", _pack_U(0xDA))); 150ok($objIs->eq("y\x{301}", _pack_U(0xFD))); 151ok($objIs->eq("y\x{341}", _pack_U(0xFD))); 152ok($objIs->eq("Y\x{301}", _pack_U(0xDD))); 153ok($objIs->eq("Y\x{341}", _pack_U(0xDD))); 154ok($objIs->eq("a\x{308}", $auml)); 155ok($objIs->eq("A\x{308}", $Auml)); 156ok($objIs->eq("o\x{308}", $ouml)); 157ok($objIs->eq("O\x{308}", $Ouml)); 158ok($objIs->eq("o\x{338}", $ostk)); 159ok($objIs->eq("O\x{338}", $Ostk)); 160ok($objIs->eq("a\x{30A}", $arng)); 161ok($objIs->eq("A\x{30A}", $Arng)); 162 163# 91 164 165ok($objIs->eq("\x{1FD}", "$ae\x{301}")); 166ok($objIs->eq("\x{1FC}", "$AE\x{301}")); 167ok($objIs->eq("\x{1E3}", "$ae\x{304}")); 168ok($objIs->eq("\x{1E2}", "$AE\x{304}")); 169ok($objIs->eq("a\x{308}\x{304}", "\x{1DF}")); 170ok($objIs->eq("A\x{308}\x{304}", "\x{1DE}")); 171ok($objIs->eq("o\x{308}\x{304}", "\x{22B}")); 172ok($objIs->eq("O\x{308}\x{304}", "\x{22A}")); 173ok($objIs->eq("o\x{338}\x{301}", "\x{1FF}")); 174ok($objIs->eq("O\x{338}\x{301}", "\x{1FE}")); 175ok($objIs->eq("A\x{30A}", "\x{212B}")); 176ok($objIs->eq("a\x{30A}\x{301}", "\x{1FB}")); 177ok($objIs->eq("A\x{30A}\x{301}", "\x{1FA}")); 178 179# 104 180 181$objIs->change(upper_before_lower => 1); 182 183ok($objIs->gt($ae, $AE)); 184ok($objIs->lt($AE, "\x{1D2D}")); 185ok($objIs->gt($auml, $Auml)); 186ok($objIs->gt($ouml, $Ouml)); 187ok($objIs->gt($ostk, $Ostk)); 188ok($objIs->gt($arng, $Arng)); 189 190# 110 191