5 use Test::More tests => 7;
9 package MyCompositeRoleA;
10 use MooseX::Role::Parameterized;
12 parameter attribute => (
20 has $p->attribute => (
27 package MyCompositeRoleB;
28 use MooseX::Role::Parameterized;
30 parameter accessor => (
46 package MyDoubleConsumer;
48 with MyCompositeRoleA => { attribute => 'foo' },
49 MyCompositeRoleB => { accessor => 'bar' };
52 ok(MyDoubleConsumer->can('foo'), 'first role in composite applied successfully');
53 ok(MyDoubleConsumer->can('bar'), 'second role in composite applied successfully');
56 package MyExtendingRole;
57 use MooseX::Role::Parameterized;
66 with 'MyCompositeRoleA', { attribute => 'bar' };
70 default => sub { $p->foo },
76 package MyExtendedConsumer;
78 with MyCompositeRoleA => { attribute => 'baz' },
79 MyExtendingRole => { foo => 23 };
82 ok(MyExtendedConsumer->can('baz'), 'role composed directly applied successfully');
83 ok(MyExtendedConsumer->can('bar'), 'role composed through other role applied successfully');
84 is(eval { MyExtendedConsumer->new->foo }, 23, 'role composing other role applied successfully');
88 use MooseX::Role::Parameterized;
90 parameter rolename => (isa => "Str");
91 parameter roleparams => (isa => "HashRef");
96 with $p->rolename, $p->roleparams;
101 package MyProxyConsumer;
105 rolename => 'MyCompositeRoleA',
106 roleparams => { attribute => 'baz' },
108 MyCompositeRoleB => {
114 ok(MyProxyConsumer->can('baz'), 'proxied role got applied successfully');
115 ok(MyProxyConsumer->can('qux'), 'other role besides proxied one got applied successfully');