@@ -5,17 +5,38 @@ use Test::More;
5
5
use Moose::Util::TypeConstraints;
6
6
use MooseX::Types::Moose ' :all' ;
7
7
use MooseX::Types::Structured ' :all' ;
8
-
9
8
use MooseX::Types::Meta ' :all' ;
9
+ use Scalar::Util ' blessed' ;
10
10
11
11
sub test {
12
12
my ($name , $code ) = @_ ;
13
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
13
14
subtest $name => sub {
14
15
$code -> ();
15
16
done_testing;
16
17
};
17
18
}
18
19
20
+ sub check_is {
21
+ my ($type , $thing ) = @_ ;
22
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
23
+ (my $type_name = $type -> name) =~ s / ^MooseX::Types::Meta::// ;
24
+ ok(
25
+ $type -> check($thing ),
26
+ (blessed($thing ) && $thing -> can(' name' ) ? $thing -> name : $thing ) . ' isa ' . $type_name ,
27
+ );
28
+ }
29
+
30
+ sub check_isnt {
31
+ my ($type , $thing ) = @_ ;
32
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
33
+ (my $type_name = $type -> name) =~ s / ^MooseX::Types::Meta::// ;
34
+ ok(
35
+ !$type -> check($thing ),
36
+ (blessed($thing ) && $thing -> can(' name' ) ? $thing -> name : $thing ) . ' is not a ' . $type_name ,
37
+ );
38
+ }
39
+
19
40
{
20
41
package TestClass ;
21
42
use Moose;
@@ -48,58 +69,58 @@ sub test {
48
69
}
49
70
50
71
test TypeConstraint => sub {
51
- ok (TypeConstraint-> check( $_ ) ) for TypeConstraint, Int;
52
- ok(! TypeConstraint-> check( $_ ) ) for \42, ' Moose::Meta::TypeConstraint' ;
72
+ check_is (TypeConstraint, $_ ) for TypeConstraint, Int;
73
+ check_isnt( TypeConstraint, $_ ) for \42, ' Moose::Meta::TypeConstraint' ;
53
74
};
54
75
55
76
test Class => sub {
56
- ok (Class-> check( $_ ) ) for (
77
+ check_is (Class, $_ ) for (
57
78
MooseX::Types::Meta-> meta,
58
79
TestClass-> meta,
59
80
Moose::Meta::Class-> meta,
60
81
);
61
82
62
- ok(! Class-> check( $_ ) ) for 42, TestRole-> meta;
83
+ check_isnt( Class, $_ ) for 42, TestRole-> meta;
63
84
};
64
85
65
86
test Role => sub {
66
- ok (Role-> check( $_ ) ) for TestRole-> meta;
67
- ok(! Role-> check( $_ ) ) for TestClass-> meta, 13;
87
+ check_is (Role, $_ ) for TestRole-> meta;
88
+ check_isnt( Role, $_ ) for TestClass-> meta, 13;
68
89
};
69
90
70
91
test Attribute => sub {
71
- ok (Attribute-> check( $_ ) ) for (
92
+ check_is (Attribute, $_ ) for (
72
93
TestClass-> meta-> get_attribute(' attr' ),
73
94
Moose::Meta::Class-> meta-> get_attribute(' constructor_class' ),
74
95
);
75
96
76
- ok(! Attribute-> check( $_ ) ) for (
97
+ check_isnt( Attribute, $_ ) for (
77
98
TestRole-> meta-> get_attribute(' attr' ),
78
99
\42,
79
100
);
80
101
};
81
102
82
103
test RoleAttribute => sub {
83
- ok (RoleAttribute-> check( $_ ) ) for (
104
+ check_is (RoleAttribute, $_ ) for (
84
105
TestRole-> meta-> get_attribute(' attr' ),
85
106
);
86
107
87
- ok(! RoleAttribute-> check( $_ ) ) for (
108
+ check_isnt( RoleAttribute, $_ ) for (
88
109
TestClass-> meta-> get_attribute(' attr' ),
89
110
Moose::Meta::Class-> meta-> get_attribute(' constructor_class' ),
90
111
TestClass-> meta,
91
112
);
92
113
};
93
114
94
115
test Method => sub {
95
- ok (Method-> check( $_ ) ) for (
116
+ check_is (Method, $_ ) for (
96
117
(map { TestClass-> meta-> get_method($_ ) } qw( foo bar baz attr) ),
97
118
(map { TestRole-> meta-> get_method($_ ) } qw( foo attr) ),
98
119
Moose::Meta::Class-> meta-> get_method(' create' ),
99
120
Moose::Meta::Class-> meta-> get_method(' new' ),
100
121
);
101
122
102
- ok(! Method-> check( $_ ) ) for (
123
+ check_isnt( Method, $_ ) for (
103
124
TestClass-> meta-> get_attribute(' attr' ),
104
125
TestClass-> meta,
105
126
);
@@ -109,12 +130,12 @@ test TypeCoercion => sub {
109
130
my $tc = subtype as Int;
110
131
coerce $tc , from Str, via { 0 + $_ };
111
132
112
- ok (TypeCoercion-> check( $_ ) ) for $tc -> coercion;
113
- ok(! TypeCoercion-> check( $_ ) ) for $tc , Str, 42;
133
+ check_is (TypeCoercion, $_ ) for $tc -> coercion;
134
+ check_isnt( TypeCoercion, $_ ) for $tc , Str, 42;
114
135
};
115
136
116
137
test StructuredTypeConstraint => sub {
117
- ok (StructuredTypeConstraint-> check( $_ ) ) for (
138
+ check_is (StructuredTypeConstraint, $_ ) for (
118
139
Dict,
119
140
Dict[],
120
141
Dict[foo => Int],
@@ -127,7 +148,7 @@ test StructuredTypeConstraint => sub {
127
148
(subtype as Dict[]),
128
149
);
129
150
130
- ok(! StructuredTypeConstraint-> check( $_ ) ) for (
151
+ check_isnt( StructuredTypeConstraint, $_ ) for (
131
152
ArrayRef,
132
153
ArrayRef[Dict[]],
133
154
);
@@ -137,23 +158,23 @@ test StructuredTypeCoercion => sub {
137
158
my $tc = subtype as Dict[];
138
159
coerce $tc , from Undef, via { +{} };
139
160
140
- ok (StructuredTypeCoercion-> check( $_ ) ) for $tc -> coercion;
141
- ok(! StructuredTypeCoercion-> check( $_ ) ) for $tc , Str, 42;
161
+ check_is (StructuredTypeCoercion, $_ ) for $tc -> coercion;
162
+ check_isnt( StructuredTypeCoercion, $_ ) for $tc , Str, 42;
142
163
};
143
164
144
165
test TypeEquals => sub {
145
- ok(( TypeEquals[Num]) -> check( $_ ) ) for Num;
146
- ok(!( TypeEquals[Num]) -> check( $_ ) ) for Int, Str;
166
+ check_is( TypeEquals[Num], $_ ) for Num;
167
+ check_isnt( TypeEquals[Num], $_ ) for Int, Str;
147
168
};
148
169
149
170
test SubtypeOf => sub {
150
- ok(( SubtypeOf[Str]) -> check( $_ ) ) for Num, Int, ClassName, RoleName;
151
- ok(!( SubtypeOf[Str]) -> check( $_ ) ) for Str, Value, Ref, Defined, Any, Item;
171
+ check_is( SubtypeOf[Str], $_ ) for Num, Int, ClassName, RoleName;
172
+ check_isnt( SubtypeOf[Str], $_ ) for Str, Value, Ref, Defined, Any, Item;
152
173
};
153
174
154
175
test TypeOf => sub {
155
- ok(( TypeOf[Str]) -> check( $_ ) ) for Str, Num, Int, ClassName, RoleName;
156
- ok(!( TypeOf[Str]) -> check( $_ ) ) for Value, Ref, Defined, Any, Item;
176
+ check_is( TypeOf[Str], $_ ) for Str, Num, Int, ClassName, RoleName;
177
+ check_isnt( TypeOf[Str], $_ ) for Value, Ref, Defined, Any, Item;
157
178
};
158
179
159
180
test ' MooseX::Role::Parameterized' => sub {
@@ -170,24 +191,24 @@ role {
170
191
EOR
171
192
172
193
test ParameterizableRole => sub {
173
- ok (ParameterizableRole-> check( $_ ) ) for (
194
+ check_is (ParameterizableRole, $_ ) for (
174
195
TestRole::Parameterized-> meta,
175
196
);
176
197
177
- ok(! ParameterizableRole-> check( $_ ) ) for (
198
+ check_isnt( ParameterizableRole, $_ ) for (
178
199
TestRole-> meta,
179
200
);
180
201
};
181
202
182
203
test ParameterizedRole => sub {
183
- ok (ParameterizedRole-> check( $_ ) ) for (
204
+ check_is (ParameterizedRole, $_ ) for (
184
205
TestRole::Parameterized-> meta-> generate_role(
185
206
consumer => Moose::Meta::Class-> create_anon_class,
186
207
parameters => {},
187
208
),
188
209
);
189
210
190
- ok(! ParameterizedRole-> check( $_ ) ) for (
211
+ check_isnt( ParameterizedRole, $_ ) for (
191
212
TestRole-> meta,
192
213
);
193
214
};
0 commit comments