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