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..60\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 $objEt = Unicode::Collate::Locale->
37    new(locale => 'ET', normalization => undef);
38
39ok($objEt->getlocale, 'et');
40
41$objEt->change(level => 1);
42
43ok($objEt->lt("s", "s\x{30C}"));
44ok($objEt->gt("z", "s\x{30C}"));
45ok($objEt->lt("z", "z\x{30C}"));
46ok($objEt->gt("t", "z\x{30C}"));
47ok($objEt->lt("v", "w")); # no tailoring
48ok($objEt->lt("w", "o\x{303}"));
49ok($objEt->lt("o\x{303}", "a\x{308}"));
50ok($objEt->lt("a\x{308}", "o\x{308}"));
51ok($objEt->lt("o\x{308}", "u\x{308}"));
52ok($objEt->lt("u\x{308}", "x"));
53
54# 12
55
56$objEt->change(level => 2);
57
58ok($objEt->eq("s\x{30C}", "S\x{30C}"));
59ok($objEt->eq("z", "Z"));
60ok($objEt->eq("z\x{30C}", "Z\x{30C}"));
61ok($objEt->eq("w", "W"));
62ok($objEt->eq("o\x{303}", "O\x{303}"));
63ok($objEt->eq("a\x{308}", "A\x{308}"));
64ok($objEt->eq("o\x{308}", "O\x{308}"));
65ok($objEt->eq("u\x{308}", "U\x{308}"));
66
67# 20
68
69$objEt->change(level => 3);
70
71ok($objEt->lt("s\x{30C}", "S\x{30C}"));
72ok($objEt->lt("z", "Z"));
73ok($objEt->lt("z\x{30C}", "Z\x{30C}"));
74ok($objEt->lt("w", "W"));
75ok($objEt->lt("o\x{303}", "O\x{303}"));
76ok($objEt->lt("a\x{308}", "A\x{308}"));
77ok($objEt->lt("o\x{308}", "O\x{308}"));
78ok($objEt->lt("u\x{308}", "U\x{308}"));
79
80# 28
81
82ok($objEt->eq("s\x{30C}", "\x{161}"));
83ok($objEt->eq("S\x{30C}", "\x{160}"));
84ok($objEt->eq("z\x{30C}", "\x{17E}"));
85ok($objEt->eq("Z\x{30C}", "\x{17D}"));
86ok($objEt->eq("o\x{303}", pack('U', 0xF5)));
87ok($objEt->eq("O\x{303}", pack('U', 0xD5)));
88ok($objEt->eq("a\x{308}", pack('U', 0xE4)));
89ok($objEt->eq("A\x{308}", pack('U', 0xC4)));
90ok($objEt->eq("o\x{308}", pack('U', 0xF6)));
91ok($objEt->eq("O\x{308}", pack('U', 0xD6)));
92ok($objEt->eq("u\x{308}", pack('U', 0xFC)));
93ok($objEt->eq("U\x{308}", pack('U', 0xDC)));
94
95# 40
96
97ok($objEt->eq("o\x{303}\x{301}", "\x{1E4D}"));
98ok($objEt->eq("O\x{303}\x{301}", "\x{1E4C}"));
99ok($objEt->eq("o\x{303}\x{304}", "\x{22D}"));
100ok($objEt->eq("O\x{303}\x{304}", "\x{22C}"));
101ok($objEt->eq("o\x{303}\x{308}", "\x{1E4F}"));
102ok($objEt->eq("O\x{303}\x{308}", "\x{1E4E}"));
103ok($objEt->eq("o\x{303}\x{31B}", "\x{1EE1}"));
104ok($objEt->eq("O\x{303}\x{31B}", "\x{1EE0}"));
105ok($objEt->eq("a\x{308}\x{304}", "\x{1DF}"));
106ok($objEt->eq("A\x{308}\x{304}", "\x{1DE}"));
107ok($objEt->eq("o\x{308}\x{304}", "\x{22B}"));
108ok($objEt->eq("O\x{308}\x{304}", "\x{22A}"));
109ok($objEt->eq("u\x{308}\x{300}", "\x{1DC}"));
110ok($objEt->eq("U\x{308}\x{300}", "\x{1DB}"));
111ok($objEt->eq("u\x{308}\x{301}", "\x{1D8}"));
112ok($objEt->eq("U\x{308}\x{301}", "\x{1D7}"));
113ok($objEt->eq("u\x{308}\x{304}", "\x{1D6}"));
114ok($objEt->eq("U\x{308}\x{304}", "\x{1D5}"));
115ok($objEt->eq("u\x{308}\x{30C}", "\x{1DA}"));
116ok($objEt->eq("U\x{308}\x{30C}", "\x{1D9}"));
117
118# 60
119