use strict;
use Test::More tests => 24;
use CGI;
BEGIN { use_ok("FormValidator::Simple"); }
my $q = CGI->new;
$q->param(text1 => 'HOGEHOGE' );
$q->param(text2 => 'HOGEHOGEHOGE' );
$q->param(int => 7 );
$q->param(blank => "" );
$q->param(email => 'lyo.kato@gmail.com' );
my $results = FormValidator::Simple->check( $q, [
text1 => [qw/NOT_BLANK/],
text2 => [qw/NOT_BLANK/],
int => [qw/INT/],
blank => [qw/NOT_BLANK/],
email => [qw/EMAIL_LOOSE/],
] );
isa_ok( $results, "FormValidator::Simple::Results" );
ok($results->missing('blank'));
ok(!$results->valid('blank'));
ok(!$results->invalid('blank'));
ok($results->has_missing);
ok(!$results->has_invalid);
is($results->valid('text1'), 'HOGEHOGE' );
is($results->valid('int'), 7 );
is($results->valid('email'), 'lyo.kato@gmail.com');
ok(!$results->invalid('text1'));
ok(!$results->invalid('int'));
ok(!$results->invalid('email'));
ok(!$results->missing('text1'));
ok(!$results->missing('int'));
ok(!$results->missing('email'));
my @missings = $results->missing;
my @invalids = $results->invalid;
my $valids = $results->valid;
is(scalar(@missings), 1);
is(scalar(@invalids), 0);
is(scalar(keys %$valids), 4);
my $valid = FormValidator::Simple->new;
$valid->check( $q => [
text1 => [qw/NOT_BLANK ASCII/],
] );
$valid->check( $q => [
text2 => [qw/NOT_BLANK NOT_ASCII/],
] );
my $results2 = $valid->results;
ok(!$results2->invalid('text1'));
ok($results2->invalid('text2'));
$valid->set_invalid( hoge => 'HOGE' );
my $results3 = $valid->results;
ok($results3->invalid('hoge'));
ok($results3->invalid( hoge => 'HOGE' ));
# make sure check doesn't eat the profile
my $profile = [
text => [qw/NOT_BLANK INT/],
int => [qw/NOT_BLANK INT/],
];
my $r3 = FormValidator::Simple->check( $q => $profile );
is_deeply( $profile, [
text => [qw/NOT_BLANK INT/],
int => [qw/NOT_BLANK INT/],
] );