This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Backport isFOO_L1 macros
[perl5.git] / dist / Devel-PPPort / t / misc.t
1 ################################################################################
2 #
3 #            !!!!!   Do NOT edit this file directly!   !!!!!
4 #
5 #            Edit mktests.PL and/or parts/inc/misc instead.
6 #
7 #  This file was automatically generated from the definition files in the
8 #  parts/inc/ subdirectory by mktests.PL. To learn more about how all this
9 #  works, please read the F<HACKERS> file that came with this distribution.
10 #
11 ################################################################################
12
13 BEGIN {
14   if ($ENV{'PERL_CORE'}) {
15     chdir 't' if -d 't';
16     @INC = ('../lib', '../ext/Devel-PPPort/t') if -d '../lib' && -d '../ext';
17     require Config; import Config;
18     use vars '%Config';
19     if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
20       print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
21       exit 0;
22     }
23   }
24   else {
25     unshift @INC, 't';
26   }
27
28   sub load {
29     eval "use Test";
30     require 'testutil.pl' if $@;
31   }
32
33   if (176) {
34     load();
35     plan(tests => 176);
36   }
37 }
38
39 use Devel::PPPort;
40 use strict;
41 BEGIN { $^W = 1; }
42
43 package Devel::PPPort;
44 use vars '@ISA';
45 require DynaLoader;
46 @ISA = qw(DynaLoader);
47 bootstrap Devel::PPPort;
48
49 package main;
50
51 use vars qw($my_sv @my_av %my_hv);
52
53 ok(&Devel::PPPort::boolSV(1));
54 ok(!&Devel::PPPort::boolSV(0));
55
56 $_ = "Fred";
57 ok(&Devel::PPPort::DEFSV(), "Fred");
58 ok(&Devel::PPPort::UNDERBAR(), "Fred");
59
60 if ("$]" >= 5.009002 && "$]" < 5.023 && "$]" < 5.023004) {
61   eval q{
62     no warnings "deprecated";
63     no if $^V > v5.17.9, warnings => "experimental::lexical_topic";
64     my $_ = "Tony";
65     ok(&Devel::PPPort::DEFSV(), "Fred");
66     ok(&Devel::PPPort::UNDERBAR(), "Tony");
67   };
68 }
69 else {
70   ok(1);
71   ok(1);
72 }
73
74 my @r = &Devel::PPPort::DEFSV_modify();
75
76 ok(@r == 3);
77 ok($r[0], 'Fred');
78 ok($r[1], 'DEFSV');
79 ok($r[2], 'Fred');
80
81 ok(&Devel::PPPort::DEFSV(), "Fred");
82
83 eval { 1 };
84 ok(!&Devel::PPPort::ERRSV());
85 eval { cannot_call_this_one() };
86 ok(&Devel::PPPort::ERRSV());
87
88 ok(&Devel::PPPort::gv_stashpvn('Devel::PPPort', 0));
89 ok(!&Devel::PPPort::gv_stashpvn('does::not::exist', 0));
90 ok(&Devel::PPPort::gv_stashpvn('does::not::exist', 1));
91
92 $my_sv = 1;
93 ok(&Devel::PPPort::get_sv('my_sv', 0));
94 ok(!&Devel::PPPort::get_sv('not_my_sv', 0));
95 ok(&Devel::PPPort::get_sv('not_my_sv', 1));
96
97 @my_av = (1);
98 ok(&Devel::PPPort::get_av('my_av', 0));
99 ok(!&Devel::PPPort::get_av('not_my_av', 0));
100 ok(&Devel::PPPort::get_av('not_my_av', 1));
101
102 %my_hv = (a=>1);
103 ok(&Devel::PPPort::get_hv('my_hv', 0));
104 ok(!&Devel::PPPort::get_hv('not_my_hv', 0));
105 ok(&Devel::PPPort::get_hv('not_my_hv', 1));
106
107 sub my_cv { 1 };
108 ok(&Devel::PPPort::get_cv('my_cv', 0));
109 ok(!&Devel::PPPort::get_cv('not_my_cv', 0));
110 ok(&Devel::PPPort::get_cv('not_my_cv', 1));
111
112 ok(Devel::PPPort::dXSTARG(42), 43);
113 ok(Devel::PPPort::dAXMARK(4711), 4710);
114
115 ok(Devel::PPPort::prepush(), 42);
116
117 ok(join(':', Devel::PPPort::xsreturn(0)), 'test1');
118 ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2');
119
120 ok(Devel::PPPort::PERL_ABS(42), 42);
121 ok(Devel::PPPort::PERL_ABS(-13), 13);
122
123 ok(Devel::PPPort::SVf(42), "$]" >= 5.004 ? '[42]' : '42');
124 ok(Devel::PPPort::SVf('abc'), "$]" >= 5.004 ? '[abc]' : 'abc');
125
126 ok(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo");
127
128 ok(&Devel::PPPort::ptrtests(), 63);
129
130 ok(&Devel::PPPort::OpSIBLING_tests(), 0);
131
132 if ("$]" >= 5.009000) {
133   eval q{
134     ok(&Devel::PPPort::check_HeUTF8("hello"), "norm");
135     ok(&Devel::PPPort::check_HeUTF8("\N{U+263a}"), "utf8");
136   };
137 } else {
138   ok(1, 1);
139   ok(1, 1);
140 }
141
142 @r = &Devel::PPPort::check_c_array();
143 ok($r[0], 4);
144 ok($r[1], "13");
145
146 ok(!Devel::PPPort::SvRXOK(""));
147 ok(!Devel::PPPort::SvRXOK(bless [], "Regexp"));
148
149 if ("$]" < 5.005) {
150         skip 'no qr// objects in this perl', 0;
151         skip 'no qr// objects in this perl', 0;
152 } else {
153         my $qr = eval 'qr/./';
154         ok(Devel::PPPort::SvRXOK($qr));
155         ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise"));
156 }
157
158 ok(  Devel::PPPort::isBLANK(ord(" ")));
159 ok(! Devel::PPPort::isBLANK(ord("\n")));
160
161 ok(  Devel::PPPort::isBLANK_A(ord("\t")));
162 ok(! Devel::PPPort::isBLANK_A(ord("\r")));
163
164 ok(  Devel::PPPort::isBLANK_L1(ord("\t")));
165 ok(! Devel::PPPort::isBLANK_L1(ord("\r")));
166
167 ok(  Devel::PPPort::isUPPER(ord("A")));
168 ok(! Devel::PPPort::isUPPER(ord("a")));
169
170 ok(  Devel::PPPort::isUPPER_A(ord("Z")));
171
172 # One of these two is uppercase in EBCDIC; the other in Latin1, but neither are
173 # ASCII uppercase.
174 ok(! Devel::PPPort::isUPPER_A(0xDC));
175 ok(! Devel::PPPort::isUPPER_A(0xFC));
176
177 ok(Devel::PPPort::isUPPER_L1(0xDC) || Devel::PPPort::isUPPER_L1(0xFC));
178 ok(! (Devel::PPPort::isUPPER_L1(0xDC) && Devel::PPPort::isUPPER_L1(0xFC)));
179
180 ok(  Devel::PPPort::isLOWER(ord("b")));
181 ok(! Devel::PPPort::isLOWER(ord("B")));
182
183 ok(  Devel::PPPort::isLOWER_A(ord("y")));
184
185 # One of these two is lowercase in EBCDIC; the other in Latin1, but neither are
186 # ASCII lowercase.
187 ok(! Devel::PPPort::isLOWER_A(0xDC));
188 ok(! Devel::PPPort::isLOWER_A(0xFC));
189
190 ok(Devel::PPPort::isLOWER_L1(0xDC) || Devel::PPPort::isLOWER_L1(0xFC));
191 ok(! Devel::PPPort::isLOWER_L1(0xDC) && Devel::PPPort::isLOWER_L1(0xFC));
192
193 ok(  Devel::PPPort::isALPHA(ord("C")));
194 ok(! Devel::PPPort::isALPHA(ord("1")));
195
196 ok(  Devel::PPPort::isALPHA_A(ord("x")));
197 ok(! Devel::PPPort::isALPHA_A(0xDC));
198
199 ok(  Devel::PPPort::isALPHA_L1(ord("y")));
200 ok(  Devel::PPPort::isALPHA_L1(0xDC));
201 ok(! Devel::PPPort::isALPHA_L1(0xB6));
202
203 ok(  Devel::PPPort::isWORDCHAR(ord("_")));
204 ok(! Devel::PPPort::isWORDCHAR(ord("@")));
205
206 ok(  Devel::PPPort::isWORDCHAR_A(ord("2")));
207 ok(! Devel::PPPort::isWORDCHAR_A(0xFC));
208
209 ok(  Devel::PPPort::isWORDCHAR_L1(ord("2")));
210 ok(  Devel::PPPort::isWORDCHAR_L1(0xFC));
211 ok(! Devel::PPPort::isWORDCHAR_L1(0xB6));
212
213 ok(  Devel::PPPort::isALPHANUMERIC(ord("4")));
214 ok(! Devel::PPPort::isALPHANUMERIC(ord("_")));
215
216 ok(  Devel::PPPort::isALPHANUMERIC_A(ord("l")));
217 ok(! Devel::PPPort::isALPHANUMERIC_A(0xDC));
218
219 ok(  Devel::PPPort::isALPHANUMERIC_L1(ord("l")));
220 ok(  Devel::PPPort::isALPHANUMERIC_L1(0xDC));
221 ok(! Devel::PPPort::isALPHANUMERIC_L1(0xB6));
222
223 ok(  Devel::PPPort::isALNUM(ord("c")));
224 ok(! Devel::PPPort::isALNUM(ord("}")));
225
226 ok(  Devel::PPPort::isALNUM_A(ord("5")));
227 ok(! Devel::PPPort::isALNUM_A(0xFC));
228
229 ok(  Devel::PPPort::isALNUMC_L1(ord("5")));
230 ok(  Devel::PPPort::isALNUMC_L1(0xFC));
231 ok(! Devel::PPPort::isALNUMC_L1(0xB6));
232
233 ok(  Devel::PPPort::isDIGIT(ord("6")));
234 ok(! Devel::PPPort::isDIGIT(ord("_")));
235
236 ok(  Devel::PPPort::isDIGIT_A(ord("7")));
237 ok(! Devel::PPPort::isDIGIT_A(0xDC));
238
239 ok(  Devel::PPPort::isDIGIT_L1(ord("5")));
240 ok(! Devel::PPPort::isDIGIT_L1(0xDC));
241
242 ok(  Devel::PPPort::isOCTAL(ord("7")));
243 ok(! Devel::PPPort::isOCTAL(ord("8")));
244
245 ok(  Devel::PPPort::isOCTAL_A(ord("0")));
246 ok(! Devel::PPPort::isOCTAL_A(ord("9")));
247
248 ok(  Devel::PPPort::isOCTAL_L1(ord("2")));
249 ok(! Devel::PPPort::isOCTAL_L1(ord("8")));
250
251 ok(  Devel::PPPort::isIDFIRST(ord("D")));
252 ok(! Devel::PPPort::isIDFIRST(ord("1")));
253
254 ok(  Devel::PPPort::isIDFIRST_A(ord("_")));
255 ok(! Devel::PPPort::isIDFIRST_A(0xFC));
256
257 ok(  Devel::PPPort::isIDFIRST_L1(ord("_")));
258 ok(  Devel::PPPort::isIDFIRST_L1(0xFC));
259 ok(! Devel::PPPort::isIDFIRST_L1(0xB6));
260
261 ok(  Devel::PPPort::isIDCONT(ord("e")));
262 ok(! Devel::PPPort::isIDCONT(ord("@")));
263
264 ok(  Devel::PPPort::isIDCONT_A(ord("2")));
265 ok(! Devel::PPPort::isIDCONT_A(0xDC));
266
267 ok(  Devel::PPPort::isIDCONT_L1(ord("4")));
268 ok(  Devel::PPPort::isIDCONT_L1(0xDC));
269 ok(! Devel::PPPort::isIDCONT_L1(0xB6));
270
271 ok(  Devel::PPPort::isSPACE(ord(" ")));
272 ok(! Devel::PPPort::isSPACE(ord("_")));
273
274 ok(  Devel::PPPort::isSPACE_A(ord("\cK")));
275 ok(! Devel::PPPort::isSPACE_A(ord("F")));
276
277 ok(  Devel::PPPort::isSPACE_L1(ord("\cK")));
278 ok(! Devel::PPPort::isSPACE_L1(ord("g")));
279
280 # This stresses the edge for ASCII machines, but happens to work on EBCDIC as
281 # well
282 ok(  Devel::PPPort::isASCII(0x7F));
283 ok(! Devel::PPPort::isASCII(0x80));
284
285 ok(  Devel::PPPort::isASCII_A(ord("9")));
286 ok(  Devel::PPPort::isASCII_L1(ord("9")));
287
288 # B6 is the PARAGRAPH SIGN in ASCII and EBCDIC
289 ok(! Devel::PPPort::isASCII_A(0xB6));
290 ok(! Devel::PPPort::isASCII_L1(0xB6));
291
292 ok(  Devel::PPPort::isCNTRL(ord("\e")));
293 ok(! Devel::PPPort::isCNTRL(ord(" ")));
294
295 ok(  Devel::PPPort::isCNTRL_A(ord("\a")));
296 ok(! Devel::PPPort::isCNTRL_A(0xB6));
297
298 ok(  Devel::PPPort::isCNTRL_L1(ord("\a")));
299 ok(  Devel::PPPort::isCNTRL_L1(ord(" ") - 1));
300 ok(! Devel::PPPort::isCNTRL_L1(0xB6));
301 if (ord('A') == 65) {
302     ok(Devel::PPPort::isCNTRL_L1(0x80));
303 }
304 elsif (ord('^') == 106) {
305     ok(Devel::PPPort::isCNTRL_L1(0x5F));
306 }
307 else {
308     ok(Devel::PPPort::isCNTRL_L1(0xFF));
309 }
310
311 ok(  Devel::PPPort::isPRINT(ord(" ")));
312 ok(! Devel::PPPort::isPRINT(ord("\n")));
313
314 ok(  Devel::PPPort::isPRINT_A(ord("G")));
315 ok(! Devel::PPPort::isPRINT_A(0xB6));
316
317 ok(  Devel::PPPort::isPRINT_L1(ord("~")));
318 ok(  Devel::PPPort::isPRINT_L1(0xB6));
319 ok(! Devel::PPPort::isPRINT_L1(ord("\r")));
320
321 ok(  Devel::PPPort::isGRAPH(ord("h")));
322 ok(! Devel::PPPort::isGRAPH(ord(" ")));
323
324 ok(  Devel::PPPort::isGRAPH_A(ord("i")));
325 ok(! Devel::PPPort::isGRAPH_A(0xB6));
326
327 ok(  Devel::PPPort::isGRAPH_L1(ord("j")));
328 ok(  Devel::PPPort::isGRAPH_L1(0xB6));
329 ok(! Devel::PPPort::isGRAPH_L1(4));
330
331 ok(  Devel::PPPort::isPUNCT(ord("#")));
332 ok(! Devel::PPPort::isPUNCT(ord(" ")));
333
334 ok(  Devel::PPPort::isPUNCT_A(ord("*")));
335 ok(! Devel::PPPort::isPUNCT_A(0xB6));
336
337 ok(  Devel::PPPort::isPUNCT_L1(ord("+")));
338 ok(  Devel::PPPort::isPUNCT_L1(0xB6));
339
340 ok(  Devel::PPPort::isXDIGIT(ord("A")));
341 ok(! Devel::PPPort::isXDIGIT(ord("_")));
342
343 ok(  Devel::PPPort::isXDIGIT_A(ord("9")));
344 ok(! Devel::PPPort::isXDIGIT_A(0xDC));
345
346 ok(  Devel::PPPort::isXDIGIT_L1(ord("9")));
347 ok(! Devel::PPPort::isXDIGIT_L1(0xFF));
348
349 ok(  Devel::PPPort::isPSXSPC(ord(" ")));
350 ok(! Devel::PPPort::isPSXSPC(ord("k")));
351
352 ok(  Devel::PPPort::isPSXSPC_A(ord("\cK")));
353 ok(! Devel::PPPort::isPSXSPC_A(0xFC));
354
355 ok(  Devel::PPPort::isPSXSPC_L1(ord("\cK")));
356 ok(! Devel::PPPort::isPSXSPC_L1(0xFC));
357
358 ok(&Devel::PPPort::av_top_index([1,2,3]), 2);
359 ok(&Devel::PPPort::av_tindex([1,2,3,4]), 3);
360