5 use Test::More tests => 9;
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' };
53 ok(MyDoubleConsumer->can('foo'), 'first role in composite applied successfully');
54 ok(MyDoubleConsumer->can('bar'), 'second role in composite applied successfully');
55 } 'testing composite roles lived';
58 package MyExtendingRole;
59 use MooseX::Role::Parameterized;
68 with 'MyCompositeRoleA', { attribute => 'bar' };
72 default => sub { $p->foo },
78 package MyExtendedConsumer;
80 with MyCompositeRoleA => { attribute => 'bar' },
81 MyExtendingRole => { foo => 23 };
85 ok(MyExtendedConsumer->can('bar'), 'role composed through other role applied successfully');
86 is(MyExtendedConsumer->new->foo, 23, 'role composing other role applied successfully');
87 } 'testing role through application through other role lived';
91 use MooseX::Role::Parameterized;
93 parameter rolename => (isa => "Str");
94 parameter roleparams => (isa => "HashRef");
99 with $p->rolename, $p->roleparams;
104 package MyProxyConsumer;
108 rolename => 'MyCompositeRoleA',
109 roleparams => { attribute => 'baz' },
111 MyCompositeRoleB => {
118 ok(MyProxyConsumer->can('baz'), 'proxied role got applied successfully');
119 ok(MyProxyConsumer->can('qux'), 'other role besides proxied one got applied successfully');
120 } 'testing proxied roles lived';