Commit | Line | Data |
560c498d |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | use Moose::Util qw( apply_all_roles ); |
6 | |
7 | { |
8 | package Role::Foo; |
9 | use Moose::Role; |
10 | } |
11 | |
12 | { |
13 | package Role::Bar; |
14 | use Moose::Role; |
15 | } |
16 | |
17 | { |
18 | package Role::Baz; |
19 | use Moose::Role; |
20 | } |
21 | |
22 | { |
23 | package Class::A; |
24 | use Moose; |
25 | } |
26 | |
27 | { |
28 | package Class::B; |
29 | use Moose; |
30 | } |
31 | |
32 | { |
33 | package Class::C; |
34 | use Moose; |
35 | } |
36 | |
37 | { |
38 | package Class::D; |
39 | use Moose; |
40 | } |
41 | |
42 | { |
43 | package Class::E; |
44 | use Moose; |
45 | } |
46 | |
47 | my @roles = qw( Role::Foo Role::Bar Role::Baz ); |
48 | apply_all_roles( 'Class::A', @roles ); |
49 | ok( Class::A->meta->does_role($_), "Class::A does $_" ) for @roles; |
50 | |
51 | apply_all_roles( 'Class::B', map { $_->meta } @roles ); |
52 | ok( Class::A->meta->does_role($_), |
53 | "Class::B does $_ (applied with meta role object)" ) |
54 | for @roles; |
55 | |
56 | @roles = qw( Role::Foo ); |
57 | apply_all_roles( 'Class::C', @roles ); |
58 | ok( Class::A->meta->does_role($_), "Class::C does $_" ) for @roles; |
59 | |
60 | apply_all_roles( 'Class::D', map { $_->meta } @roles ); |
61 | ok( Class::A->meta->does_role($_), |
62 | "Class::D does $_ (applied with meta role object)" ) |
63 | for @roles; |
64 | |
65 | @roles = qw( Role::Foo Role::Bar ), Role::Baz->meta; |
66 | apply_all_roles( 'Class::E', @roles ); |
67 | ok( Class::A->meta->does_role($_), |
68 | "Class::E does $_ (mix of names and meta role object)" ) |
69 | for @roles; |
70 | |
71 | done_testing; |