xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1b39c5158Smillert
2b39c5158SmillertBEGIN {
3b39c5158Smillert    if ($ENV{PERL_CORE}) {
4b39c5158Smillert	chdir('t') if -d 't';
5b39c5158Smillert	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6b39c5158Smillert    }
7b39c5158Smillert}
8b39c5158Smillert
9b39c5158Smillertuse strict;
10b39c5158Smillertuse warnings;
11*256a93a4Safresh1BEGIN { $| = 1; print "1..1426\n"; } # 1 + 75 x @Versions
12898184e3Ssthenmy $count = 0;
13898184e3Ssthensub ok ($;$) {
14898184e3Ssthen    my $p = my $r = shift;
15898184e3Ssthen    if (@_) {
16898184e3Ssthen	my $x = shift;
17898184e3Ssthen	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
18898184e3Ssthen    }
19898184e3Ssthen    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
20898184e3Ssthen}
21898184e3Ssthen
22b39c5158Smillertuse Unicode::Collate;
23b39c5158Smillert
24b39c5158Smillertok(1);
25b39c5158Smillert
26*256a93a4Safresh1sub _pack_U   { Unicode::Collate::pack_U(@_) }
27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28*256a93a4Safresh1
29898184e3Ssthen#########################
30898184e3Ssthen
31898184e3Ssthenmy $coll = Unicode::Collate->new(
32b39c5158Smillert    table => 'keys.txt',
33b39c5158Smillert    normalization => undef,
34b39c5158Smillert);
35b39c5158Smillert
36898184e3Ssthen# CJK UI Ext > CJK UI.
37898184e3Ssthen# [ UCA_Version 8: Ext.A < UI and BMP < Ext.B (code point order) ]
38b39c5158Smillert
39898184e3Ssthen# 4E00..9FA5 are CJK UI.
40898184e3Ssthen# 9FA6..9FBB are CJK UI since UCA_Version 14 (Unicode 4.1).
41898184e3Ssthen# 9FBC..9FC3 are CJK UI since UCA_Version 18 (Unicode 5.1).
42898184e3Ssthen# 9FC4..9FCB are CJK UI since UCA_Version 20 (Unicode 5.2).
43898184e3Ssthen# 9FCC       is  CJK UI since UCA_Version 24 (Unicode 6.1).
445759b3d2Safresh1# 9FCD..9FD5 are CJK UI since UCA_Version 32 (Unicode 8.0).
455759b3d2Safresh1# 9FD6..9FEA are CJK UI since UCA_Version 36 (Unicode 10.0).
46*256a93a4Safresh1# 9FEB..9FEF are CJK UI since UCA_Version 38 (Unicode 11.0).
47*256a93a4Safresh1# 9FF0..9FFC are CJK UI since UCA_Version 43 (Unicode 13.0).
48b39c5158Smillert
49898184e3Ssthen# 3400..4DB5   are CJK UI Ext.A since UCA_Version 8  (Unicode 3.0).
50*256a93a4Safresh1# 4DB6..4DBF   are CJK UI Ext.A since UCA_Version 43 (Unicode 13.0).
51898184e3Ssthen# 20000..2A6D6 are CJK UI Ext.B since UCA_Version 8  (Unicode 3.1).
52*256a93a4Safresh1# 2A6D7..2A6DD are CJK UI Ext.B since UCA_Version 43 (Unicode 13.0).
53898184e3Ssthen# 2A700..2B734 are CJK UI Ext.C since UCA_Version 20 (Unicode 5.2).
54898184e3Ssthen# 2B740..2B81D are CJK UI Ext.D since UCA_Version 22 (Unicode 6.0).
555759b3d2Safresh1# 2B820..2CEA1 are CJK UI Ext.E since UCA_Version 32 (Unicode 8.0).
565759b3d2Safresh1# 2CEB0..2EBE0 are CJK UI Ext.F since UCA_Version 36 (Unicode 10.0).
57*256a93a4Safresh1# 30000..3134A are CJK UI Ext.G since UCA_Version 43 (Unicode 13.0).
58b39c5158Smillert
59*256a93a4Safresh1my @Versions = ( 8,  9, 11, 14, 16, 18, 20, 22, 24, 26,
60*256a93a4Safresh1		28, 30, 32, 34, 36, 38, 40, 41, 43);
61b39c5158Smillert
62898184e3Ssthenfor my $v (@Versions) {
63898184e3Ssthen    $coll->change(UCA_Version => $v);
64b39c5158Smillert
65898184e3Ssthen    # Ext.A > UI
66898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{4E00}") == ($v >=  9 ? 1 : -1)); # UI
67898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FA5}") == ($v >=  9 ? 1 : -1)); # UI
68898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FA6}") == ($v >= 14 ? 1 : -1)); # new
69898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FBB}") == ($v >= 14 ? 1 : -1)); # new
70898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FBC}") == ($v >= 18 ? 1 : -1)); # new
71898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FC3}") == ($v >= 18 ? 1 : -1)); # new
72898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FC4}") == ($v >= 20 ? 1 : -1)); # new
73898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FCB}") == ($v >= 20 ? 1 : -1)); # new
74898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FCC}") == ($v >= 24 ? 1 : -1)); # new
755759b3d2Safresh1    ok($coll->cmp("\x{3400}", "\x{9FCD}") == ($v >= 32 ? 1 : -1)); # new
765759b3d2Safresh1    ok($coll->cmp("\x{3400}", "\x{9FD5}") == ($v >= 32 ? 1 : -1)); # new
775759b3d2Safresh1    ok($coll->cmp("\x{3400}", "\x{9FD6}") == ($v >= 36 ? 1 : -1)); # new
785759b3d2Safresh1    ok($coll->cmp("\x{3400}", "\x{9FEA}") == ($v >= 36 ? 1 : -1)); # new
79*256a93a4Safresh1    ok($coll->cmp("\x{3400}", "\x{9FEB}") == ($v >= 38 ? 1 : -1)); # new
80*256a93a4Safresh1    ok($coll->cmp("\x{3400}", "\x{9FEF}") == ($v >= 38 ? 1 : -1)); # new
81*256a93a4Safresh1    ok($coll->cmp("\x{3400}", "\x{9FF0}") == ($v >= 43 ? 1 : -1)); # new
82*256a93a4Safresh1    ok($coll->cmp("\x{3400}", "\x{9FFC}") == ($v >= 43 ? 1 : -1)); # new
83*256a93a4Safresh1    ok($coll->cmp("\x{3400}", "\x{9FFD}") == -1); # na
84898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{9FFF}") == -1); # na
85898184e3Ssthen
86898184e3Ssthen    # UI < UI
87898184e3Ssthen    ok($coll->cmp("\x{4E00}", "\x{9FA5}") == -1); # UI  < UI
88898184e3Ssthen    ok($coll->cmp("\x{9FA5}", "\x{9FA6}") == -1); # UI  < new
89898184e3Ssthen    ok($coll->cmp("\x{9FA6}", "\x{9FBB}") == -1); # new < new
90898184e3Ssthen    ok($coll->cmp("\x{9FBB}", "\x{9FBC}") == -1); # new < new
91898184e3Ssthen    ok($coll->cmp("\x{9FBC}", "\x{9FC3}") == -1); # new < new
92898184e3Ssthen    ok($coll->cmp("\x{9FC3}", "\x{9FC4}") == -1); # new < new
93898184e3Ssthen    ok($coll->cmp("\x{9FC4}", "\x{9FCB}") == -1); # new < new
94898184e3Ssthen    ok($coll->cmp("\x{9FCB}", "\x{9FCC}") == -1); # new < new
955759b3d2Safresh1    ok($coll->cmp("\x{9FCC}", "\x{9FCD}") == -1); # new < new
965759b3d2Safresh1    ok($coll->cmp("\x{9FCD}", "\x{9FD5}") == -1); # new < new
975759b3d2Safresh1    ok($coll->cmp("\x{9FD5}", "\x{9FD6}") == -1); # new < new
985759b3d2Safresh1    ok($coll->cmp("\x{9FD6}", "\x{9FEA}") == -1); # new < new
99*256a93a4Safresh1    ok($coll->cmp("\x{9FEA}", "\x{9FEB}") == -1); # new < new
100*256a93a4Safresh1    ok($coll->cmp("\x{9FEB}", "\x{9FEF}") == -1); # new < new
101*256a93a4Safresh1    ok($coll->cmp("\x{9FEF}", "\x{9FF0}") == -1); # new < new
102*256a93a4Safresh1    ok($coll->cmp("\x{9FF0}", "\x{9FFC}") == -1); # new < new
103*256a93a4Safresh1    ok($coll->cmp("\x{9FFC}", "\x{9FFD}") == -1); # new < na
104*256a93a4Safresh1    ok($coll->cmp("\x{9FFD}", "\x{9FFF}") == -1); # na  < na
105898184e3Ssthen
106898184e3Ssthen    # Ext.A < Ext.B
107898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{20000}") == -1);
108898184e3Ssthen
109898184e3Ssthen    # Ext.A
110898184e3Ssthen    ok($coll->cmp("\x{3400}", "\x{4DB5}") == -1); # A < A
111898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{3400}") == ($v >=  8 ? 1 : -1)); # na > A
112898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{4DB5}") == ($v >=  8 ? 1 : -1)); # na > A
113*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{4DB6}") == ($v >= 43 ? 1 : -1)); # na > A
114*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{4DBF}") == ($v >= 43 ? 1 : -1)); # na > A
115898184e3Ssthen
116898184e3Ssthen    # Ext.B
117898184e3Ssthen    ok($coll->cmp("\x{20000}","\x{2A6D6}") == -1); # B < B
118898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{20000}") == ($v >=  9 ? 1 : -1)); # na > B
119898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2A6D6}") == ($v >=  9 ? 1 : -1)); # na > B
120*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2A6D7}") == ($v >= 43 ? 1 : -1)); # na > B
121*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2A6DD}") == ($v >= 43 ? 1 : -1)); # na > B
122*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2A6DE}") == -1); # na < na
123898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2A6DF}") == -1); # na < na
124898184e3Ssthen
125898184e3Ssthen    # Ext.C
126898184e3Ssthen    ok($coll->cmp("\x{2A700}","\x{2B734}") == -1); # C < C
127898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2A700}") == ($v >= 20 ? 1 : -1)); # na > C
128898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B734}") == ($v >= 20 ? 1 : -1)); # na > C
129898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B735}") == -1); # na < na
130898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B73F}") == -1); # na < na
131898184e3Ssthen
132898184e3Ssthen    # Ext.D
133898184e3Ssthen    ok($coll->cmp("\x{2B740}","\x{2B81D}") == -1); # D < D
134898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B740}") == ($v >= 22 ? 1 : -1)); # na > D
135898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B81D}") == ($v >= 22 ? 1 : -1)); # na > D
136898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B81E}") == -1); # na < na
137898184e3Ssthen    ok($coll->cmp("\x{2FFF}", "\x{2B81F}") == -1); # na < na
1385759b3d2Safresh1
1395759b3d2Safresh1    # Ext.E
1405759b3d2Safresh1    ok($coll->cmp("\x{2B820}","\x{2CEA1}") == -1); # E < E
1415759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2B820}") == ($v >= 32 ? 1 : -1)); # na > E
1425759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2CEA1}") == ($v >= 32 ? 1 : -1)); # na > E
1435759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2CEA2}") == -1); # na < na
1445759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2CEAF}") == -1); # na < na
1455759b3d2Safresh1
1465759b3d2Safresh1    # Ext.F
1475759b3d2Safresh1    ok($coll->cmp("\x{2CEB0}","\x{2EBE0}") == -1); # F < F
1485759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2CEB0}") == ($v >= 36 ? 1 : -1)); # na > F
1495759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2EBE0}") == ($v >= 36 ? 1 : -1)); # na > F
1505759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2EBE1}") == -1); # na < na
1515759b3d2Safresh1    ok($coll->cmp("\x{2FFF}", "\x{2EBEF}") == -1); # na < na
152*256a93a4Safresh1
153*256a93a4Safresh1    # Ext.G
154*256a93a4Safresh1    ok($coll->cmp("\x{30000}","\x{3134A}") == -1); # G < G
155*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{30000}") == ($v >= 43 ? 1 : -1)); # na > G
156*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{3134A}") == ($v >= 43 ? 1 : -1)); # na > G
157*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{3134B}") == -1); # na < na
158*256a93a4Safresh1    ok($coll->cmp("\x{2FFF}", "\x{3134F}") == -1); # na < na
159898184e3Ssthen}
160b39c5158Smillert
161