trAvis - MANAGER
Edit File: apply_roles.t
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;