1
2BEGIN {
3    unless ('A' eq pack('U', 0x41)) {
4	print "1..0 # Unicode::Collate cannot pack a Unicode code point\n";
5	exit 0;
6    }
7    unless (0x41 == unpack('U', 'A')) {
8	print "1..0 # Unicode::Collate cannot get a Unicode code point\n";
9	exit 0;
10    }
11    if ($ENV{PERL_CORE}) {
12	chdir('t') if -d 't';
13	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
14    }
15}
16
17use strict;
18use warnings;
19BEGIN { $| = 1; print "1..78\n"; }
20my $count = 0;
21sub ok ($;$) {
22    my $p = my $r = shift;
23    if (@_) {
24	my $x = shift;
25	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
26    }
27    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
28}
29
30use Unicode::Collate::Locale;
31
32ok(1);
33
34#########################
35
36my $objWae = Unicode::Collate::Locale->
37    new(locale => 'WAE', normalization => undef);
38
39ok($objWae->getlocale, 'wae');
40
41$objWae->change(level => 1);
42
43ok($objWae->lt("aa", "a9"));
44ok($objWae->gt("aA", "a9"));
45ok($objWae->gt("Aa", "a9"));
46ok($objWae->gt("AA", "a9"));
47ok($objWae->lt("ee", "e9"));
48ok($objWae->gt("eE", "e9"));
49ok($objWae->gt("Ee", "e9"));
50ok($objWae->gt("EE", "e9"));
51ok($objWae->lt("ii", "i9"));
52ok($objWae->gt("iI", "i9"));
53ok($objWae->gt("Ii", "i9"));
54ok($objWae->gt("II", "i9"));
55ok($objWae->lt("oo", "o9"));
56ok($objWae->gt("oO", "o9"));
57ok($objWae->gt("Oo", "o9"));
58ok($objWae->gt("OO", "o9"));
59ok($objWae->lt("uu", "u9"));
60ok($objWae->gt("uU", "u9"));
61ok($objWae->gt("Uu", "u9"));
62ok($objWae->gt("UU", "u9"));
63
64# 22
65
66ok($objWae->lt("ch", "c9"));
67ok($objWae->gt("cH", "c9"));
68ok($objWae->gt("Ch", "c9"));
69ok($objWae->gt("CH", "c9"));
70
71ok($objWae->lt("sch", "s9"));
72ok($objWae->gt("scH", "s9"));
73ok($objWae->gt("sCh", "s9"));
74ok($objWae->gt("sCH", "s9"));
75ok($objWae->gt("Sch", "s9"));
76ok($objWae->gt("ScH", "s9"));
77ok($objWae->gt("SCh", "s9"));
78ok($objWae->gt("SCH", "s9"));
79
80# 34
81
82ok($objWae->lt("a\x{308}a\x{308}", "a9"));
83ok($objWae->gt("a\x{308}A\x{308}", "a9"));
84ok($objWae->gt("A\x{308}a\x{308}", "a9"));
85ok($objWae->gt("A\x{308}A\x{308}", "a9"));
86ok($objWae->lt("o\x{308}o\x{308}", "o9"));
87ok($objWae->gt("o\x{308}O\x{308}", "o9"));
88ok($objWae->gt("O\x{308}o\x{308}", "o9"));
89ok($objWae->gt("O\x{308}O\x{308}", "o9"));
90ok($objWae->lt("u\x{308}u\x{308}", "u9"));
91ok($objWae->gt("u\x{308}U\x{308}", "u9"));
92ok($objWae->gt("U\x{308}u\x{308}", "u9"));
93ok($objWae->gt("U\x{308}U\x{308}", "u9"));
94
95# 46
96
97$objWae->change(level => 3);
98
99ok($objWae->eq("a\x{301}", pack('U', 0xE1)));
100ok($objWae->eq("e\x{301}", pack('U', 0xE9)));
101ok($objWae->eq("i\x{301}", pack('U', 0xED)));
102ok($objWae->eq("o\x{301}", pack('U', 0xF3)));
103ok($objWae->eq("u\x{301}", pack('U', 0xFA)));
104ok($objWae->eq("a\x{301}", "aa"));
105ok($objWae->eq("e\x{301}", "ee"));
106ok($objWae->eq("i\x{301}", "ii"));
107ok($objWae->eq("o\x{301}", "oo"));
108ok($objWae->eq("u\x{301}", "uu"));
109
110# 56
111
112ok($objWae->eq("c\x{30C}", "\x{10D}"));
113ok($objWae->eq("s\x{30C}", "\x{161}"));
114ok($objWae->eq("c\x{30C}", "ch"));
115ok($objWae->eq("s\x{30C}", "sch"));
116
117# 60
118
119my $a1 = pack('U', 0xE4);
120my $o1 = pack('U', 0xF6);
121my $u1 = pack('U', 0xFC);
122my $a2 = "a\x{308}";
123my $o2 = "o\x{308}";
124my $u2 = "u\x{308}";
125
126ok($objWae->eq($a1, $a2));
127ok($objWae->eq($o1, $o2));
128ok($objWae->eq($u1, $u2));
129
130ok($objWae->eq("a\x{303}", pack('U', 0xE3)));
131ok($objWae->eq("o\x{303}", pack('U', 0xF5)));
132ok($objWae->eq("u\x{303}", "\x{169}"));
133
134# 66
135
136ok($objWae->eq("a\x{303}", $a1.$a1));
137ok($objWae->eq("a\x{303}", $a1.$a2));
138ok($objWae->eq("a\x{303}", $a2.$a1));
139ok($objWae->eq("a\x{303}", $a2.$a2));
140ok($objWae->eq("o\x{303}", $o1.$o1));
141ok($objWae->eq("o\x{303}", $o1.$o2));
142ok($objWae->eq("o\x{303}", $o2.$o1));
143ok($objWae->eq("o\x{303}", $o2.$o2));
144ok($objWae->eq("u\x{303}", $u1.$u1));
145ok($objWae->eq("u\x{303}", $u1.$u2));
146ok($objWae->eq("u\x{303}", $u2.$u1));
147ok($objWae->eq("u\x{303}", $u2.$u2));
148
149# 78
150