use Test::More tests => 7;

use Data::FormValidator; 

my %FORM = (
	stick  => 'big',
	speak  => 'softly',
    mv     => ['first','second'],  
);

my $results = Data::FormValidator->check(\%FORM, 
    { 
        required => [ 'stick', 'fromsub', 'whoami' ],
        optional => ['mv', 'opt_1', 'opt_2', ],
        defaults => {
            fromsub  => sub { return "got value from a subroutine"; },
        },
        defaults_regexp_map => {
            qr/^opt_/ => 2,
        },
    }
);

ok($results->valid('stick') eq 'big','using check() as class method');
is($results->valid('stick'),$FORM{stick}, 'valid() returns single value in scalar context');
my @mv = $results->valid('mv');
is_deeply(\@mv,$FORM{mv}, 'valid() returns multi-valued results');
my @stick = $results->valid('stick');
is_deeply(\@stick,[ $FORM{stick} ], 'valid() returns single value in array context');
ok($results->valid('fromsub') eq "got value from a subroutine", 'usg CODE references as default values');

{
    is( $results->valid('opt_1'), 2, "defaults_regexp works (case 1)");
    is( $results->valid('opt_2'), 2, "defaults_regexp works (case 1)");

}

