update repo to point to github
[gitmo/Moo.git] / t / mutual-requires.t
1 use strict;
2 use warnings FATAL => 'all';
3 use Test::More;
4 use Test::Fatal;
5
6 is exception {
7   package RoleA;
8   use Moo::Role;
9   requires 'method_b';
10   requires 'attr_b';
11   sub method_a {}
12   has attr_a => (is => 'ro');
13 }, undef, 'define role a';
14
15 is exception {
16   package RoleB;
17   use Moo::Role;
18   requires 'method_a';
19   requires 'attr_a';
20   sub method_b {}
21   has attr_b => (is => 'ro');
22 }, undef, 'define role a';
23
24 is exception {
25   package RoleC;
26   use Moo::Role;
27   with 'RoleA', 'RoleB';
28   1;
29 }, undef, 'compose roles with mutual requires into role';
30
31 is exception {
32   package PackageWithPrecomposed;
33   use Moo;
34   with 'RoleC';
35   1;
36 }, undef, 'compose precomposed roles into package';
37
38 is exception {
39   package PackageWithCompose;
40   use Moo;
41   with 'RoleA', 'RoleB';
42   1;
43 }, undef, 'compose roles with mutual requires into package';
44
45 done_testing;