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..122\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 $objTo = Unicode::Collate::Locale-> 32 new(locale => 'TO', normalization => undef); 33 34ok($objTo->getlocale, 'to'); 35 36$objTo->change(level => 1); 37 38ok($objTo->lt("n", "ng")); 39ok($objTo->lt("nz","ng")); 40ok($objTo->gt("o", "ng")); 41ok($objTo->lt("z", "\x{2BB}")); 42ok($objTo->lt("z", "\x{2BD}")); 43 44# 7 45 46ok($objTo->eq("a", "a\x{301}")); 47ok($objTo->eq("A", "A\x{301}")); 48ok($objTo->eq("e", "e\x{301}")); 49ok($objTo->eq("E", "E\x{301}")); 50ok($objTo->eq("i", "i\x{301}")); 51ok($objTo->eq("I", "I\x{301}")); 52ok($objTo->eq("o", "o\x{301}")); 53ok($objTo->eq("O", "O\x{301}")); 54ok($objTo->eq("u", "u\x{301}")); 55ok($objTo->eq("U", "U\x{301}")); 56 57ok($objTo->eq("a\x{301}", "a\x{304}")); 58ok($objTo->eq("A\x{301}", "A\x{304}")); 59ok($objTo->eq("e\x{301}", "e\x{304}")); 60ok($objTo->eq("E\x{301}", "E\x{304}")); 61ok($objTo->eq("i\x{301}", "i\x{304}")); 62ok($objTo->eq("I\x{301}", "I\x{304}")); 63ok($objTo->eq("o\x{301}", "o\x{304}")); 64ok($objTo->eq("O\x{301}", "O\x{304}")); 65ok($objTo->eq("u\x{301}", "u\x{304}")); 66ok($objTo->eq("U\x{301}", "U\x{304}")); 67 68# 27 69 70$objTo->change(level => 2); 71 72ok($objTo->lt("a", "a\x{301}")); 73ok($objTo->lt("A", "A\x{301}")); 74ok($objTo->lt("e", "e\x{301}")); 75ok($objTo->lt("E", "E\x{301}")); 76ok($objTo->lt("i", "i\x{301}")); 77ok($objTo->lt("I", "I\x{301}")); 78ok($objTo->lt("o", "o\x{301}")); 79ok($objTo->lt("O", "O\x{301}")); 80ok($objTo->lt("u", "u\x{301}")); 81ok($objTo->lt("U", "U\x{301}")); 82 83ok($objTo->lt("a\x{301}", "a\x{304}")); 84ok($objTo->lt("A\x{301}", "A\x{304}")); 85ok($objTo->lt("e\x{301}", "e\x{304}")); 86ok($objTo->lt("E\x{301}", "E\x{304}")); 87ok($objTo->lt("i\x{301}", "i\x{304}")); 88ok($objTo->lt("I\x{301}", "I\x{304}")); 89ok($objTo->lt("o\x{301}", "o\x{304}")); 90ok($objTo->lt("O\x{301}", "O\x{304}")); 91ok($objTo->lt("u\x{301}", "u\x{304}")); 92ok($objTo->lt("U\x{301}", "U\x{304}")); 93 94# 47 95 96ok($objTo->eq("ng", "Ng")); 97ok($objTo->eq("Ng", "NG")); 98ok($objTo->eq("NG", "\x{14B}")); 99ok($objTo->eq("\x{14B}", "\x{14A}")); 100ok($objTo->eq("\x{2BB}", "\x{2BD}")); 101 102ok($objTo->eq("a\x{301}", "A\x{301}")); 103ok($objTo->eq("a\x{304}", "A\x{304}")); 104ok($objTo->eq("e\x{301}", "E\x{301}")); 105ok($objTo->eq("e\x{304}", "E\x{304}")); 106ok($objTo->eq("i\x{301}", "I\x{301}")); 107ok($objTo->eq("i\x{304}", "I\x{304}")); 108ok($objTo->eq("o\x{301}", "O\x{301}")); 109ok($objTo->eq("o\x{304}", "O\x{304}")); 110ok($objTo->eq("u\x{301}", "U\x{301}")); 111ok($objTo->eq("u\x{304}", "U\x{304}")); 112 113# 62 114 115$objTo->change(level => 3); 116 117ok($objTo->lt("ng", "Ng")); 118ok($objTo->lt("Ng", "NG")); 119ok($objTo->lt("NG", "\x{14B}")); 120ok($objTo->lt("\x{14B}", "\x{14A}")); 121ok($objTo->lt("\x{2BB}", "\x{2BD}")); 122 123ok($objTo->lt("a\x{301}", "A\x{301}")); 124ok($objTo->lt("a\x{304}", "A\x{304}")); 125ok($objTo->lt("e\x{301}", "E\x{301}")); 126ok($objTo->lt("e\x{304}", "E\x{304}")); 127ok($objTo->lt("i\x{301}", "I\x{301}")); 128ok($objTo->lt("i\x{304}", "I\x{304}")); 129ok($objTo->lt("o\x{301}", "O\x{301}")); 130ok($objTo->lt("o\x{304}", "O\x{304}")); 131ok($objTo->lt("u\x{301}", "U\x{301}")); 132ok($objTo->lt("u\x{304}", "U\x{304}")); 133 134# 77 135 136ok($objTo->eq("a\x{301}", _pack_U(0xE1))); 137ok($objTo->eq("a\x{341}", _pack_U(0xE1))); 138ok($objTo->eq("A\x{301}", _pack_U(0xC1))); 139ok($objTo->eq("A\x{341}", _pack_U(0xC1))); 140ok($objTo->eq("e\x{301}", _pack_U(0xE9))); 141ok($objTo->eq("e\x{341}", _pack_U(0xE9))); 142ok($objTo->eq("E\x{301}", _pack_U(0xC9))); 143ok($objTo->eq("E\x{341}", _pack_U(0xC9))); 144ok($objTo->eq("i\x{301}", _pack_U(0xED))); 145ok($objTo->eq("i\x{341}", _pack_U(0xED))); 146ok($objTo->eq("I\x{301}", _pack_U(0xCD))); 147ok($objTo->eq("I\x{341}", _pack_U(0xCD))); 148ok($objTo->eq("o\x{301}", _pack_U(0xF3))); 149ok($objTo->eq("o\x{341}", _pack_U(0xF3))); 150ok($objTo->eq("O\x{301}", _pack_U(0xD3))); 151ok($objTo->eq("O\x{341}", _pack_U(0xD3))); 152ok($objTo->eq("u\x{301}", _pack_U(0xFA))); 153ok($objTo->eq("u\x{341}", _pack_U(0xFA))); 154ok($objTo->eq("U\x{301}", _pack_U(0xDA))); 155ok($objTo->eq("U\x{341}", _pack_U(0xDA))); 156 157ok($objTo->eq("a\x{304}", "\x{101}")); 158ok($objTo->eq("A\x{304}", "\x{100}")); 159ok($objTo->eq("e\x{304}", "\x{113}")); 160ok($objTo->eq("E\x{304}", "\x{112}")); 161ok($objTo->eq("i\x{304}", "\x{12B}")); 162ok($objTo->eq("I\x{304}", "\x{12A}")); 163ok($objTo->eq("o\x{304}", "\x{14D}")); 164ok($objTo->eq("O\x{304}", "\x{14C}")); 165ok($objTo->eq("u\x{304}", "\x{16B}")); 166ok($objTo->eq("U\x{304}", "\x{16A}")); 167 168# 107 169 170$objTo->change(upper_before_lower => 1); 171 172ok($objTo->gt("ng", "Ng")); 173ok($objTo->gt("Ng", "NG")); 174ok($objTo->lt("NG", "\x{14B}")); 175ok($objTo->gt("\x{14B}", "\x{14A}")); 176ok($objTo->lt("\x{2BB}", "\x{2BD}")); 177 178ok($objTo->gt("a\x{301}", "A\x{301}")); 179ok($objTo->gt("a\x{304}", "A\x{304}")); 180ok($objTo->gt("e\x{301}", "E\x{301}")); 181ok($objTo->gt("e\x{304}", "E\x{304}")); 182ok($objTo->gt("i\x{301}", "I\x{301}")); 183ok($objTo->gt("i\x{304}", "I\x{304}")); 184ok($objTo->gt("o\x{301}", "O\x{301}")); 185ok($objTo->gt("o\x{304}", "O\x{304}")); 186ok($objTo->gt("u\x{301}", "U\x{301}")); 187ok($objTo->gt("u\x{304}", "U\x{304}")); 188 189# 122 190