11 my ($n, $f, $depth, $up, @case) = @_;
15 return wrap( $n, $f, $depth, $up, @case );
18 return uplevel( $up , $f, $depth, $up, @case );
24 sub recurse_call_check {
25 my ($depth, $up, @case) = @_;
30 push @result, recurse_call_check($depth, $up, @case, 'Call' );
31 for my $n ( 1 .. $up ) {
32 push @result, Wrap::wrap( $n, \&recurse_call_check,
34 $n == 1 ? "Wrap(Call)" : "Wrap(Call) x $n" ),
40 my (@uplevel_callstack, @real_callstack);
42 while ( defined( my $caller = caller($i++) ) ) {
43 push @uplevel_callstack, $caller;
46 while ( defined( my $caller = CORE::caller($i++) ) ) {
47 push @real_callstack, $caller;
51 join( q{, }, reverse @uplevel_callstack ),
52 join( q{, }, reverse @real_callstack ),
65 my @results = Call::recurse_call_check( $depth, $up, 'Call' );
67 is( scalar @results, $cases,
68 "Right number of cases"
71 my $expected = shift @results;
73 for my $got ( @results ) {
74 is( $got->[1], $expected->[1],
76 ) or diag( "Real callers: $got->[2]" );