diff options
Diffstat (limited to 't/bugs/instance_application_role_args.t')
-rw-r--r-- | t/bugs/instance_application_role_args.t | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/t/bugs/instance_application_role_args.t b/t/bugs/instance_application_role_args.t new file mode 100644 index 0000000..120d12e --- /dev/null +++ b/t/bugs/instance_application_role_args.t @@ -0,0 +1,50 @@ +use strict; +use warnings; +use Test::More; + +{ + package Point; + use Moose; + + with qw/DoesNegated DoesTranspose/; + + has x => ( isa => 'Int', is => 'rw' ); + has y => ( isa => 'Int', is => 'rw' ); + + sub inspect { [$_[0]->x, $_[0]->y] } + + no Moose; +} + +{ + package DoesNegated; + use Moose::Role; + + sub negated { + my $self = shift; + $self->new( x => -$self->x, y => -$self->y ); + } + + no Moose::Role; +} + +{ + package DoesTranspose; + use Moose::Role; + + sub transpose { + my $self = shift; + $self->new( x => $self->y, y => $self->x ); + } + + no Moose::Role; +} + +my $p = Point->new( x => 4, y => 3 ); + +DoesTranspose->meta->apply( $p, -alias => { transpose => 'negated' } ); + +is_deeply($p->negated->inspect, [3, 4]); +is_deeply($p->transpose->inspect, [3, 4]); + +done_testing; |