1 2BEGIN { 3 unless ("A" eq pack('U', 0x41)) { 4 print "1..0 # Unicode::Collate " . 5 "cannot stringify a Unicode code point\n"; 6 exit 0; 7 } 8 if ($ENV{PERL_CORE}) { 9 chdir('t') if -d 't'; 10 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 11 } 12} 13 14use strict; 15use warnings; 16BEGIN { $| = 1; print "1..55\n"; } 17my $count = 0; 18sub ok ($;$) { 19 my $p = my $r = shift; 20 if (@_) { 21 my $x = shift; 22 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; 23 } 24 print $p ? "ok" : "not ok", ' ', ++$count, "\n"; 25} 26 27use Unicode::Collate::Locale; 28 29ok(1); 30 31######################### 32 33my $objTh = Unicode::Collate::Locale-> 34 new(locale => 'TH', normalization => undef); 35 36 37ok($objTh->getlocale, 'th'); 38 39$objTh->change(level => 1); 40 41# shifted 42 43ok($objTh->eq("\x{E2F}", "")); 44ok($objTh->eq("\x{E46}", "")); 45ok($objTh->eq("\x{E4F}", "")); 46ok($objTh->eq("\x{E5A}", "")); 47ok($objTh->eq("\x{E5B}", "")); 48 49# 7 50 51ok($objTh->lt("\x{E2E}", "\x{E4D}")); 52ok($objTh->lt("\x{E4D}", "\x{E30}")); 53 54ok($objTh->lt("\x{E44}", "\x{E3A}")); 55 56# 10 57 58ok($objTh->eq("\x{E4E}", "")); 59ok($objTh->eq("\x{E4C}", "")); 60ok($objTh->eq("\x{E47}", "")); 61ok($objTh->eq("\x{E48}", "")); 62ok($objTh->eq("\x{E49}", "")); 63ok($objTh->eq("\x{E4A}", "")); 64ok($objTh->eq("\x{E4B}", "")); 65 66# 17 67 68$objTh->change(level => 2); 69 70ok($objTh->lt("\x{E4E}", "\x{E4C}")); 71ok($objTh->lt("\x{E4C}", "\x{E47}")); 72ok($objTh->lt("\x{E47}", "\x{E48}")); 73ok($objTh->lt("\x{E48}", "\x{E49}")); 74ok($objTh->lt("\x{E49}", "\x{E4A}")); 75ok($objTh->lt("\x{E4A}", "\x{E4B}")); 76 77ok($objTh->eq("\x{E32}", "\x{E45}")); 78ok($objTh->eq("\x{E32}\x{E4D}", "\x{E4D}\x{E32}")); 79ok($objTh->eq("\x{E4D}\x{E32}", "\x{E33}")); 80ok($objTh->eq("\x{E4D}\x{E45}", "\x{E45}\x{E4D}")); 81 82# 27 83 84$objTh->change(level => 3); 85 86ok($objTh->lt("\x{E32}", "\x{E45}")); 87ok($objTh->lt("\x{E32}\x{E4D}", "\x{E4D}\x{E32}")); 88ok($objTh->lt("\x{E4D}\x{E32}", "\x{E33}")); 89ok($objTh->lt("\x{E4D}\x{E45}", "\x{E45}\x{E4D}")); 90 91ok($objTh->eq("\x{E4F}", "\x{E2F}")); 92ok($objTh->eq("\x{E2F}", "\x{E5A}")); 93ok($objTh->eq("\x{E5A}", "\x{E5B}")); 94ok($objTh->eq("\x{E5B}", "\x{E46}")); 95 96# 35 97 98$objTh->change(level => 4); 99 100for my $t ("", "\x{E01}") { 101 ok($objTh->lt("\x{E4F}$t", "\x{E2F}$t")); 102 ok($objTh->lt("\x{E2F}$t", "\x{E5A}$t")); 103 ok($objTh->lt("\x{E5A}$t", "\x{E5B}$t")); 104 ok($objTh->lt("\x{E5B}$t", "\x{E46}$t")); 105} 106 107# 43 108 109$objTh->change(level => 1); 110 111ok($objTh->eq("\x{E4F}", "\x{E2F}")); 112ok($objTh->eq("\x{E2F}", "\x{E5A}")); 113ok($objTh->eq("\x{E5A}", "\x{E5B}")); 114ok($objTh->eq("\x{E5B}", "\x{E46}")); 115 116# 47 117 118$objTh->change(variable => "non-ignorable"); 119 120for my $h (0, 1) { 121 no warnings 'utf8'; 122 my $t = $h ? pack('U', 0xFFFF) : ""; 123 $objTh->change(highestFFFF => 1) if $h; 124 125 ok($objTh->lt("\x{E4F}$t", "\x{E2F}")); 126 ok($objTh->lt("\x{E2F}$t", "\x{E5A}")); 127 ok($objTh->lt("\x{E5A}$t", "\x{E5B}")); 128 ok($objTh->lt("\x{E5B}$t", "\x{E46}")); 129} 130 131# 55 132