Commit | Line | Data |
e7d06577 |
1 | ## Test case inspired by Stevan Little |
2 | |
3 | BEGIN { |
4 | package MooseX::Types::Test::Recursion; |
5 | |
6 | use Moose; |
7 | |
8 | use Moose::Util::TypeConstraints; |
9 | use MooseX::Types::Moose qw(Str HashRef); |
10 | use MooseX::Types -declare => [qw( |
11 | RecursiveHashRef |
12 | )]; |
13 | |
14 | ## Define a recursive subtype and Cthulhu save us. |
15 | subtype RecursiveHashRef() |
16 | => as HashRef[Str() | RecursiveHashRef()]; |
17 | } |
18 | |
19 | { |
20 | package MooseX::Types::Test::Recursion::TestRunner; |
21 | |
22 | BEGIN { |
077ac262 |
23 | use Test::More tests=>5; |
e7d06577 |
24 | |
077ac262 |
25 | ## Grab the newly created test type constraint |
e7d06577 |
26 | MooseX::Types::Test::Recursion->import(':all'); |
27 | }; |
28 | |
29 | |
30 | ok RecursiveHashRef->check({key=>"value"}) |
31 | => 'properly validated {key=>"value"}'; |
32 | |
33 | ok RecursiveHashRef->check({key=>{subkey=>"value"}}) |
34 | => 'properly validated {key=>{subkey=>"value"}}'; |
35 | |
077ac262 |
36 | ok RecursiveHashRef->check({ |
37 | key=>{ |
38 | subkey=>"value", |
39 | subkey2=>{ |
40 | ssubkey1=>"value3", |
41 | ssubkey2=>"value4" |
42 | } |
43 | } |
44 | }) => 'properly validated deeper recursive values'; |
45 | |
46 | ok ! RecursiveHashRef->check({key=>[1,2,3]}) |
47 | => 'Properly invalidates bad value'; |
e7d06577 |
48 | |
077ac262 |
49 | ok ! RecursiveHashRef->check({key=>{subkey=>"value",subkey2=>{ssubkey=>[1,2,3]}}}) |
50 | => 'Properly invalidates bad value deeply'; |
e7d06577 |
51 | } |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |