trAvis - MANAGER
Edit File: 034-apply_all_roles.t
#!/usr/bin/perl use strict; use warnings; use Test::More; my $foo = 0; my $bar = 0; { package FooRole; use Mouse::Role; sub foo { 'ok1' } before method => sub { $foo++ }; } { package BarRole; use Mouse::Role; sub bar { 'ok2' } before method => sub { $bar++ }; } { package Baz; use Mouse; sub method {} no Mouse; } { package Qux; use Mouse; sub method {} no Mouse; } Mouse::Util::apply_all_roles('Baz', 'BarRole', 'FooRole'); my $baz = Baz->new; is $baz->foo, 'ok1'; is $baz->bar, 'ok2'; is join(",", sort $baz->meta->get_method_list), 'bar,foo,meta,method'; # applyu to instance my $qux = Qux->new; Mouse::Util::apply_all_roles($qux, 'FooRole'); note $qux; $foo = 0; $bar = 0; $qux->method; is $foo, 1; is $bar, 0; $qux = Qux->new; Mouse::Util::apply_all_roles($qux, 'BarRole'); note $qux; $foo = 0; $bar = 0; $qux->method; is $foo, 0; is $bar, 1; $qux = Qux->new; Mouse::Util::apply_all_roles($qux, 'FooRole', 'BarRole'); note $qux; $foo = 0; $bar = 0; $qux->method; is $foo, 1; is $bar, 1; done_testing;