From 3e269be59e146b4cd2da89f01195c81e82de31e1 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 19 Jan 2010 23:59:46 -0600 Subject: tests for mangle_return preserving context --- t/011-mangle-return.t | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3