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