BEGIN {
use strict;
use warnings;
- use Test::More tests=>25;
+ use Test::More tests=>27;
}
use Moose::Util::TypeConstraints;
ok $deep_tuple->check([1,{a=>2},{name=>'Vincent',age=>15}]),
'Good Constraint';
-like $deep_tuple->validate([1,{a=>2},{name=>'Vincent',age=>'Hello'}]),
- qr/Error is: Validation failed for 'MooseX::Types::Structured::Dict\[name,Str,age,Int\]'/,
- 'Example deeper error';
+{
+ my $message = $deep_tuple->validate([1,{a=>2},{name=>'Vincent',age=>'Hello'}]);
+ like $message,
+ qr/Validation failed for 'MooseX::Types::Structured::Dict\[name,Str,age,Int\]'/,
+ 'Example deeper error';
+}
+
+like $simple_tuple->validate(["aaa","bbb"]),
+ qr/'Int' with value aaa/,
+ 'correct deeper error';
+
+like $deep_tuple->validate([1,{a=>2},{name=>'Vincent1',age=>'Hello1'}]),
+ qr/'Int' with value Hello1/,
+ 'correct deeper error';
+
+my $deeper_tc = subtype
+ as Dict[
+ a => Tuple[
+ Dict[
+ a1a => Tuple[Int],
+ a1b => Tuple[Int],
+ ],
+ Dict[
+ a2a => Tuple[Int],
+ a2b => Tuple[Int],
+ ],
+ ],
+ b => Tuple[
+ Dict[
+ b1a => Tuple[Int],
+ b1b => Tuple[Int],
+ ],
+ Dict[
+ b2a => Tuple[Int],
+ b2b => Tuple[Int],
+ ],
+ ],
+ ];
+
+{
+ my $message = $deeper_tc->validate({a=>[{a1a=>[1],a1b=>[2]},{a2a=>[3],a2b=>[4]}],b=>[{b1a=>[5],b1b=>['AA']},{b2a=>[7],b2b=>[8]}]});
+ warn $message;
+}
## Success Tests...
ok !$deep_tuple->validate([1,{a=>2},{name=>'John',age=>40}]), 'Validates ok';
+