IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6483


Ignore:
Timestamp:
Feb 24, 2006, 12:00:52 PM (20 years ago)
Author:
jhoblitt
Message:

add 34 DataStore::FileSet::Parser tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DataStore/t/02_fileset_parse.t

    r6474 r6483  
    33# Copyright (C) 2006  Joshua Hoblitt
    44#
    5 # $Id: 02_fileset_parse.t,v 1.1 2006-02-24 02:51:31 jhoblitt Exp $
     5# $Id: 02_fileset_parse.t,v 1.2 2006-02-24 22:00:52 jhoblitt Exp $
    66
    77use strict;
     
    1010use lib qw( ./lib ./t );
    1111
    12 use Test::More tests => 4;
     12use Test::More tests => 38;
     13use Test::Warn;
    1314
    1415=head1 NAME
     
    5657    '->parse() fails when passed a zero length string');
    5758
     59warning_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
     67warning_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
     75warning_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
     83warning_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
     91warning_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
     99warning_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
    58109my $example1 =<<END;
    59110# filesetID|time registered    |type   |telescope pointing         |etime|f|airmass|
     
    63114otis0123456|2006-01-01T00:03:04Z|object|11:00:10.33 68:26:59.6 2000|30.0 |r|1.23   |
    64115END
    65 
    66 {
    67116    my $results = DataStore::FileSet::Parser->new->parse($example1);
    68117
    69118    is(scalar @$results, 4, "correct number of item returned");
    70 }
    71 __END__
    72119
    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
    83137}
    84138
    85139{
    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
     141my $example1 =<<END;
     142
     143
     144# filesetID|time registered    |type   |telescope pointing         |etime|f|airmass|
     145
     146                            # random comment
     147otis0123456|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
     152END
     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');
    94161}
    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:01
    110 END
    111 
    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:01
    133 END
    134     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:01
    141 END
    142     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.