Commit | Line | Data |
fb1e11d5 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
a28e50e4 |
6 | use Test::More; |
b10dde3a |
7 | use Test::Fatal; |
fb1e11d5 |
8 | |
7ff56534 |
9 | use Moose::Meta::Role::Application::RoleSummation; |
10 | use Moose::Meta::Role::Composite; |
fb1e11d5 |
11 | |
12 | { |
13 | package Role::Foo; |
14 | use Moose::Role; |
d03bd989 |
15 | |
fb1e11d5 |
16 | package Role::Bar; |
17 | use Moose::Role; |
18 | |
19 | package Role::Baz; |
d03bd989 |
20 | use Moose::Role; |
21 | |
3e19778d |
22 | package Role::Gorch; |
d03bd989 |
23 | use Moose::Role; |
fb1e11d5 |
24 | } |
25 | |
26 | { |
27 | my $c = Moose::Meta::Role::Composite->new( |
28 | roles => [ |
29 | Role::Foo->meta, |
30 | Role::Bar->meta, |
d03bd989 |
31 | Role::Baz->meta, |
fb1e11d5 |
32 | ] |
33 | ); |
34 | isa_ok($c, 'Moose::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, |
d03bd989 |
41 | Role::Baz->meta, |
fb1e11d5 |
42 | ], '... got the right roles'); |
d03bd989 |
43 | |
c4538447 |
44 | ok($c->does_role($_), '... our composite does the role ' . $_) |
45 | for qw( |
46 | Role::Foo |
47 | Role::Bar |
d03bd989 |
48 | Role::Baz |
c4538447 |
49 | ); |
d03bd989 |
50 | |
b10dde3a |
51 | is( exception { |
fb1e11d5 |
52 | Moose::Meta::Role::Application::RoleSummation->new->apply($c); |
b10dde3a |
53 | }, undef, '... this composed okay' ); |
d03bd989 |
54 | |
3e19778d |
55 | ##... now nest 'em |
d03bd989 |
56 | { |
3e19778d |
57 | my $c2 = Moose::Meta::Role::Composite->new( |
58 | roles => [ |
59 | $c, |
60 | Role::Gorch->meta, |
61 | ] |
62 | ); |
63 | isa_ok($c2, 'Moose::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, |
d03bd989 |
69 | Role::Gorch->meta, |
3e19778d |
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 |
d03bd989 |
76 | Role::Baz |
77 | Role::Gorch |
78 | ); |
3e19778d |
79 | } |
fb1e11d5 |
80 | } |
a28e50e4 |
81 | |
82 | done_testing; |