Commit | Line | Data |
67199842 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More tests => 14; |
7 | use Test::Exception; |
8 | |
9 | use Mouse::Meta::Role::Application::RoleSummation; |
10 | use Mouse::Meta::Role::Composite; |
11 | |
12 | { |
13 | package Role::Foo; |
14 | use Mouse::Role; |
15 | |
16 | package Role::Bar; |
17 | use Mouse::Role; |
18 | |
19 | package Role::Baz; |
20 | use Mouse::Role; |
21 | |
22 | package Role::Gorch; |
23 | use Mouse::Role; |
24 | } |
25 | |
26 | { |
27 | my $c = Mouse::Meta::Role::Composite->new( |
28 | roles => [ |
29 | Role::Foo->meta, |
30 | Role::Bar->meta, |
31 | Role::Baz->meta, |
32 | ] |
33 | ); |
34 | isa_ok($c, 'Mouse::Meta::Role::Composite'); |
35 | |
36 | is($c->name, 'Role::Foo|Role::Bar|Role::Baz', '... got the composite role name'); |
37 | |
38 | is_deeply($c->get_roles, [ |
39 | Role::Foo->meta, |
40 | Role::Bar->meta, |
41 | Role::Baz->meta, |
42 | ], '... got the right roles'); |
43 | |
44 | ok($c->does_role($_), '... our composite does the role ' . $_) |
45 | for qw( |
46 | Role::Foo |
47 | Role::Bar |
48 | Role::Baz |
49 | ); |
50 | |
51 | lives_ok { |
52 | Mouse::Meta::Role::Application::RoleSummation->new->apply($c); |
53 | } '... this composed okay'; |
54 | |
55 | ##... now nest 'em |
56 | { |
57 | my $c2 = Mouse::Meta::Role::Composite->new( |
58 | roles => [ |
59 | $c, |
60 | Role::Gorch->meta, |
61 | ] |
62 | ); |
63 | isa_ok($c2, 'Mouse::Meta::Role::Composite'); |
64 | |
65 | is($c2->name, 'Role::Foo|Role::Bar|Role::Baz|Role::Gorch', '... got the composite role name'); |
66 | |
67 | is_deeply($c2->get_roles, [ |
68 | $c, |
69 | Role::Gorch->meta, |
70 | ], '... got the right roles'); |
71 | |
72 | ok($c2->does_role($_), '... our composite does the role ' . $_) |
73 | for qw( |
74 | Role::Foo |
75 | Role::Bar |
76 | Role::Baz |
77 | Role::Gorch |
78 | ); |
79 | } |
80 | } |