use strict;
use Test::More tests => 38;
use_ok 'DBIx::DataAudit';
no warnings 'once';
my @all_types = sort keys %DBIx::DataAudit::trait_hierarchy;
my @all_traits = sort keys %DBIx::DataAudit::trait_type;
my %seen_trait;
for (['count' => 'any','ordered','numeric','string'],
['values' => 'any','ordered','numeric','string'],
['min' => 'ordered','numeric','string'],
['max' => 'ordered','numeric','string'],
['null' => 'any','ordered','numeric','string'],
['avg' => 'numeric' ],
['blank' => 'string'],
['empty' => 'string'],
['missing'=> 'string'],
) {
my ($trait,@coltypes) = @$_;
no warnings 'redefine';
my %applies; @applies{@coltypes} = (1) x @coltypes;
$seen_trait{$trait}++;
for (@all_types) {
*DBIx::DataAudit::column_type = sub { $_ };
my $verb = $applies{$_} ? 'applies' : 'does not apply';
ok( !($applies{$_} xor DBIx::DataAudit->trait_applies($trait,"test")),"$trait $verb to $_")
;
};
};
my @unhandled_traits = grep {! $seen_trait{$_}} @all_traits;
is scalar @unhandled_traits, 0, "All traits specified"
or diag "Unknown traits: @unhandled_traits";