5 use Test::More tests => 9;
8 package MyCompositeRoleA;
9 use MooseX::Role::Parameterized;
11 parameter attribute => (
19 has $p->attribute => (
26 package MyCompositeRoleB;
27 use MooseX::Role::Parameterized;
29 parameter accessor => (
45 package MyDoubleConsumer;
47 with MyCompositeRoleA => { attribute => 'foo' },
48 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');
56 ok !$@, 'testing composite roles lived';
59 package MyExtendingRole;
60 use MooseX::Role::Parameterized;
69 with 'MyCompositeRoleA', { attribute => 'bar' };
73 default => sub { $p->foo },
79 package MyExtendedConsumer;
81 with MyCompositeRoleA => { attribute => 'bar' },
82 MyExtendingRole => { foo => 23 };
87 ok(MyExtendedConsumer->can('bar'), 'role composed through other role applied successfully');
88 is(MyExtendedConsumer->new->foo, 23, 'role composing other role applied successfully');
90 ok !$@, 'testing role through application through other role lived';
94 use MooseX::Role::Parameterized;
96 parameter rolename => (isa => "Str");
97 parameter roleparams => (isa => "HashRef");
102 with $p->rolename, $p->roleparams;
107 package MyProxyConsumer;
111 rolename => 'MyCompositeRoleA',
112 roleparams => { attribute => 'baz' },
114 MyCompositeRoleB => {
122 ok(MyProxyConsumer->can('baz'), 'proxied role got applied successfully');
123 ok(MyProxyConsumer->can('qux'), 'other role besides proxied one got applied successfully');
125 ok !$@, 'testing proxied roles lived';