xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/contract.t (revision eac174f2741a08d8deb8aae59a7f778ef9b5d770)
1898184e3Ssthen
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;
11b8851fccSafresh1BEGIN { $| = 1; print "1..118\n"; }
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
24898184e3Ssthenok(1);
25898184e3Ssthen
26*eac174f2Safresh1sub _pack_U   { Unicode::Collate::pack_U(@_) }
27*eac174f2Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28*eac174f2Safresh1
29898184e3Ssthen#########################
30898184e3Ssthen
31b39c5158Smillertour $kjeEntry = <<'ENTRIES';
32b39c5158Smillert0301  ; [.0000.0032.0002.0301] # COMBINING ACUTE ACCENT
33b39c5158Smillert0334  ; [.0000.008B.0002.0334] # COMBINING TILDE OVERLAY
34b39c5158Smillert043A  ; [.0D31.0020.0002.043A] # CYRILLIC SMALL LETTER KA
35b39c5158Smillert041A  ; [.0D31.0020.0008.041A] # CYRILLIC CAPITAL LETTER KA
36b39c5158Smillert045C  ; [.0DA1.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
37b39c5158Smillert043A 0301 ; [.0DA1.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
38b39c5158Smillert040C  ; [.0DA1.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
39b39c5158Smillert041A 0301 ; [.0DA1.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
40b39c5158SmillertENTRIES
41b39c5158Smillert
42b39c5158Smillertour $aaEntry = <<'ENTRIES';
43b39c5158Smillert0304  ; [.0000.005A.0002.0304] # COMBINING MACRON (cc = 230)
44b39c5158Smillert030A  ; [.0000.0043.0002.030A] # COMBINING RING ABOVE (cc = 230)
45b39c5158Smillert0327  ; [.0000.0055.0002.0327] # COMBINING CEDILLA (cc = 202)
46b39c5158Smillert031A  ; [.0000.006B.0002.031A] # COMBINING LEFT ANGLE ABOVE (cc = 232)
47b39c5158Smillert0061  ; [.0A15.0020.0002.0061] # LATIN SMALL LETTER A
48b39c5158Smillert0041  ; [.0A15.0020.0008.0041] # LATIN CAPITAL LETTER A
49b39c5158Smillert007A  ; [.0C13.0020.0002.007A] # LATIN SMALL LETTER Z
50b39c5158Smillert005A  ; [.0C13.0020.0008.005A] # LATIN CAPITAL LETTER Z
51b39c5158Smillert00E5  ; [.0C25.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE; QQCM
52b39c5158Smillert00C5  ; [.0C25.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE; QQCM
53b39c5158Smillert0061 030A ; [.0C25.0020.0002.0061] # LATIN SMALL LETTER A WITH RING ABOVE
54b39c5158Smillert0041 030A ; [.0C25.0020.0008.0041] # LATIN CAPITAL LETTER A WITH RING ABOVE
55b39c5158SmillertENTRIES
56b39c5158Smillert
57b39c5158Smillert#########################
58b39c5158Smillert
59b39c5158Smillertmy $kjeNoN = Unicode::Collate->new(
60b39c5158Smillert    level => 1,
61b39c5158Smillert    table => undef,
62b39c5158Smillert    normalization => undef,
63b39c5158Smillert    entry => $kjeEntry,
64b39c5158Smillert);
65b39c5158Smillert
66898184e3Ssthenok($kjeNoN->lt("\x{43A}", "\x{43A}\x{301}"));
67898184e3Ssthenok($kjeNoN->gt("\x{45C}", "\x{43A}\x{334}\x{301}"));
68898184e3Ssthenok($kjeNoN->eq("\x{43A}", "\x{43A}\x{334}\x{301}"));
69898184e3Ssthenok($kjeNoN->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
70898184e3Ssthen
71898184e3Ssthen# 5
72b39c5158Smillert
73b39c5158Smillertour %sortkeys;
74b39c5158Smillert
75898184e3Ssthen$sortkeys{'KAac'} = $kjeNoN->viewSortKey("\x{43A}\x{301}");
76898184e3Ssthen$sortkeys{'KAta'} = $kjeNoN->viewSortKey("\x{43A}\x{334}\x{301}");
77898184e3Ssthen$sortkeys{'KAat'} = $kjeNoN->viewSortKey("\x{43A}\x{301}\x{334}");
78b39c5158Smillert
79b39c5158Smillerteval { require Unicode::Normalize };
80b39c5158Smillertif (!$@) {
81b39c5158Smillert    my $kjeNFD = Unicode::Collate->new(
82b39c5158Smillert	level => 1,
83b39c5158Smillert	table => undef,
84b39c5158Smillert	entry => $kjeEntry,
85b39c5158Smillert    );
86898184e3Ssthen
87898184e3Ssthenok($kjeNFD->lt("\x{43A}", "\x{43A}\x{301}"));
88898184e3Ssthenok($kjeNFD->eq("\x{45C}", "\x{43A}\x{334}\x{301}"));
89898184e3Ssthenok($kjeNFD->lt("\x{43A}", "\x{43A}\x{334}\x{301}"));
90898184e3Ssthenok($kjeNFD->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
91898184e3Ssthen# 9
92b39c5158Smillert
93b39c5158Smillert    my $aaNFD = Unicode::Collate->new(
94b39c5158Smillert	level => 1,
95b39c5158Smillert	table => undef,
96b39c5158Smillert	entry => $aaEntry,
97b39c5158Smillert    );
98b39c5158Smillert
99b39c5158Smillertok($aaNFD->lt("Z", "A\x{30A}\x{304}"));
100b39c5158Smillertok($aaNFD->eq("A", "A\x{304}\x{30A}"));
101*eac174f2Safresh1ok($aaNFD->eq(_pack_U(0xE5), "A\x{30A}\x{304}"));
102b39c5158Smillertok($aaNFD->eq("A\x{304}", "A\x{304}\x{30A}"));
103b39c5158Smillertok($aaNFD->lt("Z", "A\x{327}\x{30A}"));
104b39c5158Smillertok($aaNFD->lt("Z", "A\x{30A}\x{327}"));
105b39c5158Smillertok($aaNFD->lt("Z", "A\x{31A}\x{30A}"));
106b39c5158Smillertok($aaNFD->lt("Z", "A\x{30A}\x{31A}"));
107898184e3Ssthen# 17
108b39c5158Smillert
109b39c5158Smillert    my $aaPre = Unicode::Collate->new(
110b39c5158Smillert	level => 1,
111b39c5158Smillert	normalization => "prenormalized",
112b39c5158Smillert	table => undef,
113b39c5158Smillert	entry => $aaEntry,
114b39c5158Smillert    );
115b39c5158Smillert
116b39c5158Smillertok($aaPre->lt("Z", "A\x{30A}\x{304}"));
117b39c5158Smillertok($aaPre->eq("A", "A\x{304}\x{30A}"));
118*eac174f2Safresh1ok($aaPre->eq(_pack_U(0xE5), "A\x{30A}\x{304}"));
119b39c5158Smillertok($aaPre->eq("A\x{304}", "A\x{304}\x{30A}"));
120b39c5158Smillertok($aaPre->lt("Z", "A\x{327}\x{30A}"));
121b39c5158Smillertok($aaPre->lt("Z", "A\x{30A}\x{327}"));
122b39c5158Smillertok($aaPre->lt("Z", "A\x{31A}\x{30A}"));
123b39c5158Smillertok($aaPre->lt("Z", "A\x{30A}\x{31A}"));
124898184e3Ssthen# 25
125898184e3Ssthen} else {
126b39c5158Smillert    ok(1) for 1..20;
127b39c5158Smillert}
128b39c5158Smillert
129b39c5158Smillert# again: loading Unicode::Normalize should not affect $kjeNoN.
130898184e3Ssthenok($kjeNoN->lt("\x{43A}", "\x{43A}\x{301}"));
131898184e3Ssthenok($kjeNoN->gt("\x{45C}", "\x{43A}\x{334}\x{301}"));
132898184e3Ssthenok($kjeNoN->eq("\x{43A}", "\x{43A}\x{334}\x{301}"));
133898184e3Ssthenok($kjeNoN->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
134b39c5158Smillert
135898184e3Ssthenok($sortkeys{'KAac'}, $kjeNoN->viewSortKey("\x{43A}\x{301}"));
136898184e3Ssthenok($sortkeys{'KAta'}, $kjeNoN->viewSortKey("\x{43A}\x{334}\x{301}"));
137898184e3Ssthenok($sortkeys{'KAat'}, $kjeNoN->viewSortKey("\x{43A}\x{301}\x{334}"));
138898184e3Ssthen
139898184e3Ssthen# 32
140b39c5158Smillert
141b39c5158Smillertmy $aaNoN = Unicode::Collate->new(
142b39c5158Smillert    level => 1,
143b39c5158Smillert    table => undef,
144b39c5158Smillert    entry => $aaEntry,
145b39c5158Smillert    normalization => undef,
146b39c5158Smillert);
147b39c5158Smillert
148b39c5158Smillertok($aaNoN->lt("Z", "A\x{30A}\x{304}"));
149b39c5158Smillertok($aaNoN->eq("A", "A\x{304}\x{30A}"));
150*eac174f2Safresh1ok($aaNoN->eq(_pack_U(0xE5), "A\x{30A}\x{304}"));
151b39c5158Smillertok($aaNoN->eq("A\x{304}", "A\x{304}\x{30A}"));
152b39c5158Smillertok($aaNoN->eq("A", "A\x{327}\x{30A}"));
153b39c5158Smillertok($aaNoN->lt("Z", "A\x{30A}\x{327}"));
154b39c5158Smillertok($aaNoN->eq("A", "A\x{31A}\x{30A}"));
155b39c5158Smillertok($aaNoN->lt("Z", "A\x{30A}\x{31A}"));
156b39c5158Smillert
157898184e3Ssthen# 40
158898184e3Ssthen
159898184e3Ssthen# suppress contractions (not affected)
160898184e3Ssthen
161898184e3Ssthenmy $kjeSup = Unicode::Collate->new(
162898184e3Ssthen    level => 1,
163898184e3Ssthen    table => undef,
164898184e3Ssthen    normalization => undef,
165898184e3Ssthen    entry => $kjeEntry,
166898184e3Ssthen    suppress => [0x400..0x45F],
167898184e3Ssthen);
168898184e3Ssthen
169898184e3Ssthenok($kjeSup->lt("\x{43A}", "\x{43A}\x{301}"));
170898184e3Ssthenok($kjeSup->eq("\x{45C}", "\x{43A}\x{301}"));
171898184e3Ssthenok($kjeSup->lt("\x{41A}", "\x{41A}\x{301}"));
172898184e3Ssthenok($kjeSup->eq("\x{40C}", "\x{41A}\x{301}"));
173898184e3Ssthen
174898184e3Ssthen# 44
175898184e3Ssthen
176898184e3Ssthenour $tibetanEntry = <<'ENTRIES';
177898184e3Ssthen0000           ; [.0000.0000.0000.0000] # [0000] NULL (in 6429)
178b8851fccSafresh10FB2           ; [.205B.0020.0002.0FB2] # TIBETAN SUBJOINED LETTER RA
179b8851fccSafresh10FB3           ; [.205E.0020.0002.0FB3] # TIBETAN SUBJOINED LETTER LA
180898184e3Ssthen0F71           ; [.206D.0020.0002.0F71] # TIBETAN VOWEL SIGN AA
181898184e3Ssthen0F72           ; [.206E.0020.0002.0F72] # TIBETAN VOWEL SIGN I
182898184e3Ssthen0F73           ; [.206F.0020.0002.0F73] # TIBETAN VOWEL SIGN II
183898184e3Ssthen0F71 0F72      ; [.206F.0020.0002.0F73] # TIBETAN VOWEL SIGN II
184898184e3Ssthen0F80           ; [.2070.0020.0002.0F80] # TIBETAN VOWEL SIGN REVERSED I
185898184e3Ssthen0F81           ; [.2071.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
186898184e3Ssthen0F71 0F80      ; [.2071.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
187898184e3Ssthen0F74           ; [.2072.0020.0002.0F74] # TIBETAN VOWEL SIGN U
188898184e3Ssthen0F75           ; [.2073.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
189898184e3Ssthen0F71 0F74      ; [.2073.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
190898184e3Ssthen0F76           ; [.2074.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
191898184e3Ssthen0FB2 0F80      ; [.2074.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
192898184e3Ssthen0F77           ; [.2075.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
193898184e3Ssthen0FB2 0F81      ; [.2075.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
194898184e3Ssthen0FB2 0F71 0F80 ; [.2075.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
195898184e3Ssthen0F78           ; [.2076.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
196898184e3Ssthen0FB3 0F80      ; [.2076.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
197898184e3Ssthen0F79           ; [.2077.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
198898184e3Ssthen0FB3 0F81      ; [.2077.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
199898184e3Ssthen0FB3 0F71 0F80 ; [.2077.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
200898184e3SsthenENTRIES
201898184e3Ssthen
202898184e3Ssthen# ccc(0F71) = 129
203898184e3Ssthen# ccc(0F80) = 130
204898184e3Ssthen# 0F76 = 0FB2 0F80
205898184e3Ssthen# 0F78 = 0FB3 0F80
206898184e3Ssthen# 0F81 = 0F71 0F80
207898184e3Ssthen# 0F77 = <compat> 0FB2 0F81 = 0FB2 0F71 0F80 = 0F76 0F71
208898184e3Ssthen# 0F79 = <compat> 0FB3 0F81 = 0FB3 0F71 0F80 = 0F78 0F71
209898184e3Ssthen
210898184e3Sstheneval { require Unicode::Normalize };
211898184e3Ssthenif (!$@) {
212898184e3Ssthen    my $tibNFD = Unicode::Collate->new(
213898184e3Ssthen	table => undef,
214898184e3Ssthen	entry => $tibetanEntry,
215b8851fccSafresh1	UCA_Version => 24,
216898184e3Ssthen    );
217898184e3Ssthen
218898184e3Ssthen    # VOCALIC RR
219898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{334}\x{F81}"));
220898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F81}\x{334}"));
221898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F81}\0\x{334}"));
222898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{F76}\x{334}\x{F71}"));
223898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{F76}\x{F71}\x{334}"));
224898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{F76}\x{F71}\0\x{334}"));
225898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{334}\x{F71}\x{F80}"));
226898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F71}\x{334}\x{F80}"));
227898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F71}\x{F80}\x{334}"));
228898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F71}\x{F80}\0\x{334}"));
229898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{334}\x{F80}\x{F71}"));
230898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F80}\x{334}\x{F71}"));
231898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F80}\x{F71}\x{334}"));
232898184e3Ssthen    ok($tibNFD->eq("\x{F77}\0\x{334}", "\x{FB2}\x{F80}\x{F71}\0\x{334}"));
233898184e3Ssthen# 58
234898184e3Ssthen
235898184e3Ssthen    # VOCALIC LL
236898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{334}\x{F81}"));
237898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F81}\x{334}"));
238898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F81}\0\x{334}"));
239898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{F78}\x{334}\x{F71}"));
240898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{F78}\x{F71}\x{334}"));
241898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{F78}\x{F71}\0\x{334}"));
242898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{334}\x{F71}\x{F80}"));
243898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F71}\x{334}\x{F80}"));
244898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F71}\x{F80}\x{334}"));
245898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F71}\x{F80}\0\x{334}"));
246898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{334}\x{F80}\x{F71}"));
247898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F80}\x{334}\x{F71}"));
248898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F80}\x{F71}\x{334}"));
249898184e3Ssthen    ok($tibNFD->eq("\x{F79}\0\x{334}", "\x{FB3}\x{F80}\x{F71}\0\x{334}"));
250898184e3Ssthen# 72
251898184e3Ssthen
252b8851fccSafresh1    my $a1 = "\x{FB2}\x{334}\x{F81}";
253b8851fccSafresh1    my $b1 = "\x{F77}\0\x{334}";
254b8851fccSafresh1    my $a2 = "\x{FB2}\x{334}\x{F81}";
255b8851fccSafresh1    my $b2 = "\x{FB2}\x{F80}\0\x{334}\x{F71}";
256b8851fccSafresh1
257b8851fccSafresh1    for my $v (qw/20 22 24 26 28/) {
258b8851fccSafresh1	my $tib = Unicode::Collate->new(
259b8851fccSafresh1	    table => undef,
260b8851fccSafresh1	    entry => $tibetanEntry,
261b8851fccSafresh1	    UCA_Version => $v,
262b8851fccSafresh1	);
263b8851fccSafresh1	my $long = 22 <= $v && $v <= 24;
264b8851fccSafresh1	ok($tib->cmp($a1, $b1), $long ? 0 : -1);
265b8851fccSafresh1	ok($tib->cmp($a2, $b2), $long ? 1 : 0);
266b8851fccSafresh1
267b8851fccSafresh1	$tib->change(long_contraction => 0);
268b8851fccSafresh1	ok($tib->cmp($a1, $b1), -1);
269b8851fccSafresh1	ok($tib->cmp($a2, $b2),  0);
270b8851fccSafresh1
271b8851fccSafresh1	$tib->change(long_contraction => 1);
272b8851fccSafresh1	ok($tib->cmp($a1, $b1), 0);
273b8851fccSafresh1	ok($tib->cmp($a2, $b2), 1);
274b8851fccSafresh1    }
275b8851fccSafresh1# 102
276b8851fccSafresh1
277b8851fccSafresh1    # UCA_Version => 22
278b8851fccSafresh1    ok($tibNFD->cmp($a1, $b1), 0);
279b8851fccSafresh1    ok($tibNFD->cmp($a2, $b2), 1);
280b8851fccSafresh1
281b8851fccSafresh1    $tibNFD->change(UCA_Version => 26); # not affect long_contraction
282b8851fccSafresh1    ok($tibNFD->cmp($a1, $b1), 0);
283b8851fccSafresh1    ok($tibNFD->cmp($a2, $b2), 1);
284b8851fccSafresh1# 106
285b8851fccSafresh1
286898184e3Ssthen    my $discontNFD = Unicode::Collate->new(
287898184e3Ssthen	table => undef,
288b8851fccSafresh1	UCA_Version => 22,
289898184e3Ssthen	entry => <<'ENTRIES',
290898184e3Ssthen0000  ; [.0000.0000.0000.0000] # [0000] NULL (in 6429)
291898184e3Ssthen0301  ; [.0000.0032.0002.0301] # COMBINING ACUTE ACCENT
292898184e3Ssthen0300  ; [.0000.0035.0002.0300] # COMBINING GRAVE ACCENT
293898184e3Ssthen0327  ; [.0000.0055.0002.0327] # COMBINING CEDILLA
294898184e3Ssthen0334  ; [.0000.008B.0002.0334] # COMBINING TILDE OVERLAY
295898184e3Ssthen0041  ; [.0101.0020.0008.0041] # LATIN CAPITAL LETTER A
296898184e3Ssthen0041 0327 0301 ; [.0102.0020.0008.0041]
297898184e3Ssthen0041 0300 ; [.0103.0020.0008.0041]
298898184e3SsthenENTRIES
299898184e3Ssthen    );
300898184e3Ssthen
301b8851fccSafresh1    ok($discontNFD->eq("A\x{334}\x{327}\x{301}", "A\x{327}\x{301}\0\x{334}"));
302b8851fccSafresh1    ok($discontNFD->eq("A\x{327}\x{300}",        "A\x{300}\0\x{327}"));
303b8851fccSafresh1
304b8851fccSafresh1    $discontNFD->change(long_contraction => 0);
305b8851fccSafresh1    ok($discontNFD->lt("A\x{334}\x{327}\x{301}", "A\x{327}\x{301}\0\x{334}"));
306b8851fccSafresh1    ok($discontNFD->eq("A\x{334}\x{327}\x{301}", "A\0\x{327}\x{301}\x{334}"));
307b8851fccSafresh1    ok($discontNFD->eq("A\x{327}\x{300}",        "A\x{300}\0\x{327}"));
308b8851fccSafresh1
309b8851fccSafresh1    $discontNFD->change(level => 1);
310b8851fccSafresh1    ok($discontNFD->gt("A\x{327}\x{300}", "A\x{327}\0\x{300}"));
311b8851fccSafresh1
312b8851fccSafresh1    # discontiguous
313b8851fccSafresh1    ok($discontNFD->lt("A\x{334}\x{327}\x{301}", "A\x{327}\x{301}\0\x{334}"));
314b8851fccSafresh1    ok($discontNFD->lt("A\x{334}\x{327}\x{301}", "A\x{300}"));
315b8851fccSafresh1    ok($discontNFD->eq("A\x{334}\x{327}\x{301}", "A"));
316b8851fccSafresh1
317b8851fccSafresh1    # contiguous
318b8851fccSafresh1    ok($discontNFD->eq("A\x{327}\x{301}", "A\x{327}\x{301}\0\x{334}"));
319b8851fccSafresh1    ok($discontNFD->lt("A\x{327}\x{301}", "A\x{300}"));
320b8851fccSafresh1    ok($discontNFD->gt("A\x{327}\x{301}", "A"));
321898184e3Ssthen} else {
322b8851fccSafresh1    ok(1) for 1..74;
323898184e3Ssthen}
324b8851fccSafresh1# 118
325