Commit | Line | Data |
bb8566e4 |
1 | use strictures 1; |
2 | use Test::More; |
3 | use Test::Exception; |
4 | |
5 | use Moo::HandleMoose; |
6 | |
7 | { |
53c74897 |
8 | package MooParentRole; |
9 | use Moo::Role; |
10 | sub parent_role_method { 1 }; |
11 | |
bb8566e4 |
12 | package MooRole; |
13 | use Moo::Role; |
53c74897 |
14 | with 'MooParentRole'; |
15 | sub role_method { 1 }; |
bb8566e4 |
16 | |
17 | package MooRoledMooClass; |
18 | use Moo; |
19 | with 'MooRole'; |
20 | |
f215e66c |
21 | has 'some_attr' => (is => 'ro'); |
22 | |
bb8566e4 |
23 | package MooRoledMooseClass; |
24 | use Moose; |
25 | with 'MooRole'; |
26 | |
f215e66c |
27 | has 'some_attr' => (is => 'ro'); |
28 | |
bb8566e4 |
29 | package MooseParent; |
30 | use Moose; |
31 | |
32 | has e => ( |
33 | is => 'ro', |
34 | required => 1, |
35 | does => 'MooRole', |
36 | ); |
37 | |
38 | package MooParent; |
39 | use Moo; |
40 | |
41 | has e => ( |
42 | is => 'ro', |
43 | required => 1, |
44 | does => 'MooRole', |
45 | ); |
46 | } |
47 | |
48 | for my $parent (qw(MooseParent MooParent)) { |
49 | for my $child (qw(MooRoledMooClass MooRoledMooseClass)) { |
a328549b |
50 | lives_and { |
51 | my $o = $parent->new( |
52 | e => $child->new(), |
53 | ); |
54 | ok( $o->e->does("MooParentRole"), "$child does parent MooRole" ); |
55 | can_ok( $o->e, "role_method" ); |
56 | can_ok( $o->e, "parent_role_method" ); |
f215e66c |
57 | ok($o->e->meta->has_method('role_method'), 'Moose knows about role_method'); |
58 | ok($o->e->meta->has_method('parent_role_method'), 'Moose knows about parent_role_method'); |
a328549b |
59 | }; |
bb8566e4 |
60 | } |
61 | } |
62 | |
63 | done_testing; |