t/does-Moo.t moved to 'xt' (RT#80290)
[gitmo/Role-Tiny.git] / xt / does-Moo.t
CommitLineData
296fbb69 1use Test::More;
2BEGIN {
3 plan skip_all => 'requires Moo'
4 unless eval { require Moo; require Moo::Role; 1 };
5 plan tests => 14;
6}
7
8BEGIN {
9 package Local::Role1;
10 use Moo::Role;
11}
12
13BEGIN {
14 package Local::Role2;
15 use Moo::Role;
16}
17
18BEGIN {
19 package Local::Class1;
20 use Moo;
21 with qw(
22 Local::Role1
23 Local::Role2
24 );
25}
26
27BEGIN {
28 package Local::Class2;
29 use Moo;
30 with qw( Local::Role1 );
31 with qw( Local::Role2 );
32}
33
34BEGIN {
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
46for 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