diff options
author | Jesse Luehrs <doy@tozt.net> | 2010-01-19 23:59:46 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2010-01-19 23:59:46 -0600 |
commit | 3e269be59e146b4cd2da89f01195c81e82de31e1 (patch) | |
tree | 5c566be71a5a1fbc50b9759b1755b1f77698b1f5 | |
parent | 1db90d01e8aabb80a38c139443949a3c880b6be4 (diff) | |
download | moosex-mangle-3e269be59e146b4cd2da89f01195c81e82de31e1.tar.gz moosex-mangle-3e269be59e146b4cd2da89f01195c81e82de31e1.zip |
tests for mangle_return preserving context
-rw-r--r-- | t/011-mangle-return.t | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/t/011-mangle-return.t b/t/011-mangle-return.t index 0db182b..609e2c4 100644 --- a/t/011-mangle-return.t +++ b/t/011-mangle-return.t @@ -1,7 +1,9 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 11; + +my ($super_called, $sub_called) = (0, 0); package Foo; use Moose; @@ -17,6 +19,11 @@ sub bar { return join '-', @_ } +sub baz { + $super_called++ if wantarray; + $super_called++ if defined wantarray; +} + package Foo::Sub; use Moose; use MooseX::Mangle; @@ -34,6 +41,11 @@ mangle_return bar => sub { return $ret; }; +mangle_return baz => sub { + $sub_called++ if wantarray; + $sub_called++ if defined wantarray; +}; + package main; my $foo = Foo->new; my $foosub = Foo::Sub->new; @@ -42,3 +54,18 @@ is($foo->bar(qw(a b c)), 'a-b-c', 'unmodified method bar'); is_deeply([$foosub->foo(qw(a b c))], [qw(c b a d)], "foo's args are mangled (list context)"); is(scalar $foosub->foo(qw(a b c)), 2, "foo's args are mangled (scalar context)"); is($foosub->bar(qw(a b c)), 'a:b:c', "bar's args are mangled"); + +my @ret = $foosub->baz; +is($super_called, 2, 'correct context for original method'); +is($sub_called, 2, 'correct context for new method'); +($super_called, $sub_called) = (0, 0); + +my $ret = $foosub->baz; +is($super_called, 1, 'correct context for original method'); +is($sub_called, 1, 'correct context for new method'); +($super_called, $sub_called) = (0, 0); + +$foosub->baz; +is($super_called, 0, 'correct context for original method'); +is($sub_called, 0, 'correct context for new method'); +($super_called, $sub_called) = (0, 0); |