2e84eb65b62b46807d761aa2bfcde33538ff4848
[gitmo/Moo.git] / xt / moose-does-moo-role.t
1 use strictures 1;
2 use Test::More;
3 use Test::Exception;
4
5 use Moo::HandleMoose;
6
7 {
8    package MooRole;
9    use Moo::Role;
10
11    package MooRoledMooClass;
12    use Moo;
13    with 'MooRole';
14
15    package MooRoledMooseClass;
16    use Moose;
17    with 'MooRole';
18
19    package MooseParent;
20    use Moose;
21
22    has e => (
23       is       => 'ro',
24       required => 1,
25       does     => 'MooRole',
26    );
27
28    package MooParent;
29    use Moo;
30
31    has e => (
32       is       => 'ro',
33       required => 1,
34       does     => 'MooRole',
35    );
36 }
37
38 for my $parent (qw(MooseParent MooParent)) {
39    for my $child (qw(MooRoledMooClass MooRoledMooseClass)) {
40       lives_ok {
41          $parent->new(
42             e => $child->new(),
43          );
44       } "$parent instantiated with a $child delegate that does a MooRole";
45    }
46 }
47
48 done_testing;