BEGIN {
use FindBin;
use lib $FindBin::Bin . "/myapp/lib";
}
use utf8;
use Test::More;
{
package TestClass::CheckParameters;
use Validation::Class;
fld name => {
required => 1
};
package main;
my $class = "TestClass::CheckParameters";
my $self = $class->new;
ok $class eq ref $self, "$class instantiated";
my @vals = qw(
Kathy
Joe
John
O
1
234
Ricky
~
'
Lady
§§
♠♣♥♦♠♣♥♦♠♣♥♦
);
for my $v (@vals) {
ok $v eq $self->name($v),
"$class name accessor set to `$v` with expected return value"
}
for my $v (@vals) {
my $name_param = $self->name($v);
ok $self->params->{name} eq $name_param,
"$class name parameter set to `$v` using the name accessor"
}
}
{
package TestClass::ArrayParameters;
use Validation::Class;
bld sub {
shift->name([1..5])
};
fld name => {
required => 1
};
package main;
my $class = "TestClass::ArrayParameters";
my $self = $class->new;
ok $class eq ref $self, "$class instantiated";
ok "ARRAY" eq ref $self->name, "$class name accessor returns an array";
ok ! ref $self->name(''), "$class name accessor returns nothing";
ok ! $self->name({1..4}), "$class name accessor cant set a hash";
ok "ARRAY" eq ref $self->name([1..5]), "$class name accessor returns an array";
ok "ARRAY" eq ref $self->params->{name}, "$class name param is an array";
ok "ARRAY" eq ref $self->name, "$class name accessor returns the array";
}
{
package TestClass::FieldAccessors;
use Validation::Class;
fld 'name.first' => {
required => 1
};
fld 'name.last' => {
required => 1
};
fld 'name.phone:0' => {
required => 0
};
fld 'name.phone:1' => {
required => 0
};
fld 'name.phone:2' => {
required => 0
};
package main;
my $class = "TestClass::FieldAccessors";
my $self = $class->new;
ok $class eq ref $self, "$class instantiated";
my @accessors = ();
{
no strict 'refs';
@accessors =
sort grep { defined &{"$class\::$_"} && $_ =~ /^name/ }
%{"$class\::"};
ok 5 == @accessors,
"$class has 5 name* accessors";
}
ok $accessors[0] eq 'name_first', "$class has the name_first accessor";
ok $accessors[1] eq 'name_last', "$class has the name_last accessor";
ok $accessors[2] eq 'name_phone_0', "$class has the name_phone_0 accessor";
ok $accessors[3] eq 'name_phone_1', "$class has the name_phone_1 accessor";
ok $accessors[4] eq 'name_phone_2', "$class has the name_phone_2 accessor";
}
done_testing;