1
2BEGIN {
3    unless ("A" eq pack('U', 0x41)) {
4	print "1..0 # Unicode::Collate " .
5	    "cannot stringify a Unicode code point\n";
6	exit 0;
7    }
8    if ($ENV{PERL_CORE}) {
9	chdir('t') if -d 't';
10	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
11    }
12}
13
14use strict;
15use warnings;
16BEGIN { $| = 1; print "1..41\n"; }
17my $count = 0;
18sub ok ($;$) {
19    my $p = my $r = shift;
20    if (@_) {
21	my $x = shift;
22	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
23    }
24    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
25}
26
27use Unicode::Collate::Locale;
28
29ok(1);
30
31#########################
32
33my $dot  = pack 'U', 0xB7;
34
35my $objCa = Unicode::Collate::Locale->
36    new(locale => 'CA', normalization => undef);
37
38ok($objCa->getlocale, 'ca');
39
40$objCa->change(level => 1);
41
42ok($objCa->lt("c", "ch"));
43ok($objCa->lt("cz","ch"));
44ok($objCa->gt("d", "ch"));
45ok($objCa->lt("l", "ll"));
46ok($objCa->lt("lz","ll"));
47ok($objCa->gt("m", "ll"));
48
49# 8
50
51ok($objCa->eq("a\x{300}a", "aa\x{300}"));
52
53$objCa->change(level => 2);
54
55ok($objCa->lt("a\x{300}a", "aa\x{300}"));
56ok($objCa->gt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}"));
57ok($objCa->gt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}"));
58
59# 12
60
61ok($objCa->eq("ch", "cH"));
62ok($objCa->eq("cH", "Ch"));
63ok($objCa->eq("Ch", "CH"));
64
65ok($objCa->eq("ll", "lL"));
66ok($objCa->eq("lL", "Ll"));
67ok($objCa->eq("Ll", "LL"));
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"));
73ok($objCa->eq("LL", "L${dot}l"));
74ok($objCa->eq("LL", "L${dot}L"));
75
76# 25
77
78$objCa->change(level => 3);
79
80ok($objCa->lt("ch", "cH"));
81ok($objCa->lt("cH", "Ch"));
82ok($objCa->lt("Ch", "CH"));
83
84ok($objCa->lt("ll", "lL"));
85ok($objCa->lt("lL", "Ll"));
86ok($objCa->lt("Ll", "LL"));
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"));
92ok($objCa->gt("LL", "L${dot}l"));
93ok($objCa->lt("LL", "L${dot}L"));
94
95# 38
96
97$objCa->change(backwards => undef, level => 2);
98
99ok($objCa->gt("a\x{300}a", "aa\x{300}"));
100ok($objCa->lt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}"));
101ok($objCa->lt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}"));
102
103# 41
104