Commit | Line | Data |
---|---|---|
584e761d CBW |
1 | |
2 | BEGIN { | |
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 | ||
14 | use Test; | |
b5d9a953 | 15 | BEGIN { plan tests => 561 }; # 1 + 70 x @Versions |
584e761d CBW |
16 | |
17 | use strict; | |
18 | use warnings; | |
19 | use Unicode::Collate; | |
20 | ||
21 | ok(1); | |
22 | ||
68adb2b0 CBW |
23 | ######################### |
24 | ||
b5d9a953 | 25 | my @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 | ||
30 | my $Collator = Unicode::Collate->new( | |
68adb2b0 CBW |
31 | table => 'keys.txt', |
32 | normalization => undef, | |
584e761d CBW |
33 | ); |
34 | ||
35 | for 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 | ||
74 | my $IgnoreCJK = Unicode::Collate->new( | |
68adb2b0 CBW |
75 | table => 'keys.txt', |
76 | normalization => undef, | |
77 | overrideCJK => sub {()}, | |
584e761d CBW |
78 | ); |
79 | ||
80 | for 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 |