Inline the does method.
[gitmo/Moose.git] / t / 010_basics / 021-moose-object-does.t
CommitLineData
948cd189 1use strict;
2use warnings;
3
4use Test::More;
5use Test::Moose;
6
7{
8 package Role::A;
9
10 use Moose::Role
11}
12
13{
14 package Role::B;
15
16 use Moose::Role
17}
18
19{
20 package Foo;
21
22 use Moose;
23}
24
25{
26 package Bar;
27
28 use Moose;
29
30 with 'Role::A';
31}
32
33{
34 package Baz;
35
36 use Moose;
37
38 with qw( Role::A Role::B );
39}
40
41with_immutable {
42
43 for my $thing ( 'Foo', Foo->new ) {
44 my $name = ref $thing ? 'Foo object' : 'Foo class';
45 $name .= ' (immutable)' if $thing->meta->is_immutable;
46
47 ok(
48 !$thing->does('Role::A'),
49 "$name does not do Role::A"
50 );
51 ok(
52 !$thing->does('Role::B'),
53 "$name does not do Role::B"
54 );
55
56 ok(
57 !$thing->does( Role::A->meta ),
58 "$name does not do Role::A (passed as object)"
59 );
60 ok(
61 !$thing->does( Role::B->meta ),
62 "$name does not do Role::B (passed as object)"
63 );
64
65 ok(
66 !$thing->DOES('Role::A'),
67 "$name does not do Role::A (using DOES)"
68 );
69 ok(
70 !$thing->DOES('Role::B'),
71 "$name does not do Role::B (using DOES)"
72 );
73 }
74
75 for my $thing ( 'Bar', Bar->new ) {
76 my $name = ref $thing ? 'Bar object' : 'Bar class';
77 $name .= ' (immutable)' if $thing->meta->is_immutable;
78
79 ok(
80 $thing->does('Role::A'),
81 "$name does Role::A"
82 );
83 ok(
84 !$thing->does('Role::B'),
85 "$name does not do Role::B"
86 );
87
88 ok(
89 $thing->does( Role::A->meta ),
90 "$name does Role::A (passed as object)"
91 );
92 ok(
93 !$thing->does( Role::B->meta ),
94 "$name does not do Role::B (passed as object)"
95 );
96
97 ok(
98 $thing->DOES('Role::A'),
99 "$name does Role::A (using DOES)"
100 );
101 ok(
102 !$thing->DOES('Role::B'),
103 "$name does not do Role::B (using DOES)"
104 );
105 }
106
107 for my $thing ( 'Baz', Baz->new ) {
108 my $name = ref $thing ? 'Baz object' : 'Baz class';
109 $name .= ' (immutable)' if $thing->meta->is_immutable;
110
111 ok(
112 $thing->does('Role::A'),
113 "$name does Role::A"
114 );
115 ok(
116 $thing->does('Role::B'),
117 "$name does Role::B"
118 );
119
120 ok(
121 $thing->does( Role::A->meta ),
122 "$name does Role::A (passed as object)"
123 );
124 ok(
125 $thing->does( Role::B->meta ),
126 "$name does Role::B (passed as object)"
127 );
128
129 ok(
130 $thing->DOES('Role::A'),
131 "$name does Role::A (using DOES)"
132 );
133 ok(
134 $thing->DOES('Role::B'),
135 "$name does Role::B (using DOES)"
136 );
137 }
138
139}
140qw( Foo Bar Baz );
141
142done_testing;