|
Packit Service |
993e16 |
use warnings;
|
|
Packit Service |
993e16 |
use strict;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
BEGIN { unshift @INC, "./t/lib"; }
|
|
Packit Service |
993e16 |
use Test::More tests => 79;
|
|
Packit Service |
993e16 |
use t::LoadXS ();
|
|
Packit Service |
993e16 |
use t::WriteHeader ();
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::WriteHeader::write_header("callchecker0", "t", "callck");
|
|
Packit Service |
993e16 |
ok 1;
|
|
Packit Service |
993e16 |
require_ok "Devel::CallChecker";
|
|
Packit Service |
993e16 |
t::LoadXS::load_xs("callck", "t", [Devel::CallChecker::callchecker_linkable()]);
|
|
Packit Service |
993e16 |
ok 1;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::test_cv_getset_call_checker();
|
|
Packit Service |
993e16 |
ok 1;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
my @z = ();
|
|
Packit Service |
993e16 |
my @a = qw(a);
|
|
Packit Service |
993e16 |
my @b = qw(a b);
|
|
Packit Service |
993e16 |
my @c = qw(a b c);
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
my($foo_got, $foo_ret);
|
|
Packit Service |
993e16 |
sub foo($@) { $foo_got = [ @_ ]; return "z"; }
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
sub bar (\@$) { }
|
|
Packit Service |
993e16 |
sub baz { }
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ 2, qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = &foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_lists(\&foo;;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = &foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_scalars(\&foo;;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ 2, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c, @a, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ 2, 3, 1, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ 2 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo();};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = &foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, "\\\@\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ \@b, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, undef);
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
like $@, qr/ with no proto[ ,]/;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, \&bar);
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ \@b, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, \&baz;;
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
like $@, qr/ with no proto[ ,]/;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, "\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo();};
|
|
Packit Service |
993e16 |
like $@, qr/\ANot enough arguments for main::foo /;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto(\&foo, "\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(1,2);};
|
|
Packit Service |
993e16 |
like $@, qr/\AToo many arguments for main::foo /;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, "\\\@\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ \@b, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, undef);
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, \&bar);
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ \@b, 3 ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, \&baz;;
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, [ qw(a b), qw(a b c) ];
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, "\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo();};
|
|
Packit Service |
993e16 |
like $@, qr/\ANot enough arguments for main::foo /;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_proto_or_list(\&foo, "\$");
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(1,2);};
|
|
Packit Service |
993e16 |
like $@, qr/\AToo many arguments for main::foo /;
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, "z";
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
t::callck::cv_set_call_checker_multi_sum(\&foo;;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, 5;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, 2;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo();};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, 0;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
$foo_got = undef;
|
|
Packit Service |
993e16 |
eval q{$foo_ret = foo(@b, @c, @a, @c);};
|
|
Packit Service |
993e16 |
is $@, "";
|
|
Packit Service |
993e16 |
is_deeply $foo_got, undef;
|
|
Packit Service |
993e16 |
is $foo_ret, 9;
|
|
Packit Service |
993e16 |
|
|
Packit Service |
993e16 |
1;
|