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

use Data::Verifier;

my $verifier = Data::Verifier->new(
    profile => {
        name    => {
            required => 1
        },
        grade   => {
            required => 1,
            type => 'Int'
        },
        location => {
            type => 'Str'
        }
    }
);
my $results = $verifier->verify({
    grade => 'abc',
    location => 'TN'
});

my $verifier2 = Data::Verifier->new(
    profile => {
        position    => {
            required => 1,
        },
        rank        => {
            type => 'Int'
        },
        serial => {
            type => 'Str'
        }
    }
);
my $results2 = $verifier2->verify({
    rank => 'abc',
    serial => 'abc123'
});

$results->merge($results2);

ok($results->is_missing('name'), 'name missing');
ok($results->is_missing('position'), 'position missing');
ok($results->is_invalid('grade'), 'grade invalid');
ok($results->is_invalid('rank'), 'rank invalid');
cmp_ok($results->get_value('location'), 'eq', 'TN', 'get_value location');
cmp_ok($results->get_value('serial'), 'eq', 'abc123', 'get_value serial');

is_deeply( [$results->get_values('location', 'serial')], ['TN', 'abc123'], '"get_values" method');

done_testing;