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..90\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 $objFa = Unicode::Collate::Locale->
32    new(locale => 'FA', normalization => undef);
33
34ok($objFa->getlocale, 'fa');
35
36$objFa->change(level => 3);
37
38ok($objFa->eq("\x{622}", "\x{627}\x{653}"));
39ok($objFa->eq("\x{623}", "\x{627}\x{654}"));
40ok($objFa->eq("\x{625}", "\x{627}\x{655}"));
41ok($objFa->eq("\x{624}", "\x{648}\x{654}"));
42ok($objFa->eq("\x{626}", "\x{64A}\x{654}"));
43ok($objFa->eq("\x{6C2}", "\x{6C1}\x{654}"));
44ok($objFa->eq("\x{6C0}", "\x{6D5}\x{654}"));
45ok($objFa->eq("\x{6D3}", "\x{6D2}\x{654}"));
46
47# 10
48
49ok($objFa->lt("\x{6CC}\x{654}", "\x{649}\x{654}"));
50ok($objFa->lt("\x{649}\x{654}", "\x{626}"));
51
52$objFa->change(level => 2);
53
54ok($objFa->eq("\x{6CC}\x{654}", "\x{649}\x{654}"));
55ok($objFa->eq("\x{649}\x{654}", "\x{626}"));
56
57# 14
58
59ok($objFa->lt("\x{64E}", "\x{650}"));
60ok($objFa->lt("\x{650}", "\x{64F}"));
61ok($objFa->lt("\x{64F}", "\x{64B}"));
62ok($objFa->lt("\x{64B}", "\x{64D}"));
63ok($objFa->lt("\x{64D}", "\x{64C}"));
64
65ok($objFa->lt("\x{627}", "\x{671}"));
66
67ok($objFa->lt("\x{621}", "\x{623}"));
68ok($objFa->lt("\x{623}", "\x{672}"));
69ok($objFa->lt("\x{672}", "\x{625}"));
70ok($objFa->lt("\x{625}", "\x{673}"));
71ok($objFa->lt("\x{673}", "\x{624}"));
72ok($objFa->lt("\x{624}", "\x{6CC}\x{654}"));
73
74ok($objFa->lt("\x{6A9}", "\x{6AA}"));
75ok($objFa->lt("\x{6AA}", "\x{6AB}"));
76ok($objFa->lt("\x{6AB}", "\x{643}"));
77ok($objFa->lt("\x{643}", "\x{6AC}"));
78ok($objFa->lt("\x{6AC}", "\x{6AD}"));
79ok($objFa->lt("\x{6AD}", "\x{6AE}"));
80
81ok($objFa->lt("\x{647}", "\x{6D5}"));
82ok($objFa->lt("\x{6D5}", "\x{6C1}"));
83ok($objFa->lt("\x{6C1}", "\x{629}"));
84ok($objFa->lt("\x{629}", "\x{6C3}"));
85ok($objFa->lt("\x{6C3}", "\x{6C0}"));
86ok($objFa->lt("\x{6C0}", "\x{6BE}"));
87
88ok($objFa->lt("\x{6CC}", "\x{649}"));
89ok($objFa->lt("\x{649}", "\x{6D2}"));
90ok($objFa->lt("\x{6D2}", "\x{64A}"));
91ok($objFa->lt("\x{64A}", "\x{6D0}"));
92ok($objFa->lt("\x{6D0}", "\x{6D1}"));
93ok($objFa->lt("\x{6D1}", "\x{6CD}"));
94ok($objFa->lt("\x{6CD}", "\x{6CE}"));
95
96# 45
97
98$objFa->change(level => 1);
99
100ok($objFa->eq("\x{64E}", "\x{650}"));
101ok($objFa->eq("\x{650}", "\x{64F}"));
102ok($objFa->eq("\x{64F}", "\x{64B}"));
103ok($objFa->eq("\x{64B}", "\x{64D}"));
104ok($objFa->eq("\x{64D}", "\x{64C}"));
105
106ok($objFa->eq("\x{627}", "\x{671}"));
107
108ok($objFa->eq("\x{621}", "\x{623}"));
109ok($objFa->eq("\x{623}", "\x{672}"));
110ok($objFa->eq("\x{672}", "\x{625}"));
111ok($objFa->eq("\x{625}", "\x{673}"));
112ok($objFa->eq("\x{673}", "\x{624}"));
113ok($objFa->eq("\x{624}", "\x{6CC}\x{654}"));
114
115ok($objFa->eq("\x{6A9}", "\x{6AA}"));
116ok($objFa->eq("\x{6AA}", "\x{6AB}"));
117ok($objFa->eq("\x{6AB}", "\x{643}"));
118ok($objFa->eq("\x{643}", "\x{6AC}"));
119ok($objFa->eq("\x{6AC}", "\x{6AD}"));
120ok($objFa->eq("\x{6AD}", "\x{6AE}"));
121
122ok($objFa->eq("\x{647}", "\x{6D5}"));
123ok($objFa->eq("\x{6D5}", "\x{6C1}"));
124ok($objFa->eq("\x{6C1}", "\x{629}"));
125ok($objFa->eq("\x{629}", "\x{6C3}"));
126ok($objFa->eq("\x{6C3}", "\x{6C0}"));
127ok($objFa->eq("\x{6C0}", "\x{6BE}"));
128
129ok($objFa->eq("\x{6CC}", "\x{649}"));
130ok($objFa->eq("\x{649}", "\x{6D2}"));
131ok($objFa->eq("\x{6D2}", "\x{64A}"));
132ok($objFa->eq("\x{64A}", "\x{6D0}"));
133ok($objFa->eq("\x{6D0}", "\x{6D1}"));
134ok($objFa->eq("\x{6D1}", "\x{6CD}"));
135ok($objFa->eq("\x{6CD}", "\x{6CE}"));
136
137# 76
138
139for my $h (0, 1) {
140    no warnings 'utf8';
141    my $t = $h ? _pack_U(0xFFFF) : "";
142    $objFa->change(highestFFFF => 1) if $h;
143
144    ok($objFa->lt("\x{8AC}$t", "\x{622}"));
145    ok($objFa->lt("\x{622}$t", "\x{627}"));
146    ok($objFa->lt("\x{627}$t", "\x{621}"));
147    ok($objFa->lt("\x{621}$t", "\x{66E}"));
148    ok($objFa->lt("\x{66E}$t", "\x{628}"));
149
150    ok($objFa->lt("\x{6CF}$t", "\x{647}"));
151    ok($objFa->lt("\x{647}$t", "\x{778}"));
152}
153# 90
154