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..52\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);
37
38my $objDePhone = Unicode::Collate::Locale->
39    new(locale => 'DE-PHONE', normalization => undef);
40
41ok($objDePhone->getlocale, 'de__phonebook');
42
43$objDePhone->change(level => 1);
44
45ok($objDePhone->eq("a\x{308}", "ae"));
46ok($objDePhone->eq("A\x{308}", "AE"));
47ok($objDePhone->eq("o\x{308}", "oe"));
48ok($objDePhone->eq("O\x{308}", "OE"));
49ok($objDePhone->eq("u\x{308}", "ue"));
50ok($objDePhone->eq("U\x{308}", "UE"));
51
52# 8
53
54$objDePhone->change(level => 2);
55
56ok($objDePhone->gt("a\x{308}", "ae"));
57ok($objDePhone->gt("A\x{308}", "AE"));
58ok($objDePhone->gt("o\x{308}", "oe"));
59ok($objDePhone->gt("O\x{308}", "OE"));
60ok($objDePhone->gt("u\x{308}", "ue"));
61ok($objDePhone->gt("U\x{308}", "UE"));
62
63# 14
64
65ok($objDePhone->eq("a\x{308}", "A\x{308}"));
66ok($objDePhone->eq("o\x{308}", "O\x{308}"));
67ok($objDePhone->eq("u\x{308}", "U\x{308}"));
68
69ok($objDePhone->eq($auml, $Auml));
70ok($objDePhone->eq($ouml, $Ouml));
71ok($objDePhone->eq($uuml, $Uuml));
72
73# 20
74
75$objDePhone->change(level => 3);
76
77ok($objDePhone->lt("a\x{308}", "A\x{308}"));
78ok($objDePhone->lt("o\x{308}", "O\x{308}"));
79ok($objDePhone->lt("u\x{308}", "U\x{308}"));
80
81ok($objDePhone->lt($auml, $Auml));
82ok($objDePhone->lt($ouml, $Ouml));
83ok($objDePhone->lt($uuml, $Uuml));
84
85# 26
86
87ok($objDePhone->eq("a\x{308}", $auml));
88ok($objDePhone->eq("A\x{308}", $Auml));
89ok($objDePhone->eq("o\x{308}", $ouml));
90ok($objDePhone->eq("O\x{308}", $Ouml));
91ok($objDePhone->eq("u\x{308}", $uuml));
92ok($objDePhone->eq("U\x{308}", $Uuml));
93
94# 32
95
96ok($objDePhone->eq("a\x{308}\x{304}", "\x{1DF}"));
97ok($objDePhone->eq("A\x{308}\x{304}", "\x{1DE}"));
98ok($objDePhone->eq("o\x{308}\x{304}", "\x{22B}"));
99ok($objDePhone->eq("O\x{308}\x{304}", "\x{22A}"));
100ok($objDePhone->eq("u\x{308}\x{300}", "\x{1DC}"));
101ok($objDePhone->eq("U\x{308}\x{300}", "\x{1DB}"));
102ok($objDePhone->eq("u\x{308}\x{301}", "\x{1D8}"));
103ok($objDePhone->eq("U\x{308}\x{301}", "\x{1D7}"));
104ok($objDePhone->eq("u\x{308}\x{304}", "\x{1D6}"));
105ok($objDePhone->eq("U\x{308}\x{304}", "\x{1D5}"));
106ok($objDePhone->eq("u\x{308}\x{30C}", "\x{1DA}"));
107ok($objDePhone->eq("U\x{308}\x{30C}", "\x{1D9}"));
108
109# 44
110
111{
112  my $objDePhoneBook = Unicode::Collate::Locale->
113    new(locale => 'de__phonebook', normalization => undef);
114  ok($objDePhoneBook->getlocale, 'de__phonebook');
115  $objDePhoneBook->change(level => 1);
116  ok($objDePhoneBook->eq("a\x{308}", "ae"));
117}
118
119# 46
120
121{
122  my $objDePhonebk = Unicode::Collate::Locale->
123    new(locale => 'de-phonebk', normalization => undef);
124  ok($objDePhonebk->getlocale, 'de__phonebook');
125  $objDePhonebk->change(level => 1);
126  ok($objDePhonebk->eq("a\x{308}", "ae"));
127}
128
129# 48
130
131{
132  my $objDeDePhone = Unicode::Collate::Locale->
133    new(locale => 'de_DE_phone', normalization => undef);
134  ok($objDeDePhone->getlocale, 'de__phonebook');
135  $objDeDePhone->change(level => 1);
136  ok($objDeDePhone->eq("a\x{308}", "ae"));
137}
138
139# 50
140
141{
142  my $objDeChPhonebk = Unicode::Collate::Locale->
143    new(locale => 'de_CH_phonebk', normalization => undef);
144  ok($objDeChPhonebk->getlocale, 'de__phonebook');
145  $objDeChPhonebk->change(level => 1);
146  ok($objDeChPhonebk->eq("a\x{308}", "ae"));
147}
148
149# 52
150