Rename ext/Devel/PPPort to ext/Devel-PPPort
[p5sagit/p5-mst-13.2.git] / ext / Devel-PPPort / t / call.t
CommitLineData
adfe19db 1################################################################################
2#
3# !!!!! Do NOT edit this file directly! !!!!!
4#
5# Edit mktests.PL and/or parts/inc/call instead.
6#
cac25305 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#
adfe19db 11################################################################################
12
13BEGIN {
14 if ($ENV{'PERL_CORE'}) {
15 chdir 't' if -d 't';
0ff33da8 16 @INC = ('../lib', '../ext/Devel-PPPort/t') if -d '../lib' && -d '../ext';
adfe19db 17 require Config; import Config;
18 use vars '%Config';
a745474a 19 if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
adfe19db 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
c07deaaf 28 sub load {
29 eval "use Test";
30 require 'testutil.pl' if $@;
adfe19db 31 }
c07deaaf 32
ac2e3cea 33 if (52) {
c07deaaf 34 load();
ac2e3cea 35 plan(tests => 52);
adfe19db 36 }
37}
38
39use Devel::PPPort;
40use strict;
41$^W = 1;
42
236afa0a 43package Devel::PPPort;
44use vars '@ISA';
45require DynaLoader;
46@ISA = qw(DynaLoader);
47bootstrap Devel::PPPort;
48
49package main;
50
adfe19db 51sub eq_array
52{
53 my($a, $b) = @_;
54 join(':', @$a) eq join(':', @$b);
55}
56
57sub f
58{
59 shift;
60 unshift @_, 'b';
61 pop @_;
62 @_, defined wantarray ? wantarray ? 'x' : 'y' : 'z';
63}
64
65my $obj = bless [], 'Foo';
66
67sub Foo::meth
68{
69 return 'bad_self' unless @_ && ref $_[0] && ref($_[0]) eq 'Foo';
70 shift;
71 shift;
72 unshift @_, 'b';
73 pop @_;
74 @_, defined wantarray ? wantarray ? 'x' : 'y' : 'z';
75}
76
77my $test;
78
79for $test (
80 # flags args expected description
81 [ &Devel::PPPort::G_SCALAR, [ ], [ qw(y 1) ], '0 args, G_SCALAR' ],
82 [ &Devel::PPPort::G_SCALAR, [ qw(a p q) ], [ qw(y 1) ], '3 args, G_SCALAR' ],
83 [ &Devel::PPPort::G_ARRAY, [ ], [ qw(x 1) ], '0 args, G_ARRAY' ],
84 [ &Devel::PPPort::G_ARRAY, [ qw(a p q) ], [ qw(b p x 3) ], '3 args, G_ARRAY' ],
85 [ &Devel::PPPort::G_DISCARD, [ ], [ qw(0) ], '0 args, G_DISCARD' ],
86 [ &Devel::PPPort::G_DISCARD, [ qw(a p q) ], [ qw(0) ], '3 args, G_DISCARD' ],
87)
88{
89 my ($flags, $args, $expected, $description) = @$test;
90 print "# --- $description ---\n";
91 ok(eq_array( [ &Devel::PPPort::call_sv(\&f, $flags, @$args) ], $expected));
92 ok(eq_array( [ &Devel::PPPort::call_sv(*f, $flags, @$args) ], $expected));
93 ok(eq_array( [ &Devel::PPPort::call_sv('f', $flags, @$args) ], $expected));
94 ok(eq_array( [ &Devel::PPPort::call_pv('f', $flags, @$args) ], $expected));
95 ok(eq_array( [ &Devel::PPPort::call_argv('f', $flags, @$args) ], $expected));
96 ok(eq_array( [ &Devel::PPPort::eval_sv("f(qw(@$args))", $flags) ], $expected));
97 ok(eq_array( [ &Devel::PPPort::call_method('meth', $flags, $obj, @$args) ], $expected));
ac2e3cea 98 ok(eq_array( [ &Devel::PPPort::call_sv_G_METHOD('meth', $flags, $obj, @$args) ], $expected));
adfe19db 99};
100
101ok(&Devel::PPPort::eval_pv('f()', 0), 'y');
102ok(&Devel::PPPort::eval_pv('f(qw(a b c))', 0), 'y');
103
a89b7ab8 104ok(!defined $::{'less::'}, 1, "Hadn't loaded less yet");
c83e6f19 105Devel::PPPort::load_module(0, "less", undef);
a89b7ab8 106ok(defined $::{'less::'}, 1, "Have now loaded less");
107