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';