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' };
53 local $TODO = "role-role application for parameterized roles doesn't work yet";
54 ok(MyDoubleConsumer->can('foo'), 'first role in composite applied successfully');
55 ok(MyDoubleConsumer->can('bar'), 'second role in composite applied successfully');
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 => 'baz' },
82 MyExtendingRole => { foo => 23 };
86 local $TODO = "role-role application for parameterized roles doesn't work yet";
87 ok(MyExtendedConsumer->can('baz'), 'role composed directly applied successfully');
88 ok(MyExtendedConsumer->can('bar'), 'role composed through other role applied successfully');
89 is(eval { MyExtendedConsumer->new->foo }, 23, 'role composing other role applied successfully');
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 => {
121 local $TODO = "role-role application for parameterized roles doesn't work yet";
122 ok(MyProxyConsumer->can('baz'), 'proxied role got applied successfully');
123 ok(MyProxyConsumer->can('qux'), 'other role besides proxied one got applied successfully');