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..55\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 $objTh = Unicode::Collate::Locale-> 32 new(locale => 'TH', normalization => undef); 33 34 35ok($objTh->getlocale, 'th'); 36 37$objTh->change(level => 1); 38 39# shifted 40 41ok($objTh->eq("\x{E2F}", "")); 42ok($objTh->eq("\x{E46}", "")); 43ok($objTh->eq("\x{E4F}", "")); 44ok($objTh->eq("\x{E5A}", "")); 45ok($objTh->eq("\x{E5B}", "")); 46 47# 7 48 49ok($objTh->lt("\x{E2E}", "\x{E4D}")); 50ok($objTh->lt("\x{E4D}", "\x{E30}")); 51 52ok($objTh->lt("\x{E44}", "\x{E3A}")); 53 54# 10 55 56ok($objTh->eq("\x{E4E}", "")); 57ok($objTh->eq("\x{E4C}", "")); 58ok($objTh->eq("\x{E47}", "")); 59ok($objTh->eq("\x{E48}", "")); 60ok($objTh->eq("\x{E49}", "")); 61ok($objTh->eq("\x{E4A}", "")); 62ok($objTh->eq("\x{E4B}", "")); 63 64# 17 65 66$objTh->change(level => 2); 67 68ok($objTh->lt("\x{E4E}", "\x{E4C}")); 69ok($objTh->lt("\x{E4C}", "\x{E47}")); 70ok($objTh->lt("\x{E47}", "\x{E48}")); 71ok($objTh->lt("\x{E48}", "\x{E49}")); 72ok($objTh->lt("\x{E49}", "\x{E4A}")); 73ok($objTh->lt("\x{E4A}", "\x{E4B}")); 74 75ok($objTh->eq("\x{E32}", "\x{E45}")); 76ok($objTh->eq("\x{E32}\x{E4D}", "\x{E4D}\x{E32}")); 77ok($objTh->eq("\x{E4D}\x{E32}", "\x{E33}")); 78ok($objTh->eq("\x{E4D}\x{E45}", "\x{E45}\x{E4D}")); 79 80# 27 81 82$objTh->change(level => 3); 83 84ok($objTh->lt("\x{E32}", "\x{E45}")); 85ok($objTh->lt("\x{E32}\x{E4D}", "\x{E4D}\x{E32}")); 86ok($objTh->lt("\x{E4D}\x{E32}", "\x{E33}")); 87ok($objTh->lt("\x{E4D}\x{E45}", "\x{E45}\x{E4D}")); 88 89ok($objTh->eq("\x{E4F}", "\x{E2F}")); 90ok($objTh->eq("\x{E2F}", "\x{E5A}")); 91ok($objTh->eq("\x{E5A}", "\x{E5B}")); 92ok($objTh->eq("\x{E5B}", "\x{E46}")); 93 94# 35 95 96$objTh->change(level => 4); 97 98for my $t ("", "\x{E01}") { 99 ok($objTh->lt("\x{E4F}$t", "\x{E2F}$t")); 100 ok($objTh->lt("\x{E2F}$t", "\x{E5A}$t")); 101 ok($objTh->lt("\x{E5A}$t", "\x{E5B}$t")); 102 ok($objTh->lt("\x{E5B}$t", "\x{E46}$t")); 103} 104 105# 43 106 107$objTh->change(level => 1); 108 109ok($objTh->eq("\x{E4F}", "\x{E2F}")); 110ok($objTh->eq("\x{E2F}", "\x{E5A}")); 111ok($objTh->eq("\x{E5A}", "\x{E5B}")); 112ok($objTh->eq("\x{E5B}", "\x{E46}")); 113 114# 47 115 116$objTh->change(variable => "non-ignorable"); 117 118for my $h (0, 1) { 119 no warnings 'utf8'; 120 my $t = $h ? _pack_U(0xFFFF) : ""; 121 $objTh->change(highestFFFF => 1) if $h; 122 123 ok($objTh->lt("\x{E4F}$t", "\x{E2F}")); 124 ok($objTh->lt("\x{E2F}$t", "\x{E5A}")); 125 ok($objTh->lt("\x{E5A}$t", "\x{E5B}")); 126 ok($objTh->lt("\x{E5B}$t", "\x{E46}")); 127} 128 129# 55 130