Commit | Line | Data |
8e0d6c8a |
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; |