tweaking test names to better VMS support
[gitmo/Moose.git] / t / 030_roles / 022_role_composition_req_methods.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 19;
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     requires 'foo';
19     
20     package Role::Bar;
21     use Moose::Role;
22     requires 'bar';
23     
24     package Role::ProvidesFoo;
25     use Moose::Role;    
26     sub foo { 'Role::ProvidesFoo::foo' }
27     
28     package Role::ProvidesBar;
29     use Moose::Role;    
30     sub bar { 'Role::ProvidesBar::bar' }     
31 }
32
33 # test simple requirement
34 {
35     my $c = Moose::Meta::Role::Composite->new(
36         roles => [
37             Role::Foo->meta,
38             Role::Bar->meta,
39         ]        
40     );
41     isa_ok($c, 'Moose::Meta::Role::Composite');
42
43     is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name');    
44     
45     lives_ok {
46         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
47     } '... this succeeds as expected';    
48     
49     is_deeply(
50         [ sort $c->get_required_method_list ],
51         [ 'bar', 'foo' ],
52         '... got the right list of required methods'
53     );
54 }
55
56 # test requirement satisfied
57 {
58     my $c = Moose::Meta::Role::Composite->new(
59         roles => [
60             Role::Foo->meta,
61             Role::ProvidesFoo->meta,
62         ]
63     );
64     isa_ok($c, 'Moose::Meta::Role::Composite');
65
66     is($c->name, 'Role::Foo|Role::ProvidesFoo', '... got the composite role name');    
67     
68     lives_ok { 
69         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
70     } '... this succeeds as expected';    
71     
72     is_deeply(
73         [ sort $c->get_required_method_list ],
74         [],
75         '... got the right list of required methods'
76     );
77 }
78
79 # test requirement satisfied
80 {
81     my $c = Moose::Meta::Role::Composite->new(
82         roles => [
83             Role::Foo->meta,
84             Role::ProvidesFoo->meta,
85             Role::Bar->meta,            
86         ]
87     );
88     isa_ok($c, 'Moose::Meta::Role::Composite');
89
90     is($c->name, 'Role::Foo|Role::ProvidesFoo|Role::Bar', '... got the composite role name');    
91     
92     lives_ok {
93         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
94     } '... this succeeds as expected';    
95     
96     is_deeply(
97         [ sort $c->get_required_method_list ],
98         [ 'bar' ],
99         '... got the right list of required methods'
100     );
101 }
102
103 # test requirement satisfied
104 {
105     my $c = Moose::Meta::Role::Composite->new(
106         roles => [
107             Role::Foo->meta,
108             Role::ProvidesFoo->meta,
109             Role::ProvidesBar->meta,            
110             Role::Bar->meta,            
111         ]
112     );
113     isa_ok($c, 'Moose::Meta::Role::Composite');
114
115     is($c->name, 'Role::Foo|Role::ProvidesFoo|Role::ProvidesBar|Role::Bar', '... got the composite role name');    
116     
117     lives_ok {
118         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
119     } '... this succeeds as expected';    
120     
121     is_deeply(
122         [ sort $c->get_required_method_list ],
123         [ ],
124         '... got the right list of required methods'
125     );
126 }
127
128