Compress-BGZF

 view release on metacpan or  search on metacpan

t/bgzf_obj.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Test::Fatal;
use Test::More qw/no_plan/;
use FindBin;
use Compress::BGZF;
use Compress::BGZF::Reader;
use Compress::BGZF::Writer;
use File::Basename qw/basename/;
use File::Copy qw/copy/;
use File::Temp qw/tempfile/;
use IO::Handle;
use Digest::MD5;

chdir $FindBin::Bin;

require_ok ("Compress::BGZF");

# check that compressed and uncompressed FHs return identical results
my @files = (
    #'corpus/lorem_long',
    'corpus/lorem_mixed',
    'corpus/lorem',
    'corpus/long_chunks',
);

my $scratch = File::Temp->newdir(CLEANUP => 1);

# test various Writer methods, and add created fields to list of Reader tests
# to validate output
for my $i (0..$#files) {

    my $file = $files[$i];

    my $fn_u = join '/', $scratch, basename($file);
    my $fn_c = $fn_u . '.gz';
    my $fn_i = $fn_c . '.gzi';
    copy $file => $fn_u;

    # test writing to STDOUT on first file
    my $fh_tmp;
    if ($i == 0) {
        open $fh_tmp, '>', $fn_c;
        $fn_c = undef;
    }
    local *STDOUT = $fh_tmp
        if (defined $fh_tmp);

    my $writer = Compress::BGZF::Writer->new($fn_c);
    ok ($writer->isa('Compress::BGZF::Writer'), "returned Compress::BGZF::Writer object");

    # test various EOL/compression combinations
    $writer->set_write_eof();
    $writer->set_write_eof($i % 2);
    $writer->set_level(($i+1)*3 % 10);
    like(
        exception { $writer->set_level('foobar') },
        qr/invalid compression level/i,
        "invalid compression level caught $i.1"
    );
    like(
        exception { $writer->set_level(undef) },
        qr/invalid compression level/i,



( run in 1.339 second using v1.01-cache-2.11-cpan-54e63673c56 )