1 # See https://rt.cpan.org/Ticket/Display.html?id=46347
10 requires 'test_output';
16 has test_output => ( is => 'rw' );
30 has test_output => ( is => 'rw' );
42 has test_output => ( is => 'rw' );
51 # Roles providing attributes/methods should satisfy requires() of other
54 local $TODO = "role attributes don't satisfy method requirements";
55 lives_ok { package My::Test1; use Moose; with 'My::Role2'; }
56 'role2(provides attribute) consumes role1';
59 lives_ok { package My::Test2; use Moose; with 'My::Role3'; }
60 'role3(provides method) consumes role1';
62 # As I understand the design, Roles composed in the same with() statement
63 # should NOT demonstrate ordering dependency. Alter these tests if that
64 # assumption is false. -Vince Veselosky
66 local $TODO = "role attributes don't satisfy method requirements";
67 lives_ok { package My::Test3; use Moose; with 'My::Role4', 'My::Role1'; }
68 'class consumes role4(provides attribute), role1';
72 local $TODO = "role attributes don't satisfy method requirements";
73 lives_ok { package My::Test4; use Moose; with 'My::Role1', 'My::Role4'; }
74 'class consumes role1, role4(provides attribute)';
77 lives_ok { package My::Test5; use Moose; with 'My::Role5', 'My::Role1'; }
78 'class consumes role5(provides method), role1';
80 lives_ok { package My::Test6; use Moose; with 'My::Role1', 'My::Role5'; }
81 'class consumes role1, role5(provides method)';
83 # Inherited methods/attributes should satisfy requires(), as long as
84 # extends() comes first in code order.
91 'class extends base1(provides attribute), consumes role1';
99 'class extends base2(provides method), consumes role1';
101 # Attributes/methods implemented in class should satisfy requires()
106 has 'test_output', is => 'rw';
109 'class provides attribute, consumes role1';
118 'class provides method, consumes role1';
120 # Roles composed in separate with() statements SHOULD demonstrate ordering
121 # dependency. See comment with tests 3-6 above.
128 'class consumes role4(provides attribute); consumes role1';
130 dies_ok { package My::Test12; use Moose; with 'My::Role1'; with 'My::Role4'; }
131 'class consumes role1; consumes role4(provides attribute)';
139 'class consumes role5(provides method); consumes role1';
141 dies_ok { package My::Test14; use Moose; with 'My::Role1'; with 'My::Role5'; }
142 'class consumes role1; consumes role5(provides method)';