xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
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..1331\n"; } # 1 + 70 x @Versions
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;
23
24ok(1);
25
26sub _pack_U   { Unicode::Collate::pack_U(@_) }
27sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28
29#########################
30
31my @Versions = ( 8,  9, 11, 14, 16, 18, 20, 22, 24, 26,
32		28, 30, 32, 34, 36, 38, 40, 41, 43);
33
34# 12 compatibility ideographs are treated as unified ideographs:
35# FA0E, FA0F, FA11, FA13, FA14, FA1F, FA21, FA23, FA24, FA27, FA28, FA29.
36
37my $Collator = Unicode::Collate->new(
38    table => 'keys.txt',
39    normalization => undef,
40);
41
42for my $v (@Versions) {
43    $Collator->change(UCA_Version => $v);
44    ok($Collator->lt("\x{4E00}", "\x{1FFF}"));
45    ok($Collator->lt("\x{9FA5}", "\x{1FFF}"));
46    ok($Collator->gt("\x{FA00}", "\x{1FFF}"));
47    ok($Collator->gt("\x{FA0D}", "\x{1FFF}"));
48    ok($Collator->lt("\x{FA0E}", "\x{1FFF}"));
49    ok($Collator->lt("\x{FA0F}", "\x{1FFF}"));
50    ok($Collator->gt("\x{FA10}", "\x{1FFF}"));
51    ok($Collator->lt("\x{FA11}", "\x{1FFF}"));
52    ok($Collator->gt("\x{FA12}", "\x{1FFF}"));
53    ok($Collator->lt("\x{FA13}", "\x{1FFF}"));
54    ok($Collator->lt("\x{FA14}", "\x{1FFF}"));
55    ok($Collator->gt("\x{FA15}", "\x{1FFF}"));
56    ok($Collator->gt("\x{FA16}", "\x{1FFF}"));
57    ok($Collator->gt("\x{FA17}", "\x{1FFF}"));
58    ok($Collator->gt("\x{FA18}", "\x{1FFF}"));
59    ok($Collator->gt("\x{FA19}", "\x{1FFF}"));
60    ok($Collator->gt("\x{FA1A}", "\x{1FFF}"));
61    ok($Collator->gt("\x{FA1B}", "\x{1FFF}"));
62    ok($Collator->gt("\x{FA1C}", "\x{1FFF}"));
63    ok($Collator->gt("\x{FA1D}", "\x{1FFF}"));
64    ok($Collator->gt("\x{FA1E}", "\x{1FFF}"));
65    ok($Collator->lt("\x{FA1F}", "\x{1FFF}"));
66    ok($Collator->gt("\x{FA20}", "\x{1FFF}"));
67    ok($Collator->lt("\x{FA21}", "\x{1FFF}"));
68    ok($Collator->gt("\x{FA22}", "\x{1FFF}"));
69    ok($Collator->lt("\x{FA23}", "\x{1FFF}"));
70    ok($Collator->lt("\x{FA24}", "\x{1FFF}"));
71    ok($Collator->gt("\x{FA25}", "\x{1FFF}"));
72    ok($Collator->gt("\x{FA26}", "\x{1FFF}"));
73    ok($Collator->lt("\x{FA27}", "\x{1FFF}"));
74    ok($Collator->lt("\x{FA28}", "\x{1FFF}"));
75    ok($Collator->lt("\x{FA29}", "\x{1FFF}"));
76    ok($Collator->gt("\x{FA2A}", "\x{1FFF}"));
77    ok($Collator->gt("\x{FA30}", "\x{1FFF}"));
78    ok($Collator->gt("\x{FAFF}", "\x{1FFF}"));
79}
80
81my $IgnoreCJK = Unicode::Collate->new(
82    table => 'keys.txt',
83    normalization => undef,
84    overrideCJK => sub {()},
85);
86
87for my $v (@Versions) {
88    $IgnoreCJK->change(UCA_Version => $v);
89    ok($IgnoreCJK->eq("\x{4E00}", ""));
90    ok($IgnoreCJK->eq("\x{9FA5}", ""));
91    ok($IgnoreCJK->gt("\x{FA00}", "\x{1FFF}"));
92    ok($IgnoreCJK->gt("\x{FA0D}", "\x{1FFF}"));
93    ok($IgnoreCJK->eq("\x{FA0E}", ""));
94    ok($IgnoreCJK->eq("\x{FA0F}", ""));
95    ok($IgnoreCJK->gt("\x{FA10}", "\x{1FFF}"));
96    ok($IgnoreCJK->eq("\x{FA11}", ""));
97    ok($IgnoreCJK->gt("\x{FA12}", "\x{1FFF}"));
98    ok($IgnoreCJK->eq("\x{FA13}", ""));
99    ok($IgnoreCJK->eq("\x{FA14}", ""));
100    ok($IgnoreCJK->gt("\x{FA15}", "\x{1FFF}"));
101    ok($IgnoreCJK->gt("\x{FA16}", "\x{1FFF}"));
102    ok($IgnoreCJK->gt("\x{FA17}", "\x{1FFF}"));
103    ok($IgnoreCJK->gt("\x{FA18}", "\x{1FFF}"));
104    ok($IgnoreCJK->gt("\x{FA19}", "\x{1FFF}"));
105    ok($IgnoreCJK->gt("\x{FA1A}", "\x{1FFF}"));
106    ok($IgnoreCJK->gt("\x{FA1B}", "\x{1FFF}"));
107    ok($IgnoreCJK->gt("\x{FA1C}", "\x{1FFF}"));
108    ok($IgnoreCJK->gt("\x{FA1D}", "\x{1FFF}"));
109    ok($IgnoreCJK->gt("\x{FA1E}", "\x{1FFF}"));
110    ok($IgnoreCJK->eq("\x{FA1F}", ""));
111    ok($IgnoreCJK->gt("\x{FA20}", "\x{1FFF}"));
112    ok($IgnoreCJK->eq("\x{FA21}", ""));
113    ok($IgnoreCJK->gt("\x{FA22}", "\x{1FFF}"));
114    ok($IgnoreCJK->eq("\x{FA23}", ""));
115    ok($IgnoreCJK->eq("\x{FA24}", ""));
116    ok($IgnoreCJK->gt("\x{FA25}", "\x{1FFF}"));
117    ok($IgnoreCJK->gt("\x{FA26}", "\x{1FFF}"));
118    ok($IgnoreCJK->eq("\x{FA27}", ""));
119    ok($IgnoreCJK->eq("\x{FA28}", ""));
120    ok($IgnoreCJK->eq("\x{FA29}", ""));
121    ok($IgnoreCJK->gt("\x{FA2A}", "\x{1FFF}"));
122    ok($IgnoreCJK->gt("\x{FA30}", "\x{1FFF}"));
123    ok($IgnoreCJK->gt("\x{FAFF}", "\x{1FFF}"));
124}
125
126