This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Refactor die_exit.t to loop over a list, rather than iterate on an hash.
[perl5.git] / cpan / Unicode-Collate / t / compatui.t
CommitLineData
584e761d
CBW
1
2BEGIN {
3 unless ("A" eq pack('U', 0x41)) {
4 print "1..0 # Unicode::Collate " .
5 "cannot stringify a Unicode code point\n";
6 exit 0;
7 }
8 if ($ENV{PERL_CORE}) {
9 chdir('t') if -d 't';
10 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
11 }
12}
13
14use Test;
b5d9a953 15BEGIN { plan tests => 561 }; # 1 + 70 x @Versions
584e761d
CBW
16
17use strict;
18use warnings;
19use Unicode::Collate;
20
21ok(1);
22
68adb2b0
CBW
23#########################
24
b5d9a953 25my @Versions = (8, 9, 11, 14, 16, 18, 20, 22);
584e761d
CBW
26
27# 12 compatibility ideographs are treated as unified ideographs:
28# FA0E, FA0F, FA11, FA13, FA14, FA1F, FA21, FA23, FA24, FA27, FA28, FA29.
29
30my $Collator = Unicode::Collate->new(
68adb2b0
CBW
31 table => 'keys.txt',
32 normalization => undef,
584e761d
CBW
33);
34
35for my $v (@Versions) {
68adb2b0
CBW
36 $Collator->change(UCA_Version => $v);
37 ok($Collator->lt("\x{4E00}", "\x{1FFF}"));
38 ok($Collator->lt("\x{9FA5}", "\x{1FFF}"));
39 ok($Collator->gt("\x{FA00}", "\x{1FFF}"));
40 ok($Collator->gt("\x{FA0D}", "\x{1FFF}"));
41 ok($Collator->lt("\x{FA0E}", "\x{1FFF}"));
42 ok($Collator->lt("\x{FA0F}", "\x{1FFF}"));
43 ok($Collator->gt("\x{FA10}", "\x{1FFF}"));
44 ok($Collator->lt("\x{FA11}", "\x{1FFF}"));
45 ok($Collator->gt("\x{FA12}", "\x{1FFF}"));
46 ok($Collator->lt("\x{FA13}", "\x{1FFF}"));
47 ok($Collator->lt("\x{FA14}", "\x{1FFF}"));
48 ok($Collator->gt("\x{FA15}", "\x{1FFF}"));
49 ok($Collator->gt("\x{FA16}", "\x{1FFF}"));
50 ok($Collator->gt("\x{FA17}", "\x{1FFF}"));
51 ok($Collator->gt("\x{FA18}", "\x{1FFF}"));
52 ok($Collator->gt("\x{FA19}", "\x{1FFF}"));
53 ok($Collator->gt("\x{FA1A}", "\x{1FFF}"));
54 ok($Collator->gt("\x{FA1B}", "\x{1FFF}"));
55 ok($Collator->gt("\x{FA1C}", "\x{1FFF}"));
56 ok($Collator->gt("\x{FA1D}", "\x{1FFF}"));
57 ok($Collator->gt("\x{FA1E}", "\x{1FFF}"));
58 ok($Collator->lt("\x{FA1F}", "\x{1FFF}"));
59 ok($Collator->gt("\x{FA20}", "\x{1FFF}"));
60 ok($Collator->lt("\x{FA21}", "\x{1FFF}"));
61 ok($Collator->gt("\x{FA22}", "\x{1FFF}"));
62 ok($Collator->lt("\x{FA23}", "\x{1FFF}"));
63 ok($Collator->lt("\x{FA24}", "\x{1FFF}"));
64 ok($Collator->gt("\x{FA25}", "\x{1FFF}"));
65 ok($Collator->gt("\x{FA26}", "\x{1FFF}"));
66 ok($Collator->lt("\x{FA27}", "\x{1FFF}"));
67 ok($Collator->lt("\x{FA28}", "\x{1FFF}"));
68 ok($Collator->lt("\x{FA29}", "\x{1FFF}"));
69 ok($Collator->gt("\x{FA2A}", "\x{1FFF}"));
70 ok($Collator->gt("\x{FA30}", "\x{1FFF}"));
71 ok($Collator->gt("\x{FAFF}", "\x{1FFF}"));
584e761d
CBW
72}
73
74my $IgnoreCJK = Unicode::Collate->new(
68adb2b0
CBW
75 table => 'keys.txt',
76 normalization => undef,
77 overrideCJK => sub {()},
584e761d
CBW
78);
79
80for my $v (@Versions) {
68adb2b0
CBW
81 $IgnoreCJK->change(UCA_Version => $v);
82 ok($IgnoreCJK->eq("\x{4E00}", ""));
83 ok($IgnoreCJK->eq("\x{9FA5}", ""));
84 ok($IgnoreCJK->gt("\x{FA00}", "\x{1FFF}"));
85 ok($IgnoreCJK->gt("\x{FA0D}", "\x{1FFF}"));
86 ok($IgnoreCJK->eq("\x{FA0E}", ""));
87 ok($IgnoreCJK->eq("\x{FA0F}", ""));
88 ok($IgnoreCJK->gt("\x{FA10}", "\x{1FFF}"));
89 ok($IgnoreCJK->eq("\x{FA11}", ""));
90 ok($IgnoreCJK->gt("\x{FA12}", "\x{1FFF}"));
91 ok($IgnoreCJK->eq("\x{FA13}", ""));
92 ok($IgnoreCJK->eq("\x{FA14}", ""));
93 ok($IgnoreCJK->gt("\x{FA15}", "\x{1FFF}"));
94 ok($IgnoreCJK->gt("\x{FA16}", "\x{1FFF}"));
95 ok($IgnoreCJK->gt("\x{FA17}", "\x{1FFF}"));
96 ok($IgnoreCJK->gt("\x{FA18}", "\x{1FFF}"));
97 ok($IgnoreCJK->gt("\x{FA19}", "\x{1FFF}"));
98 ok($IgnoreCJK->gt("\x{FA1A}", "\x{1FFF}"));
99 ok($IgnoreCJK->gt("\x{FA1B}", "\x{1FFF}"));
100 ok($IgnoreCJK->gt("\x{FA1C}", "\x{1FFF}"));
101 ok($IgnoreCJK->gt("\x{FA1D}", "\x{1FFF}"));
102 ok($IgnoreCJK->gt("\x{FA1E}", "\x{1FFF}"));
103 ok($IgnoreCJK->eq("\x{FA1F}", ""));
104 ok($IgnoreCJK->gt("\x{FA20}", "\x{1FFF}"));
105 ok($IgnoreCJK->eq("\x{FA21}", ""));
106 ok($IgnoreCJK->gt("\x{FA22}", "\x{1FFF}"));
107 ok($IgnoreCJK->eq("\x{FA23}", ""));
108 ok($IgnoreCJK->eq("\x{FA24}", ""));
109 ok($IgnoreCJK->gt("\x{FA25}", "\x{1FFF}"));
110 ok($IgnoreCJK->gt("\x{FA26}", "\x{1FFF}"));
111 ok($IgnoreCJK->eq("\x{FA27}", ""));
112 ok($IgnoreCJK->eq("\x{FA28}", ""));
113 ok($IgnoreCJK->eq("\x{FA29}", ""));
114 ok($IgnoreCJK->gt("\x{FA2A}", "\x{1FFF}"));
115 ok($IgnoreCJK->gt("\x{FA30}", "\x{1FFF}"));
116 ok($IgnoreCJK->gt("\x{FAFF}", "\x{1FFF}"));
584e761d 117}
68adb2b0 118