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..78\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 $objWae = Unicode::Collate::Locale->
32    new(locale => 'WAE', normalization => undef);
33
34ok($objWae->getlocale, 'wae');
35
36$objWae->change(level => 1);
37
38ok($objWae->lt("aa", "a9"));
39ok($objWae->gt("aA", "a9"));
40ok($objWae->gt("Aa", "a9"));
41ok($objWae->gt("AA", "a9"));
42ok($objWae->lt("ee", "e9"));
43ok($objWae->gt("eE", "e9"));
44ok($objWae->gt("Ee", "e9"));
45ok($objWae->gt("EE", "e9"));
46ok($objWae->lt("ii", "i9"));
47ok($objWae->gt("iI", "i9"));
48ok($objWae->gt("Ii", "i9"));
49ok($objWae->gt("II", "i9"));
50ok($objWae->lt("oo", "o9"));
51ok($objWae->gt("oO", "o9"));
52ok($objWae->gt("Oo", "o9"));
53ok($objWae->gt("OO", "o9"));
54ok($objWae->lt("uu", "u9"));
55ok($objWae->gt("uU", "u9"));
56ok($objWae->gt("Uu", "u9"));
57ok($objWae->gt("UU", "u9"));
58
59# 22
60
61ok($objWae->lt("ch", "c9"));
62ok($objWae->gt("cH", "c9"));
63ok($objWae->gt("Ch", "c9"));
64ok($objWae->gt("CH", "c9"));
65
66ok($objWae->lt("sch", "s9"));
67ok($objWae->gt("scH", "s9"));
68ok($objWae->gt("sCh", "s9"));
69ok($objWae->gt("sCH", "s9"));
70ok($objWae->gt("Sch", "s9"));
71ok($objWae->gt("ScH", "s9"));
72ok($objWae->gt("SCh", "s9"));
73ok($objWae->gt("SCH", "s9"));
74
75# 34
76
77ok($objWae->lt("a\x{308}a\x{308}", "a9"));
78ok($objWae->gt("a\x{308}A\x{308}", "a9"));
79ok($objWae->gt("A\x{308}a\x{308}", "a9"));
80ok($objWae->gt("A\x{308}A\x{308}", "a9"));
81ok($objWae->lt("o\x{308}o\x{308}", "o9"));
82ok($objWae->gt("o\x{308}O\x{308}", "o9"));
83ok($objWae->gt("O\x{308}o\x{308}", "o9"));
84ok($objWae->gt("O\x{308}O\x{308}", "o9"));
85ok($objWae->lt("u\x{308}u\x{308}", "u9"));
86ok($objWae->gt("u\x{308}U\x{308}", "u9"));
87ok($objWae->gt("U\x{308}u\x{308}", "u9"));
88ok($objWae->gt("U\x{308}U\x{308}", "u9"));
89
90# 46
91
92$objWae->change(level => 3);
93
94ok($objWae->eq("a\x{301}", _pack_U(0xE1)));
95ok($objWae->eq("e\x{301}", _pack_U(0xE9)));
96ok($objWae->eq("i\x{301}", _pack_U(0xED)));
97ok($objWae->eq("o\x{301}", _pack_U(0xF3)));
98ok($objWae->eq("u\x{301}", _pack_U(0xFA)));
99ok($objWae->eq("a\x{301}", "aa"));
100ok($objWae->eq("e\x{301}", "ee"));
101ok($objWae->eq("i\x{301}", "ii"));
102ok($objWae->eq("o\x{301}", "oo"));
103ok($objWae->eq("u\x{301}", "uu"));
104
105# 56
106
107ok($objWae->eq("c\x{30C}", "\x{10D}"));
108ok($objWae->eq("s\x{30C}", "\x{161}"));
109ok($objWae->eq("c\x{30C}", "ch"));
110ok($objWae->eq("s\x{30C}", "sch"));
111
112# 60
113
114my $a1 = _pack_U(0xE4);
115my $o1 = _pack_U(0xF6);
116my $u1 = _pack_U(0xFC);
117my $a2 = "a\x{308}";
118my $o2 = "o\x{308}";
119my $u2 = "u\x{308}";
120
121ok($objWae->eq($a1, $a2));
122ok($objWae->eq($o1, $o2));
123ok($objWae->eq($u1, $u2));
124
125ok($objWae->eq("a\x{303}", _pack_U(0xE3)));
126ok($objWae->eq("o\x{303}", _pack_U(0xF5)));
127ok($objWae->eq("u\x{303}", "\x{169}"));
128
129# 66
130
131ok($objWae->eq("a\x{303}", $a1.$a1));
132ok($objWae->eq("a\x{303}", $a1.$a2));
133ok($objWae->eq("a\x{303}", $a2.$a1));
134ok($objWae->eq("a\x{303}", $a2.$a2));
135ok($objWae->eq("o\x{303}", $o1.$o1));
136ok($objWae->eq("o\x{303}", $o1.$o2));
137ok($objWae->eq("o\x{303}", $o2.$o1));
138ok($objWae->eq("o\x{303}", $o2.$o2));
139ok($objWae->eq("u\x{303}", $u1.$u1));
140ok($objWae->eq("u\x{303}", $u1.$u2));
141ok($objWae->eq("u\x{303}", $u2.$u1));
142ok($objWae->eq("u\x{303}", $u2.$u2));
143
144# 78
145