=pod
-This tests how well Moose type constraints
-play with Declare::Constraints::Simple.
+This tests how well Moose type constraints
+play with Declare::Constraints::Simple.
Pretty well if I do say so myself :)
=cut
-BEGIN {
- eval "use Declare::Constraints::Simple;";
- plan skip_all => "Declare::Constraints::Simple is required for this test" if $@;
- plan tests => 11;
-}
+use Test::Requires {
+ 'Declare::Constraints::Simple' => '0.01', # skip all if not installed
+};
use Test::Exception;
-BEGIN {
- use_ok('Moose');
- use_ok('Moose::Util::TypeConstraints');
-}
-
{
package Foo;
use Moose;
use Moose::Util::TypeConstraints;
use Declare::Constraints::Simple -All;
-
+
# define your own type ...
- type 'HashOfArrayOfObjects'
- => IsHashRef(
+ type( 'HashOfArrayOfObjects',
+ {
+ where => IsHashRef(
-keys => HasLength,
- -values => IsArrayRef( IsObject ));
-
+ -values => IsArrayRef(IsObject)
+ )
+ } );
+
has 'bar' => (
is => 'rw',
isa => 'HashOfArrayOfObjects',
);
-
+
# inline the constraints as anon-subtypes
has 'baz' => (
is => 'rw',
- isa => subtype('ArrayRef' => IsArrayRef(IsInt)),
+ isa => subtype( { as => 'ArrayRef', where => IsArrayRef(IsInt) } ),
);
package Bar;
my $hash_of_arrays_of_objs = {
foo1 => [ Bar->new ],
- foo2 => [ Bar->new, Bar->new ],
+ foo2 => [ Bar->new, Bar->new ],
};
my $array_of_ints = [ 1 .. 10 ];
$foo = Foo->new(
'bar' => $hash_of_arrays_of_objs,
'baz' => $array_of_ints,
- );
+ );
} '... construction succeeded';
isa_ok($foo, 'Foo');
$foo->baz({});
} '... validation failed correctly';
-
-
-
-
-
-
+done_testing;