use strict; use Test::More; use Data::Verifier; { my $verifier = Data::Verifier->new( profile => { name => { required => 1, type => 'ArrayRef[Str]' } } ); my $results = $verifier->verify({ name => [ 'foo' ] }); ok($results->success, 'success'); cmp_ok($results->valid_count, '==', 1, '1 valid'); cmp_ok($results->invalid_count, '==', 0, 'none invalid'); cmp_ok($results->missing_count, '==', 0, 'none missing'); is_deeply($results->get_value('name'), [ 'foo' ], 'got my name back'); ok($results->is_valid('name'), 'name is valid'); } { my $verifier = Data::Verifier->new( profile => { name => { required => 1, type => 'ArrayRef[Str]' } } ); my $results = $verifier->verify({ name => [ 'foo', 'bar' ], bar => 'reject me' }); ok($results->success, 'success'); cmp_ok($results->valid_count, '==', 1, '1 valid'); cmp_ok($results->invalid_count, '==', 0, 'none invalid'); cmp_ok($results->missing_count, '==', 0, 'none missing'); ok(ref($results->get_value('name')) eq 'ARRAY', 'got array from name'); ok($results->is_valid('name'), 'name is valid'); ok(!$results->is_valid('bar'), 'unspecified name is not valid'); } { my $verifier = Data::Verifier->new( filters => [qw(flatten)], profile => { name => { required => 1, type => 'ArrayRef[Str]' } } ); my $results = $verifier->verify({ name => [ 'foo ', 'bar ' ], bar => 'reject me' }); my $ovalues = $results->get_original_value('name'); cmp_ok($ovalues->[0], 'eq', 'foo ', 'first original value not filtered'); cmp_ok($ovalues->[1], 'eq', 'bar ', 'second original value not filtered'); my $pfvalues = $results->get_post_filter_value('name'); cmp_ok($pfvalues->[0], 'eq', 'foo', 'first post_filter value filtered'); cmp_ok($pfvalues->[1], 'eq', 'bar', 'second post_filter value filtered'); my $values = $results->get_value('name'); cmp_ok($values->[0], 'eq', 'foo', 'first value filtered'); cmp_ok($values->[1], 'eq', 'bar', 'second value filtered'); } done_testing;