1*256a93a4Safresh1
2*256a93a4Safresh1BEGIN {
3*256a93a4Safresh1    if ($ENV{PERL_CORE}) {
4*256a93a4Safresh1	chdir('t') if -d 't';
5*256a93a4Safresh1	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6*256a93a4Safresh1    }
7*256a93a4Safresh1}
8*256a93a4Safresh1
9*256a93a4Safresh1use strict;
10*256a93a4Safresh1use warnings;
11*256a93a4Safresh1BEGIN { $| = 1; print "1..100\n"; } # 5 + 5 x @Versions
12*256a93a4Safresh1my $count = 0;
13*256a93a4Safresh1sub ok ($;$) {
14*256a93a4Safresh1    my $p = my $r = shift;
15*256a93a4Safresh1    if (@_) {
16*256a93a4Safresh1	my $x = shift;
17*256a93a4Safresh1	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
18*256a93a4Safresh1    }
19*256a93a4Safresh1    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
20*256a93a4Safresh1}
21*256a93a4Safresh1
22*256a93a4Safresh1use Unicode::Collate;
23*256a93a4Safresh1
24*256a93a4Safresh1ok(1);
25*256a93a4Safresh1
26*256a93a4Safresh1sub _pack_U   { Unicode::Collate::pack_U(@_) }
27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28*256a93a4Safresh1
29*256a93a4Safresh1#########################
30*256a93a4Safresh1
31*256a93a4Safresh1my @Versions = ( 8,  9, 11, 14, 16, 18, 20, 22, 24, 26,
32*256a93a4Safresh1		28, 30, 32, 34, 36, 38, 40, 41, 43);
33*256a93a4Safresh1
34*256a93a4Safresh1my $Collator = Unicode::Collate->new(
35*256a93a4Safresh1    table => 'keys.txt',
36*256a93a4Safresh1    normalization => undef,
37*256a93a4Safresh1    UCA_Version => 43,
38*256a93a4Safresh1);
39*256a93a4Safresh1
40*256a93a4Safresh1ok($Collator->viewSortKey("\x{18B00}"),
41*256a93a4Safresh1   '[FB02 8000 | 0020 | 0002 | FFFF |]');
42*256a93a4Safresh1ok($Collator->viewSortKey("\x{18B01}"),
43*256a93a4Safresh1   '[FB02 8001 | 0020 | 0002 | FFFF |]');
44*256a93a4Safresh1ok($Collator->viewSortKey("\x{18C00}"),
45*256a93a4Safresh1   '[FB02 8100 | 0020 | 0002 | FFFF |]');
46*256a93a4Safresh1ok($Collator->viewSortKey("\x{18CD5}"),
47*256a93a4Safresh1   '[FB02 81D5 | 0020 | 0002 | FFFF |]');
48*256a93a4Safresh1
49*256a93a4Safresh1# Khitan < CJK UI (4E00) < Unassigned.
50*256a93a4Safresh1
51*256a93a4Safresh1# 18B00..18CD5 are Khitan Characters since UCA_Version 43 (Unicode 13.0).
52*256a93a4Safresh1
53*256a93a4Safresh1for my $v (@Versions) {
54*256a93a4Safresh1    $Collator->change(UCA_Version => $v);
55*256a93a4Safresh1
56*256a93a4Safresh1    ok($Collator->cmp("\x{18B00}", "\x{4E00}") == ($v >= 43 ? -1 : 1));
57*256a93a4Safresh1    ok($Collator->cmp("\x{18C00}", "\x{4E00}") == ($v >= 43 ? -1 : 1));
58*256a93a4Safresh1    ok($Collator->cmp("\x{18CD5}", "\x{4E00}") == ($v >= 43 ? -1 : 1));
59*256a93a4Safresh1    ok($Collator->cmp("\x{18CD6}", "\x{4E00}") == 1);
60*256a93a4Safresh1    ok($Collator->cmp("\x{18CDF}", "\x{4E00}") == 1);
61*256a93a4Safresh1}
62