diff options
Diffstat (limited to 't/immutable/apply_roles_to_immutable.t')
-rw-r--r-- | t/immutable/apply_roles_to_immutable.t | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/t/immutable/apply_roles_to_immutable.t b/t/immutable/apply_roles_to_immutable.t new file mode 100644 index 0000000..206cd16 --- /dev/null +++ b/t/immutable/apply_roles_to_immutable.t @@ -0,0 +1,38 @@ +use strict; +use warnings; + +use Test::More; +use Test::Fatal; + + +{ + package My::Role; + use Moose::Role; + + around 'baz' => sub { + my $next = shift; + 'My::Role::baz(' . $next->(@_) . ')'; + }; +} + +{ + package Foo; + use Moose; + + sub baz { 'Foo::baz' } + + __PACKAGE__->meta->make_immutable(debug => 0); +} + +my $foo = Foo->new; +isa_ok($foo, 'Foo'); + +is($foo->baz, 'Foo::baz', '... got the right value'); + +is( exception { + My::Role->meta->apply($foo) +}, undef, '... successfully applied the role to immutable instance' ); + +is($foo->baz, 'My::Role::baz(Foo::baz)', '... got the right value'); + +done_testing; |