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..46\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 $auml = _pack_U(0xE4); 32my $Auml = _pack_U(0xC4); 33my $ouml = _pack_U(0xF6); 34my $Ouml = _pack_U(0xD6); 35my $uuml = _pack_U(0xFC); 36my $Uuml = _pack_U(0xDC); 37my $eses = _pack_U(0xDF); 38my $Eses = _pack_U(0x1E9E); 39 40my $objDeAtPhone = Unicode::Collate::Locale-> 41 new(locale => 'DE_AT_phonebook', normalization => undef); 42 43ok($objDeAtPhone->getlocale, 'de_AT_phonebook'); 44 45$objDeAtPhone->change(level => 1); 46 47ok($objDeAtPhone->gt($auml, "az")); 48ok($objDeAtPhone->lt($auml, "b")); 49ok($objDeAtPhone->gt($ouml, "oz")); 50ok($objDeAtPhone->lt($ouml, "p")); 51ok($objDeAtPhone->gt($uuml, "uz")); 52ok($objDeAtPhone->lt($uuml, "v")); 53ok($objDeAtPhone->gt($eses, "ssz")); 54ok($objDeAtPhone->lt($eses, "st")); 55 56# 10 57 58$objDeAtPhone->change(level => 2); 59 60ok($objDeAtPhone->eq("a\x{308}", "A\x{308}")); 61ok($objDeAtPhone->eq("o\x{308}", "O\x{308}")); 62ok($objDeAtPhone->eq("u\x{308}", "U\x{308}")); 63 64ok($objDeAtPhone->eq($auml, $Auml)); 65ok($objDeAtPhone->eq($ouml, $Ouml)); 66ok($objDeAtPhone->eq($uuml, $Uuml)); 67ok($objDeAtPhone->eq($eses, $Eses)); 68 69# 17 70 71$objDeAtPhone->change(level => 3); 72 73ok($objDeAtPhone->lt("a\x{308}", "A\x{308}")); 74ok($objDeAtPhone->lt("o\x{308}", "O\x{308}")); 75ok($objDeAtPhone->lt("u\x{308}", "U\x{308}")); 76 77ok($objDeAtPhone->lt($auml, $Auml)); 78ok($objDeAtPhone->lt($ouml, $Ouml)); 79ok($objDeAtPhone->lt($uuml, $Uuml)); 80ok($objDeAtPhone->lt($eses, $Eses)); 81 82# 24 83 84ok($objDeAtPhone->eq("a\x{308}", $auml)); 85ok($objDeAtPhone->eq("A\x{308}", $Auml)); 86ok($objDeAtPhone->eq("o\x{308}", $ouml)); 87ok($objDeAtPhone->eq("O\x{308}", $Ouml)); 88ok($objDeAtPhone->eq("u\x{308}", $uuml)); 89ok($objDeAtPhone->eq("U\x{308}", $Uuml)); 90 91# 30 92 93ok($objDeAtPhone->eq("a\x{308}\x{304}", "\x{1DF}")); 94ok($objDeAtPhone->eq("A\x{308}\x{304}", "\x{1DE}")); 95ok($objDeAtPhone->eq("o\x{308}\x{304}", "\x{22B}")); 96ok($objDeAtPhone->eq("O\x{308}\x{304}", "\x{22A}")); 97ok($objDeAtPhone->eq("u\x{308}\x{300}", "\x{1DC}")); 98ok($objDeAtPhone->eq("U\x{308}\x{300}", "\x{1DB}")); 99ok($objDeAtPhone->eq("u\x{308}\x{301}", "\x{1D8}")); 100ok($objDeAtPhone->eq("U\x{308}\x{301}", "\x{1D7}")); 101ok($objDeAtPhone->eq("u\x{308}\x{304}", "\x{1D6}")); 102ok($objDeAtPhone->eq("U\x{308}\x{304}", "\x{1D5}")); 103ok($objDeAtPhone->eq("u\x{308}\x{30C}", "\x{1DA}")); 104ok($objDeAtPhone->eq("U\x{308}\x{30C}", "\x{1D9}")); 105 106# 42 107 108{ 109 my $objDeLatnAtPhone = Unicode::Collate::Locale-> 110 new(locale => 'DE_Latn_AT_phonebook', normalization => undef); 111 ok($objDeLatnAtPhone->getlocale, 'de_AT_phonebook'); 112 $objDeLatnAtPhone->change(level => 1); 113 ok($objDeLatnAtPhone->gt($auml, 'az')); 114} 115 116# 44 117 118{ 119 my $objDeAt = Unicode::Collate::Locale-> 120 new(locale => 'DE_AT', normalization => undef); 121 ok($objDeAt->getlocale, 'default'); 122 $objDeAt->change(level => 1); 123 ok($objDeAt->eq($auml, 'a')); 124} 125 126# 46 127