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

package MyVal;

use Validation::Class;

field name    => { required => 1 };
field email   => { required => 1 };
field phone   => { required => 1 };
field address => { required => 1 };
field company => {};
field fax     => {};
field country => { validation => sub { 0 } };

package main;

my $v = MyVal->new( params => {  } );

ok $v, 'initialization successful';
ok $v->validate('country'), 'country validation passed, not required';
ok ! $v->validate('+country'), 'country validation failed, requirement toggled';
ok $v->validate('country'), 'country validation passed, not required';
ok ! $v->validate('name'), 'name validation failed, required';
ok $v->validate('-name'), 'name validation passed, requirement toggled';
ok ! $v->validate('name'), 'name validation failed, required';