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..54\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 $dot  = _pack_U(0xB7);
32
33my $objCa = Unicode::Collate::Locale->
34    new(locale => 'CA', normalization => undef);
35
36ok($objCa->getlocale, 'ca');
37
38$objCa->change(level => 1);
39
40ok($objCa->lt("c", "ch"));
41ok($objCa->lt("cz","ch"));
42ok($objCa->gt("d", "ch"));
43ok($objCa->lt("l", "ll"));
44ok($objCa->lt("lz","ll"));
45ok($objCa->gt("m", "ll"));
46
47# 8
48
49ok($objCa->eq("a\x{300}a", "aa\x{300}"));
50
51$objCa->change(level => 2);
52
53ok($objCa->gt("a\x{300}a", "aa\x{300}"));
54ok($objCa->lt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}"));
55ok($objCa->lt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}"));
56
57# 12
58
59ok($objCa->eq("ch", "cH"));
60ok($objCa->eq("cH", "Ch"));
61ok($objCa->eq("Ch", "CH"));
62
63ok($objCa->eq("ll", "lL"));
64ok($objCa->eq("lL", "Ll"));
65ok($objCa->eq("Ll", "LL"));
66ok($objCa->eq("ll", "l${dot}l"));
67ok($objCa->eq("lL", "l${dot}l"));
68ok($objCa->eq("lL", "l${dot}L"));
69ok($objCa->eq("Ll", "l${dot}L"));
70ok($objCa->eq("Ll", "L${dot}l"));
71ok($objCa->eq("LL", "L${dot}l"));
72ok($objCa->eq("LL", "L${dot}L"));
73
74# 25
75
76$objCa->change(level => 3);
77
78ok($objCa->lt("ch", "cH"));
79ok($objCa->lt("cH", "Ch"));
80ok($objCa->lt("Ch", "CH"));
81
82ok($objCa->lt("ll", "lL"));
83ok($objCa->lt("lL", "Ll"));
84ok($objCa->lt("Ll", "LL"));
85ok($objCa->lt("ll", "l${dot}l"));
86ok($objCa->gt("lL", "l${dot}l"));
87ok($objCa->lt("lL", "l${dot}L"));
88ok($objCa->gt("Ll", "l${dot}L"));
89ok($objCa->lt("Ll", "L${dot}l"));
90ok($objCa->gt("LL", "L${dot}l"));
91ok($objCa->lt("LL", "L${dot}L"));
92
93# 38
94
95$objCa->change(upper_before_lower => 1);
96
97ok($objCa->gt("ch", "cH"));
98ok($objCa->gt("cH", "Ch"));
99ok($objCa->gt("Ch", "CH"));
100
101ok($objCa->gt("ll", "lL"));
102ok($objCa->gt("lL", "Ll"));
103ok($objCa->gt("Ll", "LL"));
104ok($objCa->lt("ll", "l${dot}l"));
105ok($objCa->lt("lL", "l${dot}l"));
106ok($objCa->lt("lL", "l${dot}L"));
107ok($objCa->lt("Ll", "l${dot}L"));
108ok($objCa->lt("Ll", "L${dot}l"));
109ok($objCa->lt("LL", "L${dot}l"));
110ok($objCa->lt("LL", "L${dot}L"));
111
112# 51
113
114$objCa->change(backwards => 2, level => 2);
115
116ok($objCa->lt("a\x{300}a", "aa\x{300}"));
117ok($objCa->gt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}"));
118ok($objCa->gt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}"));
119
120# 54
121