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