Commit | Line | Data |
296fbb69 |
1 | use Test::More; |
2 | BEGIN { |
3 | plan skip_all => 'requires Moo' |
4 | unless eval { require Moo; require Moo::Role; 1 }; |
5 | plan tests => 14; |
6 | } |
7 | |
8 | BEGIN { |
9 | package Local::Role1; |
10 | use Moo::Role; |
11 | } |
12 | |
13 | BEGIN { |
14 | package Local::Role2; |
15 | use Moo::Role; |
16 | } |
17 | |
18 | BEGIN { |
19 | package Local::Class1; |
20 | use Moo; |
21 | with qw( |
22 | Local::Role1 |
23 | Local::Role2 |
24 | ); |
25 | } |
26 | |
27 | BEGIN { |
28 | package Local::Class2; |
29 | use Moo; |
30 | with qw( Local::Role1 ); |
31 | with qw( Local::Role2 ); |
32 | } |
33 | |
34 | BEGIN { |
35 | package Local::Class3; |
36 | use Moo; |
37 | with qw( Local::Role1 ); |
38 | with qw( Local::Role2 ); |
39 | sub DOES { |
40 | my ($proto, $role) = @_; |
41 | return 1 if $role eq 'Local::Role3'; |
42 | return $proto->does($role); |
43 | } |
44 | } |
45 | |
46 | for my $c (1 .. 3) { |
47 | my $class = "Local::Class$c"; |
48 | for my $r (1 .. 2) { |
49 | my $role = "Local::Role$r"; |
50 | ok($class->does($role), "$class\->does($role)"); |
51 | ok($class->DOES($role), "$class\->DOES($role)"); |
52 | } |
53 | } |
54 | |
55 | { |
56 | my $class = "Local::Class3"; |
57 | my $role = "Local::Role3"; |
58 | ok( ! $class->does($role), "$class\->does($role)"); |
59 | ok( $class->DOES($role), "$class\->DOES($role)"); |
60 | } |
61 | |