## Module dependencies
requires 'Moose' => '0.63';
requires 'MooseX::Types' => '0.08';
+requires 'Devel::PartialDump' => '0.07';
## Testing dependencies
build_requires 'Test::More' => '0.70';
MooseX::Meta::TypeConstraint::Structured;
use Moose;
+use Devel::PartialDump;
use Moose::Util::TypeConstraints ();
use MooseX::Meta::TypeCoercion::Structured;
extends 'Moose::Meta::TypeConstraint';
=head2 get_message
-May want to override this to set a more useful error message
+Give you a better peek into what's causing the error. For now we stringify the
+incoming deep value with L<Devel::PartialDump> and pass that on to either your
+custom error message or the default one. In the future we'll try to provide a
+more complete stack trace of the actual offending elements
+
+=cut
+
+around 'get_message' => sub {
+ my ($get_message, $self, $value) = @_;
+ my $new_value = Devel::PartialDump::dump($value);
+ return $self->$get_message($new_value);
+
+};
=head1 SEE ALSO
ok !$array_tailed_dict->check([]), 'correct fail';
ok $array_tailed_dict->check({name=>'Vanessa Li', age=>35, 1,2}), 'correct pass with tail';
ok !$array_tailed_dict->check({name=>'Vanessa Li', age=>35, 1, "hello"}), 'correct fail with tail';
-
--- /dev/null
+BEGIN {
+ use strict;
+ use warnings;
+ use Test::More tests=>4;
+}
+
+use Moose::Util::TypeConstraints;
+use MooseX::Types::Structured qw(Dict Tuple);
+use MooseX::Types::Moose qw(Int Str ArrayRef HashRef);
+
+# Create some TCs from which errors will be generated
+my $simple_tuple = subtype 'simple_tuple', as Tuple[Int,Str];
+my $simple_dict = subtype 'simple_dict', as Dict[name=>Str,age=>Int];
+
+# We probably need more stuff here...
+ok $simple_tuple->check([1,'hello']), "simple_tuple validates: 1,'hello'";
+ok !$simple_tuple->check(['hello',1]), "simple_tuple fails: 'hello',1";
+like $simple_tuple->validate(['hello',1]), qr/"hello", 1/, 'got expected valiate message';
+like $simple_dict->validate(['hello',1]), qr/"hello", 1/, 'got expected valiate message';
+