Blame t/callck.t

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;