]> git.vpit.fr Git - perl/modules/subs-auto.git/commitdiff
Test ampersand calls
authorVincent Pit <vince@profvince.com>
Thu, 2 Oct 2008 20:15:35 +0000 (22:15 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 2 Oct 2008 20:15:35 +0000 (22:15 +0200)
t/10-base.t
t/12-proto.t

index 33c6fb23c8f37f5162f549780a03bd49ed4cc9e4..bd1050efd0d36983a8cf39c1f32e90bd708c7d65 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 67;
+use Test::More tests => 91;
 
 my %_re = (
  bareword => sub { qr/^Bareword\s+['"]?\s*$_[0]\s*['"]?\s+not\s+allowed\s+while\s+["']?\s*strict\s+subs\s*['"]?\s+in\s+use\s+at\s+$_[1]\s+line\s+$_[2]/ },
@@ -88,17 +88,50 @@ my %h = (
 my $foo;
 our @foo;
 
-my $y = eval { foo 1, 2, \%h };
+eval { foo 1, 2, \%h };
 _got_ok('compiling to foo(1,2,\\\%h)');
 is($foo, 15, 'foo really was executed');
 
+eval { foo(3, 4, \%h) };
+_got_ok('compiling to foo(3,4,\\\%h)');
+is($foo, 19, 'foo() really was executed');
+
+eval { local @_ = (5, 6, \%h); &foo };
+_got_ok('compiling to foo(5,6,\\\%h)');
+is($foo, 23, '&foo really was executed');
+
+eval { &foo(7, 8, \%h) };
+_got_ok('compiling to foo(7,8,\\\%h)');
+is($foo, 27, '&foo() really was executed');
+
 eval { wut 13, "what" };
 _got_ok('compiling to wut(13,"what")');
 is($wut, 17, 'wut really was executed');
 
+eval { wut(17, "what") };
+_got_ok('compiling to wut(17,"what")');
+is($wut, 21, 'wut() really was executed');
+
+eval { local @_ = (21, "what"); &wut };
+_got_ok('compiling to wut(21,"what")');
+is($wut, 25, '&wut really was executed');
+
+eval { &wut(25, "what") };
+_got_ok('compiling to wut(25,"what")');
+is($wut, 29, '&wut() really was executed');
+
 eval { qux };
 _got_undefined('qux', __LINE__-1);
 
+eval { qux() };
+_got_undefined('qux', __LINE__-1);
+
+eval { &qux };
+_got_undefined('qux', __LINE__-1);
+
+eval { &qux() };
+_got_undefined('qux', __LINE__-1);
+
 {
  no strict 'refs';
  is(*{'::feh'}{CODE}, undef, 'feh isn\'t defined');
@@ -261,9 +294,30 @@ eval { foo 7, 9, { } };
 _got_ok('compiling to foo(7,9,{})');
 is($foo, 16, 'foo really was executed');
 
+eval { foo(8, 10, { }) };
+_got_ok('compiling to foo(8,10,{})');
+is($foo, 18, 'foo() really was executed');
+
+eval { local @_ = (9, 11, { }); &foo };
+_got_ok('compiling to foo(9,11,{})');
+is($foo, 20, '&foo really was executed');
+
+eval { &foo(10, 12, { }) };
+_got_ok('compiling to foo(10,12,{})');
+is($foo, 22, '&foo() really was executed');
+
 eval { blech };
 _got_undefined('blech', __LINE__-1);
 
+eval { blech() };
+_got_undefined('blech', __LINE__-1);
+
+eval { &blech };
+_got_undefined('blech', __LINE__-1);
+
+eval { &blech() };
+_got_undefined('blech', __LINE__-1);
+
 ok(-f $0 && -r _, '-X _');
 
 __DATA__
index db7b1351a9bd74c353178245e19c9b706dec68df..10c59bbc8c56af672f86d1a1c1a4b173a1ce0994 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 7;
+use Test::More tests => 11;
 
 my $foo;
 sub foo ($) { $foo = $_[0] };
@@ -21,6 +21,10 @@ eval { my @x = (1, 5); foo @x };
 is($@, '', 'foo was compiled ok');
 is($foo, 2, 'foo was called with the right arguments');
 
+eval { my @x = (1, 5); &foo(@x) };
+is($@, '', '&foo was compiled ok');
+is($foo, 1, '&foo was called with the right arguments');
+
 my $bar;
 sub bar (\@) { $bar = 0; $bar += $_ for grep defined, @{$_[0]}  }
 
@@ -28,6 +32,10 @@ eval { my @x = (2, 3, 4); bar @x };
 is($@, '', 'bar was compiled ok');
 is($bar, 9, 'bar was called with the right arguments');
 
+eval { my @x = ([2, 3], 4); &bar(@x) };
+is($@, '', '&bar was compiled ok');
+is($bar, 5, '&bar was called with the right arguments');
+
 eval { baz 5 };
 like($@, qr/^Undefined\s+subroutine\s+&?main::baz/,'baz couldn\'t be compiled');
 is($baz, undef, 'baz can\'t be called because of the prototype mismatch');