6 use blib 't/Sub-Op-LexicalSub';
8 use Test::More tests => 2 *((4 + 2 * 4) + (2 * 5) + 1);
11 sub foo { ok $call_foo, 'the preexistent foo was called' }
14 sub bar () { ok $call_bar, 'the preexistent bar was called' }
21 my ($code, $params) = split /----\s*/, $_;
22 my ($names, $ret, $exp, $seq) = split /\s*#\s*/, $params;
24 my @names = split /\s*,\s*/, $names;
28 fail "@names: unable to get expected values: $@";
35 s/^\s*//, s/\s*$// for $seq;
36 @seq = split /\s*,\s*/, $seq;
37 die "calls and seq length mismatch" unless @seq == $calls;
39 @seq = ($names[0]) x $calls;
43 for my $name (@names) {
45 use Sub::Op::LexicalSub $name => sub {
47 my \$exp = shift \@exp;
48 is_deeply \\\@_, \$exp, '$name: arguments are correct';
49 my \$seq = shift \@seq;
50 is \$seq, '$name', '$name: sequence is correct';
55 $test .= "{\n$code\n}\n";
61 fail "@names: unable to evaluate test case: $@";
65 is $called, $calls, "@names: the hook was called the right number of times";
66 if ($called < $calls) {
67 fail for $called + 1 .. $calls;
72 is prototype('main::foo'), undef, "foo's prototype was preserved";
73 is prototype('main::bar'), '', "bar's prototype was preserved";