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;
23 use Test::More tests=>5;
26 ## Grab the newly created test type constraint
27 MooseX::Types::Test::Recursion->import(':all');
31 ok RecursiveHashRef->check({key=>"value"})
32 => 'properly validated {key=>"value"}';
34 ok RecursiveHashRef->check({key=>{subkey=>"value"}})
35 => 'properly validated {key=>{subkey=>"value"}}';
37 ok RecursiveHashRef->check({
45 }) => 'properly validated deeper recursive values';
47 ok ! RecursiveHashRef->check({key=>[1,2,3]})
48 => 'Properly invalidates bad value';
50 ok ! RecursiveHashRef->check({key=>{subkey=>"value",subkey2=>{ssubkey=>[1,2,3]}}})
51 => 'Properly invalidates bad value deeply';