The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 15;
use CGI;

BEGIN{ use_ok("FormValidator::Simple") }

my $q = CGI->new;

$q->param( age1 => 25 );
$q->param( age2 => 25 );
$q->param( age3 => 25 );
$q->param( age4 => 25 );

my $r = FormValidator::Simple->check( $q => [
    age1 => [ 'INT', [qw/GREATER_THAN 20/] ],
    age2 => [ 'INT', [qw/LESS_THAN 30/] ],
    age3 => [ 'INT', [qw/EQUAL_TO 25/] ],
    age4 => [ 'INT', [qw/BETWEEN 20 30/] ],
] );

ok(!$r->invalid('age1'));
ok(!$r->invalid('age2'));
ok(!$r->invalid('age3'));
ok(!$r->invalid('age4'));

my $r2 = FormValidator::Simple->check( $q => [
    age1 => [ 'INT', [qw/GREATER_THAN 30/] ],
    age2 => [ 'INT', [qw/LESS_THAN 20/] ],
    age3 => [ 'INT', [qw/EQUAL_TO 22/] ],
    age4 => [ 'INT', [qw/BETWEEN 0 22/] ],
] );

ok($r2->invalid('age1'));
ok($r2->invalid('age2'));
ok($r2->invalid('age3'));
ok($r2->invalid('age4'));

my $r3 = FormValidator::Simple->check( $q => [
  age1 => [ 'INT', [qw/GREATER_THAN 0/] ],
  age2 => [ 'INT', [qw/LESS_THAN 0/]    ],
  age3 => [ 'INT', [qw/EQUAL_TO 0/]     ],
] );

ok(!$r3->invalid('age1'));
ok($r3->invalid('age2'));
ok($r3->invalid('age3'));

my $q2 = CGI->new;
$q2->param( num1 => 3 );
$q2->param( num2 => 23.4 );
$q2->param( num3 => -12.4 );

my $r4 = FormValidator::Simple->check( $q2 => [
    num1 => [ [qw/BETWEEN -4 2/] ],
    num2 => [ [qw/BETWEEN 23.3 23.5/] ],
    num3 => [ [qw/BETWEEN -20 -10/] ],
] );
ok($r4->invalid('num1'));
ok(!$r4->invalid('num2'));
ok(!$r4->invalid('num3'));