6 use Test::More tests => 16;
9 use Mouse::Meta::Role::Application::RoleSummation;
10 use Mouse::Meta::Role::Composite;
21 package Role::ProvidesFoo;
23 sub foo { 'Role::ProvidesFoo::foo' }
25 package Role::ProvidesBar;
27 sub bar { 'Role::ProvidesBar::bar' }
30 # test simple requirement
32 my $c = Mouse::Meta::Role::Composite->new(
38 isa_ok($c, 'Mouse::Meta::Role::Composite');
40 is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name');
43 Mouse::Meta::Role::Application::RoleSummation->new->apply($c);
44 } '... this succeeds as expected';
47 [ sort $c->get_required_method_list ],
49 '... got the right list of required methods'
53 # test requirement satisfied
55 my $c = Mouse::Meta::Role::Composite->new(
58 Role::ProvidesFoo->meta,
61 isa_ok($c, 'Mouse::Meta::Role::Composite');
63 is($c->name, 'Role::Foo|Role::ProvidesFoo', '... got the composite role name');
66 Mouse::Meta::Role::Application::RoleSummation->new->apply($c);
67 } '... this succeeds as expected';
70 [ sort $c->get_required_method_list ],
72 '... got the right list of required methods'
76 # test requirement satisfied
78 my $c = Mouse::Meta::Role::Composite->new(
81 Role::ProvidesFoo->meta,
85 isa_ok($c, 'Mouse::Meta::Role::Composite');
87 is($c->name, 'Role::Foo|Role::ProvidesFoo|Role::Bar', '... got the composite role name');
90 Mouse::Meta::Role::Application::RoleSummation->new->apply($c);
91 } '... this succeeds as expected';
94 [ sort $c->get_required_method_list ],
96 '... got the right list of required methods'
100 # test requirement satisfied
102 my $c = Mouse::Meta::Role::Composite->new(
105 Role::ProvidesFoo->meta,
106 Role::ProvidesBar->meta,
110 isa_ok($c, 'Mouse::Meta::Role::Composite');
112 is($c->name, 'Role::Foo|Role::ProvidesFoo|Role::ProvidesBar|Role::Bar', '... got the composite role name');
115 Mouse::Meta::Role::Application::RoleSummation->new->apply($c);
116 } '... this succeeds as expected';
119 [ sort $c->get_required_method_list ],
121 '... got the right list of required methods'