xref: /openbsd/gnu/usr.bin/perl/ext/XS-APItest/t/svpeek.t (revision 8932bfb7)
1BEGIN {
2    push @INC, "::lib:$MacPerl::Architecture:" if $^O eq 'MacOS';
3    require Config; import Config;
4    if ($Config{'extensions'} !~ /\bXS\/APItest\b/) {
5        print "1..0 # Skip: XS::APItest was not built\n";
6        exit 0;
7    }
8}
9
10use strict;
11use warnings;
12
13use Test::More tests => 50;
14
15BEGIN { use_ok('XS::APItest') };
16
17$| = 1;
18
19  is (DPeek ($/),    'PVMG("\n"\0)',		'$/');
20  is (DPeek ($\),    'PVMG()',			'$\\');
21  is (DPeek ($.),    'PVMG()',			'$.');
22  is (DPeek ($,),    'UNDEF',			'$,');
23  is (DPeek ($;),    'PV("\34"\0)',		'$;');
24  is (DPeek ($"),    'PV(" "\0)',		'$"');
25  is (DPeek ($:),    'PVMG(" \n-"\0)',		'$:');
26  is (DPeek ($~),    'PVMG()',			'$~');
27  is (DPeek ($^),    'PVMG()',			'$^');
28  is (DPeek ($=),    'PVMG()',			'$=');
29  is (DPeek ($-),    'PVMG()',			'$-');
30like (DPeek ($!), qr'^PVMG\("',			'$!');
31if ($^O eq 'VMS') {
32  # VMS defines COMPLEX_STATUS and upgrades $? to PVLV
33  is (DPeek ($?),    'PVLV()',			'$?');
34} else {
35  is (DPeek ($?),    'PVMG()',			'$?');
36}
37  is (DPeek ($|),    'PVMG(1)',			'$|');
38
39  "abc" =~ m/(b)/;	# Don't know why these magic vars have this content
40like (DPeek ($1), qr'^PVMG\("',			' $1');
41  is (DPeek ($`),    'PVMG()',			' $`');
42  is (DPeek ($&),    'PVMG()',			' $&');
43  is (DPeek ($'),    'PVMG()',			" \$'");
44
45  is (DPeek (undef), 'SV_UNDEF',		'undef');
46  is (DPeek (1),     'IV(1)',			'constant 1');
47  is (DPeek (""),    'PV(""\0)',		'constant ""');
48  is (DPeek (1.),    'NV(1)',			'constant 1.');
49  is (DPeek (\1),    '\IV(1)',			'constant \1');
50  is (DPeek (\\1),   '\\\IV(1)',		'constant \\\1');
51
52  is (DPeek (\@ARGV),	'\AV()',		'\@ARGV');
53  is (DPeek (\@INC),	'\AV()',		'\@INC');
54  is (DPeek (\%INC),	'\HV()',		'\%INC');
55  is (DPeek (*STDOUT),	'GV()',			'*STDOUT');
56  is (DPeek (sub {}),	'\CV(__ANON__)',	'sub {}');
57
58{ our ($VAR, @VAR, %VAR);
59  open VAR, "<", $^X or die "Can't open $^X: $!";
60  sub VAR {}
61  format VAR =
62.
63
64  is (DPeek ( $VAR),	'UNDEF',		' $VAR undef');
65  is (DPeek (\$VAR),	'\UNDEF',		'\$VAR undef');
66  $VAR = 1;
67  is (DPeek ($VAR),	'IV(1)',		' $VAR 1');
68  is (DPeek (\$VAR),	'\IV(1)',		'\$VAR 1');
69  $VAR = "";
70  is (DPeek ($VAR),	'PVIV(""\0)',		' $VAR ""');
71  is (DPeek (\$VAR),	'\PVIV(""\0)',		'\$VAR ""');
72  $VAR = "\xa8";
73  is (DPeek ($VAR),	'PVIV("\250"\0)',	' $VAR "\xa8"');
74  is (DPeek (\$VAR),	'\PVIV("\250"\0)',	'\$VAR "\xa8"');
75  SKIP: {
76      $] <= 5.008001 and skip "UTF8 tests useless in this ancient perl version", 1;
77      $VAR = "a\x0a\x{20ac}";
78      is (DPeek ($VAR), 'PVIV("a\n\342\202\254"\0) [UTF8 "a\n\x{20ac}"]',
79						  ' $VAR "a\x0a\x{20ac}"');
80      }
81  $VAR = sub { "VAR" };
82  is (DPeek ($VAR),	'\CV(__ANON__)',	' $VAR sub { "VAR" }');
83  is (DPeek (\$VAR),	'\\\CV(__ANON__)',	'\$VAR sub { "VAR" }');
84  $VAR = 0;
85
86  is (DPeek (\&VAR),	'\CV(VAR)',		'\&VAR');
87  is (DPeek ( *VAR),	'GV()',			' *VAR');
88
89  is (DPeek (*VAR{GLOB}),	'\GV()',	' *VAR{GLOB}');
90like (DPeek (*VAR{SCALAR}), qr'\\PV(IV|MG)\(0\)',' *VAR{SCALAR}');
91  is (DPeek (*VAR{ARRAY}),	'\AV()',	' *VAR{ARRAY}');
92  is (DPeek (*VAR{HASH}),	'\HV()',	' *VAR{HASH}');
93  is (DPeek (*VAR{CODE}),	'\CV(VAR)',	' *VAR{CODE}');
94  is (DPeek (*VAR{IO}),		'\IO()',	' *VAR{IO}');
95  is (DPeek (*VAR{FORMAT}),$]<5.008?'SV_UNDEF':'\FM()',' *VAR{FORMAT}');
96  }
97
981;
99