toward better error messages
[gitmo/MooseX-Types-Structured.git] / t / 12-error.t
index e253c78..7df84f0 100644 (file)
@@ -1,7 +1,7 @@
 BEGIN {
     use strict;
     use warnings;
-    use Test::More tests=>25;
+    use Test::More tests=>27;
 }
 
 use Moose::Util::TypeConstraints;
@@ -116,10 +116,51 @@ my $deep_tuple = subtype 'deep_tuple',
 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';
+