more detailed messages for tag and release commit
[gitmo/Moose.git] / t / basics / wrapped_method_cxt_propagation.t
CommitLineData
f1cfdc64 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
f1cfdc64 7
f1cfdc64 8
9{
10 package TouchyBase;
11 use Moose;
12
f1cfdc64 13 has x => ( is => 'rw', default => 0 );
14
15 sub inc { $_[0]->x( 1 + $_[0]->x ) }
16
17 sub scalar_or_array {
18 wantarray ? (qw/a b c/) : "x";
19 }
20
f1cfdc64 21 sub void {
22 die "this must be void context" if defined wantarray;
23 }
24
f1cfdc64 25 package AfterSub;
26 use Moose;
27
28 extends "TouchyBase";
29
cffe13ad 30 after qw/scalar_or_array void/ => sub {
f1cfdc64 31 my $self = shift;
d03bd989 32 $self->inc;
f1cfdc64 33 }
34}
35
36my $base = TouchyBase->new;
37my $after = AfterSub->new;
38
39foreach my $obj ( $base, $after ) {
40 my $class = ref $obj;
41 my @array = $obj->scalar_or_array;
42 my $scalar = $obj->scalar_or_array;
43
44 is_deeply(\@array, [qw/a b c/], "array context ($class)");
45 is($scalar, "x", "scalar context ($class)");
46
47 {
48 local $@;
49 eval { $obj->void };
50 ok( !$@, "void context ($class)" );
51 }
cffe13ad 52
53 if ( $obj->isa("AfterSub") ) {
54 is( $obj->x, 3, "methods were wrapped" );
55 }
f1cfdc64 56}
57
a28e50e4 58done_testing;