xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/illegalp.t (revision 91f110e064cd7c194e59e019b83bb7496c1c84d4)
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 strict;
15use warnings;
16BEGIN { $| = 1; print "1..17\n"; }
17my $count = 0;
18sub 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
28ok(1);
29
30#
31# No test for Unicode::Collate is included in this .t file.
32#
33# UCA conformance test requires completely ignorable characters
34# (including noncharacters) must be able to be sorted in code point order.
35# If not so, Unicode::Collate must not be compliant with UCA.
36#
37# ~~~ CollationTest_SHIFTED.txt in CollationTest-4.0.0
38#
39# 206F 0021;	# ! NOMINAL DIGIT SHAPES	[| | | 0251]
40# D800 0021;	# ! <surrogate-D800>	[| | | 0251]
41# DFFF 0021;	# ! <surrogate-DFFF>	[| | | 0251]
42# FDD0 0021;	# ! <noncharacter-FDD0>	[| | | 0251]
43# FFFB 0021;	# ! INTERLINEAR ANNOTATION TERMINATOR	[| | | 0251]
44# FFFE 0021;	# ! <noncharacter-FFFE>	[| | | 0251]
45# FFFF 0021;	# ! <noncharacter-FFFF>	[| | | 0251]
46# 1D165 0021;	# ! MS. Cm. STEM	[| | | 0251]
47#
48# ~~~ CollationTest_NON_IGNORABLE.txt in CollationTest-4.0.0
49#
50# 206F 0021;	# ! NOMINAL DIGIT SHAPES	[0251 | 0020 | 0002 |]
51# D800 0021;	# ! <surrogate-D800>	[0251 | 0020 | 0002 |]
52# DFFF 0021;	# ! <surrogate-DFFF>	[0251 | 0020 | 0002 |]
53# FDD0 0021;	# ! <noncharacter-FDD0>	[0251 | 0020 | 0002 |]
54# FFFB 0021;	# ! INTERLINEAR ANNOTATION TERMINATOR	[0251 | 0020 | 0002 |]
55# FFFE 0021;	# ! <noncharacter-FFFE>	[0251 | 0020 | 0002 |]
56# FFFF 0021;	# ! <noncharacter-FFFF>	[0251 | 0020 | 0002 |]
57# 1D165 0021;	# ! MS. Cm. STEM	[0251 | 0020 | 0002 |]
58#
59
60no warnings 'utf8';
61
62ok("\x{206F}!" lt "\x{D800}!");
63ok(pack('U*', 0x206F, 0x21) lt pack('U*', 0xD800, 0x21));
64
65ok("\x{D800}!" lt "\x{DFFF}!");
66ok(pack('U*', 0xD800, 0x21) lt pack('U*', 0xDFFF, 0x21));
67
68ok("\x{DFFF}!" lt "\x{FDD0}!");
69ok(pack('U*', 0xDFFF, 0x21) lt pack('U*', 0xFDD0, 0x21) );
70
71ok("\x{FDD0}!" lt "\x{FFFB}!");
72ok(pack('U*', 0xFDD0, 0x21) lt pack('U*', 0xFFFB, 0x21));
73
74ok("\x{FFFB}!" lt "\x{FFFE}!");
75ok(pack('U*', 0xFFFB, 0x21) lt pack('U*', 0xFFFE, 0x21));
76
77ok("\x{FFFE}!" lt "\x{FFFF}!");
78ok(pack('U*', 0xFFFE, 0x21) lt pack('U*', 0xFFFF, 0x21));
79
80ok("\x{FFFF}!" lt "\x{1D165}!");
81ok(pack('U*', 0xFFFF, 0x21) lt pack('U*', 0x1D165, 0x21));
82
83ok("\000!" lt "\x{FFFF}!");
84ok(pack('U*', 0, 0x21) lt pack('U*', 0xFFFF, 0x21));
85
86