1 ## Test case inspired by Stevan Little
4 package MooseX::Types::Test::Recursion;
8 use Moose::Util::TypeConstraints;
9 use MooseX::Types::Moose qw(Str HashRef);
10 use MooseX::Types -declare => [qw(
14 ## Define a recursive subtype and Cthulhu save us.
15 subtype RecursiveHashRef()
16 => as HashRef[Str() | RecursiveHashRef()];
20 package MooseX::Types::Test::Recursion::TestRunner;
25 ## Grab the newly created test type constraint
26 MooseX::Types::Test::Recursion->import(':all');
30 ok RecursiveHashRef->check({key=>"value"})
31 => 'properly validated {key=>"value"}';
33 ok RecursiveHashRef->check({key=>{subkey=>"value"}})
34 => 'properly validated {key=>{subkey=>"value"}}';
36 ok RecursiveHashRef->check({
44 }) => 'properly validated deeper recursive values';
46 ok ! RecursiveHashRef->check({key=>[1,2,3]})
47 => 'Properly invalidates bad value';
49 ok ! RecursiveHashRef->check({key=>{subkey=>"value",subkey2=>{ssubkey=>[1,2,3]}}})
50 => 'Properly invalidates bad value deeply';