This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Term-Cap to CPAN version 1.15
[perl5.git] / cpan / Unicode-Collate / t / ident.t
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 strict;
15 use warnings;
16 BEGIN { $| = 1; print "1..45\n"; }
17 my $count = 0;
18 sub ok ($;$) {
19     my $p = my $r = shift;
20     if (@_) {
21         my $x = shift;
22         $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
23     }
24     print $p ? "ok" : "not ok", ' ', ++$count, "\n";
25 }
26
27 use Unicode::Collate;
28
29 ok(1);
30
31 #########################
32
33 my $Collator = Unicode::Collate->new(
34     table => 'keys.txt',
35     normalization => undef,
36 );
37
38 # [001F] UNIT SEPARATOR
39 {
40     ok($Collator->eq("\0",   "\x1F"));
41     ok($Collator->eq("\x1F", "\x{200B}"));
42     ok($Collator->eq("\0",   "\x{200B}"));
43     ok($Collator->eq("\x{313}", "\x{343}"));
44     ok($Collator->eq("\x{2000}", "\x{2001}"));
45     ok($Collator->eq("\x{200B}", "\x{200C}"));
46     ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
47
48     $Collator->change(identical => 1);
49
50     ok($Collator->lt("\0",   "\x1F"));
51     ok($Collator->lt("\x1F", "\x{200B}"));
52     ok($Collator->lt("\0",   "\x{200B}"));
53     ok($Collator->lt("\x{313}", "\x{343}"));
54     ok($Collator->lt("\x{2000}", "\x{2001}"));
55     ok($Collator->lt("\x{200B}", "\x{200C}"));
56     ok($Collator->gt("\x{304C}", "\x{304B}\x{3099}"));
57
58     $Collator->change(identical => 0);
59
60     ok($Collator->eq("\0",   "\x1F"));
61     ok($Collator->eq("\x1F", "\x{200B}"));
62     ok($Collator->eq("\0",   "\x{200B}"));
63     ok($Collator->eq("\x{313}", "\x{343}"));
64     ok($Collator->eq("\x{2000}", "\x{2001}"));
65     ok($Collator->eq("\x{200B}", "\x{200C}"));
66     ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
67 }
68
69 #### 22
70
71 eval { require Unicode::Normalize };
72 if (!$@) {
73     $Collator->change(normalization => "NFD");
74
75     $Collator->change(identical => 1);
76
77     ok($Collator->lt("\0", "\x{200B}"));
78     ok($Collator->eq("\x{313}", "\x{343}"));
79     ok($Collator->lt("\x{2000}", "\x{2001}"));
80     ok($Collator->lt("\x{200B}", "\x{200C}"));
81     ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
82
83     $Collator->change(identical => 0);
84
85     ok($Collator->eq("\0", "\x{200B}"));
86     ok($Collator->eq("\x{313}", "\x{343}"));
87     ok($Collator->eq("\x{2000}", "\x{2001}"));
88     ok($Collator->eq("\x{200B}", "\x{200C}"));
89     ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
90 } else {
91     ok(1) for 1..10;
92 }
93
94 $Collator->change(normalization => undef, identical => 1);
95
96 ##### 32
97
98 ok($Collator->viewSortKey("\0"),       '[| | | | 0000 0000]');
99 ok($Collator->viewSortKey("\x{200B}"), '[| | | | 0000 200B]');
100
101 ok($Collator->viewSortKey('a'),
102     '[0A15 | 0020 | 0002 | FFFF | 0000 0061]');
103
104 ok($Collator->viewSortKey("\x{304C}"),
105     '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304C]');
106
107 ok($Collator->viewSortKey("\x{100000}"),
108     '[FBE0 8000 | 0020 | 0002 | FFFF FFFF | 0010 0000]');
109
110 eval { require Unicode::Normalize };
111 if (!$@) {
112     $Collator->change(normalization => "NFD");
113
114     ok($Collator->viewSortKey("\x{304C}"),
115     '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304B 0000 3099]');
116 } else {
117     ok(1);
118 }
119
120 $Collator->change(normalization => undef);
121
122 ##### 38
123
124 $Collator->change(level => 3);
125
126 ok($Collator->viewSortKey("\x{304C}"),
127     '[1926 | 0020 013D | 000E 0002 | | 0000 304C]');
128
129 $Collator->change(level => 2);
130
131 ok($Collator->viewSortKey("\x{304C}"),
132     '[1926 | 0020 013D | | | 0000 304C]');
133
134 $Collator->change(level => 1);
135
136 ok($Collator->viewSortKey("\x{304C}"),
137     '[1926 | | | | 0000 304C]');
138
139 ##### 41
140
141 $Collator->change(UCA_Version => 8);
142
143 ok($Collator->viewSortKey("\x{304C}"),
144     '[1926||||0000 304C]');
145
146 $Collator->change(level => 2);
147
148 ok($Collator->viewSortKey("\x{304C}"),
149     '[1926|0020 013D|||0000 304C]');
150
151 $Collator->change(level => 3);
152
153 ok($Collator->viewSortKey("\x{304C}"),
154     '[1926|0020 013D|000E 0002||0000 304C]');
155
156 $Collator->change(level => 4);
157
158 ok($Collator->viewSortKey("\x{304C}"),
159     '[1926|0020 013D|000E 0002|FFFF FFFF|0000 304C]');
160
161 ##### 45