Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 400_mouse_util / 007_apply_roles.t
1 use strict;
2 # This is automatically generated by author/import-moose-test.pl.
3 # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4 use t::lib::MooseCompat;
5 use warnings;
6
7 use Test::More;
8 use Mouse::Util qw( apply_all_roles );
9
10 {
11     package Role::Foo;
12     use Mouse::Role;
13 }
14
15 {
16     package Role::Bar;
17     use Mouse::Role;
18 }
19
20 {
21     package Role::Baz;
22     use Mouse::Role;
23 }
24
25 {
26     package Class::A;
27     use Mouse;
28 }
29
30 {
31     package Class::B;
32     use Mouse;
33 }
34
35 {
36     package Class::C;
37     use Mouse;
38 }
39
40 {
41     package Class::D;
42     use Mouse;
43 }
44
45 {
46     package Class::E;
47     use Mouse;
48 }
49
50 my @roles = qw( Role::Foo Role::Bar Role::Baz );
51 apply_all_roles( 'Class::A', @roles );
52 ok( Class::A->meta->does_role($_), "Class::A does $_" ) for @roles;
53
54 apply_all_roles( 'Class::B', map { $_->meta } @roles );
55 ok( Class::A->meta->does_role($_),
56     "Class::B does $_ (applied with meta role object)" )
57     for @roles;
58
59 @roles = qw( Role::Foo );
60 apply_all_roles( 'Class::C', @roles );
61 ok( Class::A->meta->does_role($_), "Class::C does $_" ) for @roles;
62
63 apply_all_roles( 'Class::D', map { $_->meta } @roles );
64 ok( Class::A->meta->does_role($_),
65     "Class::D does $_ (applied with meta role object)" )
66     for @roles;
67
68 @roles = qw( Role::Foo Role::Bar ), Role::Baz->meta;
69 apply_all_roles( 'Class::E', @roles );
70 ok( Class::A->meta->does_role($_),
71     "Class::E does $_ (mix of names and meta role object)" )
72     for @roles;
73
74 done_testing;