1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#!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;
|