This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Unicode-Collate from version 1.28 to 1.29
[perl5.git] / cpan / Unicode-Collate / t / nushu.t
CommitLineData
eaecde9a
CBW
1
2BEGIN {
3 unless ('A' eq pack('U', 0x41)) {
4 print "1..0 # Unicode::Collate cannot pack a Unicode code point\n";
5 exit 0;
6 }
7 unless (0x41 == unpack('U', 'A')) {
8 print "1..0 # Unicode::Collate cannot get a Unicode code point\n";
9 exit 0;
10 }
11 if ($ENV{PERL_CORE}) {
12 chdir('t') if -d 't';
13 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
14 }
15}
16
17use strict;
18use warnings;
0bb7e24a 19BEGIN { $| = 1; print "1..233\n"; } # 5 + 12 x @Versions
eaecde9a
CBW
20my $count = 0;
21sub ok ($;$) {
22 my $p = my $r = shift;
23 if (@_) {
24 my $x = shift;
25 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
26 }
27 print $p ? "ok" : "not ok", ' ', ++$count, "\n";
28}
29
30use Unicode::Collate;
31
32ok(1);
33
34#########################
35
98d7b5ae 36my @Versions = ( 8, 9, 11, 14, 16, 18, 20, 22, 24, 26,
0bb7e24a 37 28, 30, 32, 34, 36, 38, 40, 41, 43);
eaecde9a
CBW
38
39my $Collator = Unicode::Collate->new(
40 table => 'keys.txt',
41 normalization => undef,
42 UCA_Version => 36,
43);
44
45ok($Collator->viewSortKey("\x{1B170}"),
46 '[FB01 8000 | 0020 | 0002 | FFFF |]');
47ok($Collator->viewSortKey("\x{1B171}"),
48 '[FB01 8001 | 0020 | 0002 | FFFF |]');
49ok($Collator->viewSortKey("\x{1B200}"),
50 '[FB01 8090 | 0020 | 0002 | FFFF |]');
51ok($Collator->viewSortKey("\x{1B2FB}"),
52 '[FB01 818B | 0020 | 0002 | FFFF |]');
53
54# Nushu < CJK UI (4E00) < Unassigned.
55
56# 1B170..1B2FB are Nushu Characters since UCA_Version 36 (Unicode 10.0).
57
58for my $v (@Versions) {
59 $Collator->change(UCA_Version => $v);
60
61 ok($Collator->cmp("\x{1B16F}", "\x{4E00}") == 1);
62 ok($Collator->cmp("\x{1B170}", "\x{4E00}") == ($v >= 36 ? -1 : 1));
63 ok($Collator->cmp("\x{1B171}", "\x{4E00}") == ($v >= 36 ? -1 : 1));
64 ok($Collator->cmp("\x{1B1FF}", "\x{4E00}") == ($v >= 36 ? -1 : 1));
65 ok($Collator->cmp("\x{1B200}", "\x{4E00}") == ($v >= 36 ? -1 : 1));
66 ok($Collator->cmp("\x{1B2FB}", "\x{4E00}") == ($v >= 36 ? -1 : 1));
67 ok($Collator->cmp("\x{1B2FC}", "\x{4E00}") == 1);
68 ok($Collator->cmp("\x{1B2FF}", "\x{4E00}") == 1);
69
70 ok($Collator->lt("\x{1B170}", "\x{1B171}"));
71 ok($Collator->lt("\x{1B171}", "\x{1B1FF}"));
72 ok($Collator->lt("\x{1B1FF}", "\x{1B200}"));
73 ok($Collator->lt("\x{1B200}", "\x{1B2FB}"));
74}