X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F11-existing.t;h=2e6c6ca11a424a372f23e54c249e309926e70ad0;hb=3571f5a5bbffc758bbb91793ae256609d71945fc;hp=c45a71b464ca7e9dabd24ff59271964f4bb48094;hpb=ed2a5a35c26bfa677e6d2bc5586068b9a28735dc;p=perl%2Fmodules%2FSub-Op.git diff --git a/t/11-existing.t b/t/11-existing.t index c45a71b..2e6c6ca 100644 --- a/t/11-existing.t +++ b/t/11-existing.t @@ -5,7 +5,7 @@ use warnings; use blib 't/Sub-Op-LexicalSub'; -use Test::More tests => 2 *((4 + 2 * 4) + (2 * 5) + 1); +use Test::More tests => 2 * ((2 + 2) * 4 + (1 + 2) * 5) + (2 + 2) + 4; our $call_foo; sub foo { ok $call_foo, 'the preexistent foo was called' } @@ -13,6 +13,8 @@ sub foo { ok $call_foo, 'the preexistent foo was called' } our $call_bar; sub bar () { ok $call_bar, 'the preexistent bar was called' } +sub X () { 1 } + our $called; { @@ -42,7 +44,7 @@ our $called; @seq = ($names[0]) x $calls; } - my $test = "{\n"; + my $test = "{\n{\n"; for my $name (@names) { $test .= <<" INIT" use Sub::Op::LexicalSub $name => sub { @@ -57,6 +59,15 @@ our $called; } $test .= "{\n$code\n}\n"; $test .= "}\n"; + for my $name (grep +{ map +($_, 1), qw/foo bar/ }->{ $_ }, @names) { + $test .= <<" CHECK_SUB" + { + local \$call_$name = 1; + $name(); + } + CHECK_SUB + } + $test .= "}\n"; local $called = 0; eval $test; @@ -74,6 +85,9 @@ our $called; is prototype('main::foo'), undef, "foo's prototype was preserved"; is prototype('main::bar'), '', "bar's prototype was preserved"; +is prototype('main::X'), '', "X's prototype was preserved"; +ok Sub::Op::_constant_sub(do { no strict "refs"; \&{"main::X"} }), + 'X is still a constant'; __DATA__ foo(); @@ -161,3 +175,7 @@ my $bar = \&bar; &$bar; ---- bar # () # +#### +is X, 2, 'constant overriding'; +---- +X # 2 # [ ]