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..54\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 $dot = _pack_U(0xB7); 32 33my $objCa = Unicode::Collate::Locale-> 34 new(locale => 'CA', normalization => undef); 35 36ok($objCa->getlocale, 'ca'); 37 38$objCa->change(level => 1); 39 40ok($objCa->lt("c", "ch")); 41ok($objCa->lt("cz","ch")); 42ok($objCa->gt("d", "ch")); 43ok($objCa->lt("l", "ll")); 44ok($objCa->lt("lz","ll")); 45ok($objCa->gt("m", "ll")); 46 47# 8 48 49ok($objCa->eq("a\x{300}a", "aa\x{300}")); 50 51$objCa->change(level => 2); 52 53ok($objCa->gt("a\x{300}a", "aa\x{300}")); 54ok($objCa->lt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}")); 55ok($objCa->lt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}")); 56 57# 12 58 59ok($objCa->eq("ch", "cH")); 60ok($objCa->eq("cH", "Ch")); 61ok($objCa->eq("Ch", "CH")); 62 63ok($objCa->eq("ll", "lL")); 64ok($objCa->eq("lL", "Ll")); 65ok($objCa->eq("Ll", "LL")); 66ok($objCa->eq("ll", "l${dot}l")); 67ok($objCa->eq("lL", "l${dot}l")); 68ok($objCa->eq("lL", "l${dot}L")); 69ok($objCa->eq("Ll", "l${dot}L")); 70ok($objCa->eq("Ll", "L${dot}l")); 71ok($objCa->eq("LL", "L${dot}l")); 72ok($objCa->eq("LL", "L${dot}L")); 73 74# 25 75 76$objCa->change(level => 3); 77 78ok($objCa->lt("ch", "cH")); 79ok($objCa->lt("cH", "Ch")); 80ok($objCa->lt("Ch", "CH")); 81 82ok($objCa->lt("ll", "lL")); 83ok($objCa->lt("lL", "Ll")); 84ok($objCa->lt("Ll", "LL")); 85ok($objCa->lt("ll", "l${dot}l")); 86ok($objCa->gt("lL", "l${dot}l")); 87ok($objCa->lt("lL", "l${dot}L")); 88ok($objCa->gt("Ll", "l${dot}L")); 89ok($objCa->lt("Ll", "L${dot}l")); 90ok($objCa->gt("LL", "L${dot}l")); 91ok($objCa->lt("LL", "L${dot}L")); 92 93# 38 94 95$objCa->change(upper_before_lower => 1); 96 97ok($objCa->gt("ch", "cH")); 98ok($objCa->gt("cH", "Ch")); 99ok($objCa->gt("Ch", "CH")); 100 101ok($objCa->gt("ll", "lL")); 102ok($objCa->gt("lL", "Ll")); 103ok($objCa->gt("Ll", "LL")); 104ok($objCa->lt("ll", "l${dot}l")); 105ok($objCa->lt("lL", "l${dot}l")); 106ok($objCa->lt("lL", "l${dot}L")); 107ok($objCa->lt("Ll", "l${dot}L")); 108ok($objCa->lt("Ll", "L${dot}l")); 109ok($objCa->lt("LL", "L${dot}l")); 110ok($objCa->lt("LL", "L${dot}L")); 111 112# 51 113 114$objCa->change(backwards => 2, level => 2); 115 116ok($objCa->lt("a\x{300}a", "aa\x{300}")); 117ok($objCa->gt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}")); 118ok($objCa->gt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}")); 119 120# 54 121