--- trunk/t/1-validate.t 2006/05/16 15:23:05 515 +++ trunk/t/1-validate.t 2006/09/07 15:57:48 653 @@ -1,11 +1,11 @@ #!/usr/bin/perl -w use strict; -use Test::More tests => 16; +use Test::More tests => 29; use Test::Exception; use blib; -use Data::Dumper; +use Data::Dump qw/dump/; use Cwd qw/abs_path/; BEGIN { @@ -34,36 +34,65 @@ throws_ok { $v->validate_errors() } qr/rec/, "validate_rec need rec"; -ok($v->validate_errors({ '900' => 'foo' }), '900 garbage input'); +sub test_v { + my $row = shift || die "no row?"; -ok(! $v->validate_errors({ + my $d = dump( $row ); + + $row->{'000'} = [ 42 ]; + + $v->reset_errors; + my $e = $v->validate_errors( $row ); + + diag "validate $d\n",dump($e) if ($debug); + + if (@_) { + my $tmp = $e; + while (@_) { + my $k = shift @_; + ok($tmp = $tmp->{$k}, "found $k"); + } + diag "additional message: $tmp" if ($tmp); + } else { + ok(! $e, "validated $d"); + diag "expected error: ", dump($e) if($e); + } + +} + +test_v({ + '900' => 'foo' +}, qw/field 900 not_repeatable/); + +test_v({ '900' => [ qw/foo bar baz/ ] -}), '900 no sf'); +}); -ok($v->validate_errors({ +test_v({ '901' => [ qw/foo bar baz/ ] -}), '901 no sf'); +}, qw/field 901 missing_subfield/); -ok(! $v->validate_errors({ +test_v({ '901' => [ { 'a' => 42 } ] -}), '901^a'); +}); -ok($v->validate_errors({ +test_v({ '901' => [ { 'b' => 42 } ] -}), '901^b'); +}, qw/field 901 subfield b/); -ok(! $v->validate_errors({ +test_v({ '902' => [ { 'b' => 1 }, { 'c' => 2 } ] -}), '902^b 902^c'); +}); -ok($v->validate_errors({ +test_v({ '902' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ] -}), '902^a 902^b 902^c'); +}, qw/field 902 subfield a/); -ok(! $v->validate_errors({ +test_v({ '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ] -}), '903^a 903^b 903^c'); +}); -ok($v->validate_errors({ +test_v({ '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 }, { 'd' => 3 } ] -}), '903^a 903^b 903^c 903^d'); +}, qw/field 903 subfield d/); +