use Test::More tests => 12; package MyVal; use Validation::Class; package main; my $v1 = MyVal->new( fields => {foobar => {min_length => 5}}, params => {foobar => [join('', 1 .. 4), join('', 1 .. 5),]} ); # check that an array parameters is handled properly on-the-fly ok !$v1->validate('foobar'), 'validation does not pass'; ok $v1->error_count == 1, '1 errors set, 1 wrong element of the param array value'; ok $v1->errors_to_string =~ /multiple/, 'error message identifies no array handling specified'; my $v2 = MyVal->new( fields => { 'foobar.barbaz' => { min_length => 5, multiples => 1 } }, params => {'foobar.barbaz' => [join('', 1 .. 4), join('', 1 .. 5),]} ); ok !$v2->validate('foobar.barbaz'), 'validation does not pass'; ok $v2->error_count == 1, '1 errors set, 1 wrong element of the param array value'; ok $v2->errors_to_string =~ /#/, 'error message identifies the problem param array element'; my $v3 = MyVal->new( fields => {'foobar.barbaz:0' => {min_length => 5}}, params => { 'foobar.barbaz:0' => join('', 1 .. 4), 'foobar.barbaz:1' => join('', 1 .. 5) } ); ok !$v3->validate('foobar.barbaz:0'), 'validation does not pass'; ok $v3->error_count == 1, '1 errors set, 1 wrong element of the param array value'; ok $v3->errors_to_string =~ /less than 5/, 'error message identifies the problem param array element'; my $v4 = MyVal->new( fields => {'foobar.barbaz' => {min_length => 5}}, params => {'foobar.barbaz' => join('', 1 .. 4)} ); ok !$v4->validate('foobar.barbaz'), 'validation does not pass'; ok $v4->error_count == 1, '1 errors set, 1 wrong element of the param array value'; ok $v4->errors_to_string !~ /#/, 'error message identifies the problem param in not an array element';