]> git.vpit.fr Git - perl/modules/Sub-Prototype-Util.git/blobdiff - t/11-recall.t
Importing Sub-Prototype-Util-0.04.tar.gz
[perl/modules/Sub-Prototype-Util.git] / t / 11-recall.t
index 3e3c7a28180f404ac5e997b68d5081a52b49aa92..0c48dbb5cce5ef92a6f2d5b6a213fee82e08c9ea 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3 + 12 + (($^V ge v5.10.0) ? 2 : 0);
+use Test::More tests => 3 + 14 + (($^V ge v5.10.0) ? 4 : 0);
 
 use Scalar::Util qw/set_prototype/;
 use Sub::Prototype::Util qw/recall/;
@@ -16,11 +16,14 @@ eval { recall 'hlagh' };
 like($@, qr/^Undefined\s+subroutine/, 'recall <unknown> croaks');
 
 sub noproto { $_[1], $_[0] }
-sub mytrunc ($;$) { $_[1], $_[0] };
-sub mygrep1 (&@) { grep { $_[0]->() } @_[1 .. $#_] };
-sub mygrep2 (\&@) { grep { $_[0]->() } @_[1 .. $#_] };
+sub mytrunc ($;$) { $_[1], $_[0] }
+sub mygrep1 (&@) { grep { $_[0]->() } @_[1 .. $#_] }
+sub mygrep2 (\&@) { grep { $_[0]->() } @_[1 .. $#_] }
+sub modify ($) { my $old = $_[0]; $_[0] = 5; $old }
+
 my $t = [ 1, 2, 3, 4 ];
 my $g = [ sub { $_ > 2 }, 1 .. 5 ];
+
 my @tests = (
  [ 'main::noproto', 'no prototype', $t, $t, [ 2, 1 ] ],
  [ 'CORE::push', 'push', [ [ 1, 2 ], 3, 5 ], [ [ 1, 2, 3, 5 ], 3, 5 ], [ 4 ] ],
@@ -28,11 +31,18 @@ my @tests = (
  [ 'main::mytrunc', 'truncate 2', $t, $t, [ 2, 1 ] ],
  [ 'main::mygrep1', 'grep1', $g, $g, [ 3 .. 5 ] ],
  [ 'main::mygrep2', 'grep2', $g, $g, [ 3 .. 5 ] ],
+ [ 'main::modify', 'modify arguments', [ 1 ], [ 5 ], [ 1 ] ],
 );
-sub myit { push @{$_->[2]}, 1; return 2 };
+
+sub myit { push @{$_[0]->[2]}, 3; return 4 };
 if ($^V ge v5.10.0) {
  set_prototype \&myit, '_';
- push @tests, [ 'main::myit', '_ prototype', [ ], [ 1 ], [ 2 ] ];
+ push @tests, [ 'main::myit', '_ with argument',
+                [ [ 1, 2, [ ] ], 5 ],
+                [ [ 1, 2, [ 3 ] ], 5 ],
+                [ 4 ]
+              ];
+ push @tests, [ 'main::myit', '_ with no argument', [ ], [ 3 ], [ 4 ] ];
 }
 
 for (@tests) {