adding method exclusion
[gitmo/Moose.git] / t / 030_roles / 020_role_composite.t
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;
23     use Moose::Role;         
24 }
25
26 {
27     my $c = Moose::Meta::Role::Composite->new(
28         roles => [
29             Role::Foo->meta,
30             Role::Bar->meta,
31             Role::Baz->meta,            
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,
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         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
53     } '... this composed okay';    
54 }