use strict; use Test::More; use Data::FormValidator; plan(tests => 5); # Test that constrants can refer to fields that are not mentioned # in 'required' or 'optional' my $profile = { required => [qw(foo)], optional => [qw(bar)], constraints => { foo => { constraint => sub { if( defined $_[0] && defined $_[1] ) { return $_[0] eq $_[1]; } else { return; } }, params => [qw(foo baz)], }, }, }; my $input = { foo => 'stuff', bar => 'other stuff', baz => 'stuff', }; my $results = Data::FormValidator->check($input, $profile); ok(! $results->has_invalid(), 'no_invalids' ); ok( $results->valid('foo'), 'foo valid'); { # with CGI object as input. use CGI; my $q = CGI->new($input); my $results; eval { $results = Data::FormValidator->check($q, $profile); }; is ($@, '', 'survived eval'); ok(! $results->has_invalid(), 'no_invalids' ); ok( $results->valid('foo'), 'foo valid'); }