FlatFile-DataStore

 view release on metacpan or  search on metacpan

t/001-datastore.t  view on Meta::CPAN

        "create()" );

    my $data = $record->data();
    is( $data, "This is testing record1.", "data()" );

    my $keynum = $record->keynum();
    is( $keynum, 0, "keynum()" );

    my $user = $record->user();
    is( $user, "Testing1", "user()" );

    my $string = $record->preamble_string();
    is( $string, "++${yyyymmdd}01002410000----------Testing1  ", "string()" );

    my $indicator = $record->indicator();
    is( $indicator, "+", "indicator()" );

    my $transind = $record->transind();
    is( $transind, "+", "transind()" );

    my $date = $record->date();
    is( $date, $yyyy_mm_dd, "date()" );

    my $reclen = $record->reclen();
    is( $reclen, 24, "reclen()" );

    my $transnum = $record->transnum();
    is( $transnum, 1, "transnum()" );

    my $thisfnum = $record->thisfnum();
    is( $thisfnum, "1", "thisfnum()" );

    my $thisseek = $record->thisseek();
    is( $thisseek, 0, "thisseek()" );

    my $record2 = $ds->retrieve( $keynum );
    my $recdump1 = Dumper $record;
    my $recdump2 = Dumper $record2;
    is( $recdump1, $recdump2, "retrieve()" );
    ok( $record->is_created, "is_created()" );
    ok( $record2->is_created, "is_created()" );

    my $updrec = $ds->update({ record => $record, data => "Updated Record", user => "Updated1" });

    my $rec_data = $updrec->data;
    is( $rec_data,    "Updated Record", "rec->data()" );
    is( $updrec->user, "Updated1",      "rec->user()" );
    ok( $updrec->is_updated, "is_updated()" );

    my $delrec = $ds->delete( $updrec );
    is( $delrec->indicator, $ds->crud()->{'delete'}, "deleted indicator()" );
    ok( $delrec->is_deleted, "is_deleted()" );

    $ds->userdata( "testing" );
    $record = $ds->create({ data => "Another test." });
    is( $record->user, "testing", "userdata()" );

    $record->data( "Yet another test." );
    $record = $ds->create( $record );
    $record2 = $ds->retrieve( $record->keynum );
    my $recdata  = $record->data;
    my $recdata2 = $record2->data;
    is( $recdata, $recdata2, "create( record )" );

    $record2 = $ds->create({ record => $record, user => 'other user' });
    is( $record2->user, 'other user', "create( record, user data )" );

    $record = $ds->create({ data => \"Apple", user => 'fruit' });
    is( $record->data, 'Apple', "create( scalar-ref, user data )" );
    is( $record->user, 'fruit', "create( scalar-ref, user data )" );
}

#---------------------------------------------------------------------
{  # misc

    my $ds = FlatFile::DataStore->new( {
        dir  => $dir,
        name => $name,
    } );

    ok( $ds, "new()" );

    # we want the newlines here:
    my $msg1 = "For testing retrieve_preamble()\n";
    my $msg2 = "For testing locate_record_data()\n";

    my $record = $ds->create({ data => "$msg1$msg2" });
    my $keynum = $record->keynum;
    my $preamble_string1 = $record->preamble_string;

    my $preamble = $ds->retrieve_preamble( $keynum );
    my $preamble_string2 = $preamble->string;

    is( $preamble_string1, $preamble_string2, "retrieve_preamble()" );

    my $buffer = '';

    # see POD:
    my( $fh, $pos, $len ) = $ds->locate_record_data( $keynum );
    my $got;
    while( <$fh> ) {
        last if ($got += length) > $len;  # in case we read the recsep
        # [do something with $_ ...]
        $buffer .= $_;
        last if $got == $len;
    }
    close $fh;

    is( $buffer, "$msg1$msg2", "locate_record_data()" );

}



( run in 0.432 second using v1.01-cache-2.11-cpan-2398b32b56e )