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
|
use strict;
use warnings;
use Test::More;
use Moose::Util qw( apply_all_roles );
{
package Role::Foo;
use Moose::Role;
}
{
package Role::Bar;
use Moose::Role;
}
{
package Role::Baz;
use Moose::Role;
}
{
package Class::A;
use Moose;
}
{
package Class::B;
use Moose;
}
{
package Class::C;
use Moose;
}
{
package Class::D;
use Moose;
}
{
package Class::E;
use Moose;
}
my @roles = qw( Role::Foo Role::Bar Role::Baz );
apply_all_roles( 'Class::A', @roles );
ok( Class::A->meta->does_role($_), "Class::A does $_" ) for @roles;
apply_all_roles( 'Class::B', map { $_->meta } @roles );
ok( Class::A->meta->does_role($_),
"Class::B does $_ (applied with meta role object)" )
for @roles;
@roles = qw( Role::Foo );
apply_all_roles( 'Class::C', @roles );
ok( Class::A->meta->does_role($_), "Class::C does $_" ) for @roles;
apply_all_roles( 'Class::D', map { $_->meta } @roles );
ok( Class::A->meta->does_role($_),
"Class::D does $_ (applied with meta role object)" )
for @roles;
@roles = qw( Role::Foo Role::Bar ), Role::Baz->meta;
apply_all_roles( 'Class::E', @roles );
ok( Class::A->meta->does_role($_),
"Class::E does $_ (mix of names and meta role object)" )
for @roles;
done_testing;
|