/[webpac2]/trunk/t/1-validate.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/t/1-validate.t

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 515 by dpavlin, Tue May 16 15:23:05 2006 UTC revision 655 by dpavlin, Thu Sep 7 16:54:47 2006 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl -w  #!/usr/bin/perl -w
2    
3  use strict;  use strict;
4  use Test::More tests => 16;  use Test::More tests => 43;
5  use Test::Exception;  use Test::Exception;
6  use blib;  use blib;
7    
8  use Data::Dumper;  use Data::Dump qw/dump/;
9  use Cwd qw/abs_path/;  use Cwd qw/abs_path/;
10    
11  BEGIN {  BEGIN {
# Line 30  is_deeply( $v->{rules}, { Line 30  is_deeply( $v->{rules}, {
30          '901' => [ 'a' ],          '901' => [ 'a' ],
31          '902' => [ 'b', 'c' ],          '902' => [ 'b', 'c' ],
32          '903' => [ 'a', 'b', 'c' ],          '903' => [ 'a', 'b', 'c' ],
33            '904' => [ 'a' ],
34  }, 'rules parsed');  }, 'rules parsed');
35    
36    
37    
38  throws_ok { $v->validate_errors() } qr/rec/, "validate_rec need rec";  throws_ok { $v->validate_errors() } qr/rec/, "validate_rec need rec";
39    
40  ok($v->validate_errors({ '900' => 'foo' }), '900 garbage input');  sub test_v {
41            my $row = shift || die "no row?";
42    
43            my $d = dump( $row );
44    
45            $row->{'000'} = [ 42 ];
46    
47            $v->reset_errors;
48            my $e = $v->validate_errors( $row );
49    
50            diag "validate $d\n",dump($e) if ($debug);
51    
52            if (@_) {
53                    my $tmp = $e;
54                    while (@_) {
55                            my $k = shift @_;
56                            ok($tmp = $tmp->{$k}, "found $k");
57                    }
58                    diag "tmp: ",dump($tmp) if ($debug);
59                    if ($tmp) {
60                            if (ref($tmp) eq 'HASH') {
61                                    return $tmp;
62                            } else {
63                                    diag "explanation: $tmp";
64                            }
65                    }
66            } else {
67                    ok(! $e, "validated $d");
68                    diag "expected error: ", dump($e) if($e);
69            }
70    
71    }
72    
73    test_v({
74            '900' => 'foo'
75    }, qw/field 900 not_repeatable/);
76    
77  ok(! $v->validate_errors({  test_v({
78          '900' => [ qw/foo bar baz/ ]          '900' => [ qw/foo bar baz/ ]
79  }), '900 no sf');  });
80    
81  ok($v->validate_errors({  test_v({
82          '901' => [ qw/foo bar baz/ ]          '901' => [ qw/foo bar baz/ ]
83  }), '901 no sf');  }, qw/field 901 missing_subfield/);
84    
85  ok(! $v->validate_errors({  test_v({
86          '901' => [ { 'a' => 42 } ]          '901' => [ { 'a' => 42 } ]
87  }), '901^a');  });
88    
89  ok($v->validate_errors({  test_v({
90          '901' => [ { 'b' => 42 } ]          '901' => [ { 'b' => 42 } ]
91  }), '901^b');  }, qw/field 901 subfield extra b/);
92    
93  ok(! $v->validate_errors({  test_v({
94          '902' => [ { 'b' => 1 }, { 'c' => 2 } ]          '902' => [ { 'b' => 1 }, { 'c' => 2 } ]
95  }), '902^b 902^c');  });
96    
97  ok($v->validate_errors({  test_v({
98          '902' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]          '902' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]
99  }), '902^a 902^b 902^c');  }, qw/field 902 subfield extra a/);
100    
101  ok(! $v->validate_errors({  test_v({
102          '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]          '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]
103  }), '903^a 903^b 903^c');  });
104    
105  ok($v->validate_errors({  test_v({
106          '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 }, { 'd' => 3 } ]          '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 }, { 'd' => 3 } ]
107  }), '903^a 903^b 903^c 903^d');  }, qw/field 903 subfield extra d/);
108    
109    is_deeply(
110    
111    test_v({
112            '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 }, { 'd' => 3 }, { 'e' => 4 } ]
113    }, qw/field 903 subfield extra/),
114    
115    { 'd' => 1, 'e' => 1 }, 'additional fields d, e');
116    
117    test_v({
118            '904' => [ { 'a' => 1, } ]
119    });
120    
121    test_v({
122            '904' => [ { 'b' => 1 } ]
123    }, qw/field 904 subfield extra b/);
124    

Legend:
Removed from v.515  
changed lines
  Added in v.655

  ViewVC Help
Powered by ViewVC 1.1.26