Changeset 6483 for trunk/DataStore/t/02_fileset_parse.t
- Timestamp:
- Feb 24, 2006, 12:00:52 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/DataStore/t/02_fileset_parse.t (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/DataStore/t/02_fileset_parse.t
r6474 r6483 3 3 # Copyright (C) 2006 Joshua Hoblitt 4 4 # 5 # $Id: 02_fileset_parse.t,v 1. 1 2006-02-24 02:51:31jhoblitt Exp $5 # $Id: 02_fileset_parse.t,v 1.2 2006-02-24 22:00:52 jhoblitt Exp $ 6 6 7 7 use strict; … … 10 10 use lib qw( ./lib ./t ); 11 11 12 use Test::More tests => 4; 12 use Test::More tests => 38; 13 use Test::Warn; 13 14 14 15 =head1 NAME … … 56 57 '->parse() fails when passed a zero length string'); 57 58 59 warning_like { 60 my $parser = DataStore::FileSet::Parser->new; 61 62 is($parser->parse('asdf|asdf'), undef, 63 '->parse() returns undef on failure'); 64 } qr/not enough fields/, 65 '->parse() fails when there are too few fields'; 66 67 warning_like { 68 my $parser = DataStore::FileSet::Parser->new; 69 70 is($parser->parse('|2006-01-01T00:03:04Z|object'), undef, 71 '->parse() returns undef on failure'); 72 } qr/does not conform /, 73 '->parse() fails when the fileset fields is not in the proper format'; 74 75 warning_like { 76 my $parser = DataStore::FileSet::Parser->new; 77 78 is($parser->parse('foobar|2006-01-0100:03:04|object'), undef, 79 '->parse() returns undef on failure'); 80 } qr/does not conform /, 81 '->parse() fails when the datetime fields is not in the proper format'; 82 83 warning_like { 84 my $parser = DataStore::FileSet::Parser->new; 85 86 is($parser->parse('foobar|2006-01-01T00:03:04Z| '), undef, 87 '->parse() returns undef on failure'); 88 } qr/does not conform /, 89 '->parse() fails when the type fields is not in the proper format'; 90 91 warning_like { 92 my $parser = DataStore::FileSet::Parser->new; 93 94 is($parser->parse('foo#bonkbar|2006-01-01T00:03:04Z|baz'), undef, 95 '->parse() returns undef on failure'); 96 } qr/contains #/, 97 '->parse() fails when a field contains #'; 98 99 warning_like { 100 my $parser = DataStore::FileSet::Parser->new; 101 102 is($parser->parse('foobar|2006-01-01T00:03:04Z|baz # foo'), undef, 103 '->parse() returns undef on failure'); 104 } qr/contains #/, 105 '->parse() comments are not allowed after the last field'; 106 107 { 108 # multi-row example 58 109 my $example1 =<<END; 59 110 # filesetID|time registered |type |telescope pointing |etime|f|airmass| … … 63 114 otis0123456|2006-01-01T00:03:04Z|object|11:00:10.33 68:26:59.6 2000|30.0 |r|1.23 | 64 115 END 65 66 {67 116 my $results = DataStore::FileSet::Parser->new->parse($example1); 68 117 69 118 is(scalar @$results, 4, "correct number of item returned"); 70 }71 __END__72 119 73 { 74 my $item = pop @items; 75 is($item->stamp, "2005-08-06T19:30:01", "correct time stamp"); 76 is($item->file_id, "telescope_2005-08-06T19:30:01", "correct file id"); 77 is($item->type, "metadata", "correct type"); 78 is($item->size, 8640, "correct size"); 79 is($item->md5, "c462d570deb517d9bd92e5bb6a21cc86", "correct md5"); 80 is($item->url, 81 "http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:30:01", "correct url"); 82 is($item->attributes, undef, "no attributes"); 120 isa_ok(@$results[0], 'DataStore::FileSet::Record'); 121 is(@$results[0]->fileset, 'otis0123456', 'correct fileset'); 122 is(@$results[0]->datetime, '2006-01-01T00:03:04Z', 'correct datetime'); 123 is(@$results[0]->type, 'object', 'correct type'); 124 isa_ok(@$results[1], 'DataStore::FileSet::Record'); 125 is(@$results[1]->fileset, 'otis0123456', 'correct fileset'); 126 is(@$results[1]->datetime, '2006-01-01T00:03:04Z', 'correct datetime'); 127 is(@$results[1]->type, 'object', 'correct type'); 128 isa_ok(@$results[2], 'DataStore::FileSet::Record'); 129 is(@$results[2]->fileset, 'otis0123456', 'correct fileset'); 130 is(@$results[2]->datetime, '2006-01-01T00:03:04Z', 'correct datetime'); 131 is(@$results[2]->type, 'object', 'correct type'); 132 isa_ok(@$results[3], 'DataStore::FileSet::Record'); 133 is(@$results[3]->fileset, 'otis0123456', 'correct fileset'); 134 is(@$results[3]->datetime, '2006-01-01T00:03:04Z', 'correct datetime'); 135 is(@$results[3]->type, 'object', 'correct type'); 136 83 137 } 84 138 85 139 { 86 my $item = pop @items; 87 is($item->stamp, "2005-08-06T19:40:01", "correct time stamp"); 88 is($item->file_id, "telescope_2005-08-06T19:40:01", "correct file id"); 89 is($item->type, "metadata", "correct type"); 90 is($item->size, 8640, "correct size"); 91 is($item->md5, "c462d570deb517d9bd92e5bb6a21cc86", "correct md5"); 92 is($item->url, "http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:40:01", "correct url"); 93 is($item->attributes, undef, "no attributes"); 140 # example with blank lines & comments 141 my $example1 =<<END; 142 143 144 # filesetID|time registered |type |telescope pointing |etime|f|airmass| 145 146 # random comment 147 otis0123456|2006-01-01T00:03:04Z|object|11:00:10.33 68:26:59.6 2000|30.0 |r|1.23 | 148 149 # random comment 150 151 # foo 152 END 153 my $results = DataStore::FileSet::Parser->new->parse($example1); 154 155 is(scalar @$results, 1, "correct number of item returned"); 156 157 isa_ok(@$results[0], 'DataStore::FileSet::Record'); 158 is(@$results[0]->fileset, 'otis0123456', 'correct fileset'); 159 is(@$results[0]->datetime, '2006-01-01T00:03:04Z', 'correct datetime'); 160 is(@$results[0]->type, 'object', 'correct type'); 94 161 } 95 96 {97 my $item = pop @items;98 is($item->stamp, "2005-08-06T19:50:01", "correct time stamp");99 is($item->file_id, "telescope_2005-08-06T19:50:01", "correct file id");100 is($item->type, "metadata", "correct type");101 is($item->size, 8640, "correct size");102 is($item->md5, "c462d570deb517d9bd92e5bb6a21cc86", "correct md5");103 is($item->url, "http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:50:01", "correct url");104 is($item->attributes, undef, "no attributes");105 }106 }107 108 my $example2 =<<END;109 2005-08-06|19:30:01|telescope_2005-08-06T19:30:01|metadata|foo=bar:baz=baz|8640|c462d570deb517d9bd92e5bb6a21cc86|http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:30:01110 END111 112 {113 my $results = $parser->parse($example2);114 my @items = @{ $results };115 116 is(scalar @items, 1, "correct number of item returned");117 118 {119 my $item = pop @items;120 is($item->stamp, "2005-08-06T19:30:01", "correct time stamp");121 is($item->file_id, "telescope_2005-08-06T19:30:01", "correct file id");122 is($item->type, "metadata", "correct type");123 is($item->size, 8640, "correct size");124 is($item->md5, "c462d570deb517d9bd92e5bb6a21cc86", "correct md5");125 is($item->url, "http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:30:01", "correct url");126 eq_hash($item->attributes, { foo => 'bar', baz => 'baz' }, "no attributes");127 }128 }129 130 warning_like {131 my $results = $parser->parse(<<END);132 2005-08-06|19:30:01|telescope_2005-08-06T19:30:01||foo=bar:baz=baz|8640|c462d570deb517d9bd92e5bb6a21cc86|http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:30:01133 END134 is($results, undef, "field not allowed to be null");135 } qr/record: .*? is missing required field/,136 "warning for null required field";137 138 warning_like {139 my $results = $parser->parse(<<END);140 2005-08-06|19:30:01|telescope_2005-08-06T19:30:01|foo=bar:baz=baz|8640|c462d570deb517d9bd92e5bb6a21cc86|http://flaxen.ifa.hawaii.edu/otis/data/metadata/telescope_2005-08-06T19:30:01141 END142 is($results, undef, "not enough fields");143 } qr/record: .*? is missing required field/,144 "warning for missing required field";
Note:
See TracChangeset
for help on using the changeset viewer.
