|
Packit Service |
4d3269 |
# -*- mode: perl -*-
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
use Test::More tests => 5;
|
|
Packit Service |
4d3269 |
#use Test::More qw(no_plan);
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
## test bzflush
|
|
Packit Service |
4d3269 |
## stream compress sample2 from the bzip2 1.0.2 distribution
|
|
Packit Service |
4d3269 |
## verify bunzip2 can reconstruct the output
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
BEGIN {
|
|
Packit Service |
4d3269 |
use_ok('Compress::Bzip2');
|
|
Packit Service |
4d3269 |
};
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
our ( $debugf, $BZIP );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
do './t/lib.pl';
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
my $INFILE = catfile( qw(bzlib-src sample2.ref) );
|
|
Packit Service |
4d3269 |
( my $MODELFILE = $INFILE ) =~ s/\.ref$/.bz2/;
|
|
Packit Service |
4d3269 |
my $PREFIX = catfile( qw(t 051-tmp) );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
my ( $in, $out, $d, $outbuf, $counter, $bytes, $bytesout, $flushcount, $bytesflushedmark );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
open( $in, "< $INFILE" ) or die "$INFILE: $!";
|
|
Packit Service |
4d3269 |
open( $out, "> $PREFIX-out.bz2" ) or die "$PREFIX-out.bz2: $!";
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
## verbosity 0-4, small 0,1, blockSize100k 1-9, workFactor 0-250, readUncompressed 0,1
|
|
Packit Service |
4d3269 |
$d = bzdeflateInit( -verbosity => $debugf ? 4 : 0 );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
ok( $d, "bzdeflateInit was successful" );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
$counter = 0;
|
|
Packit Service |
4d3269 |
$bytes = 0;
|
|
Packit Service |
4d3269 |
$bytesout = 0;
|
|
Packit Service |
4d3269 |
$bytesflushedmark = 0;
|
|
Packit Service |
4d3269 |
$flushcount = 0;
|
|
Packit Service |
4d3269 |
while ( my $ln = sysread( $in, $buf, 512 ) ) {
|
|
Packit Service |
4d3269 |
$outbuf = $d->bzdeflate( $buf );
|
|
Packit Service |
4d3269 |
if ( !defined($outbuf) ) {
|
|
Packit Service |
4d3269 |
print STDERR "error: $outbuf $bzerrno\n";
|
|
Packit Service |
4d3269 |
last;
|
|
Packit Service |
4d3269 |
}
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
if ( $bytes - $bytesflushedmark > 50_000 && $outbuf eq '' ) {
|
|
Packit Service |
4d3269 |
$outbuf = $d->bzflush;
|
|
Packit Service |
4d3269 |
$flushcount++ if $outbuf;
|
|
Packit Service |
4d3269 |
$bytesflushedmark = $bytes;
|
|
Packit Service |
4d3269 |
}
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
if ( $outbuf ne '' ) {
|
|
Packit Service |
4d3269 |
syswrite( $out, $outbuf );
|
|
Packit Service |
4d3269 |
$bytesout += length($outbuf);
|
|
Packit Service |
4d3269 |
}
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
$bytes += $ln;
|
|
Packit Service |
4d3269 |
$counter++;
|
|
Packit Service |
4d3269 |
}
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
$outbuf = $d->bzclose;
|
|
Packit Service |
4d3269 |
if ( defined($outbuf) && $outbuf ne '' ) {
|
|
Packit Service |
4d3269 |
syswrite( $out, $outbuf );
|
|
Packit Service |
4d3269 |
$bytesout += length($outbuf);
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
$counter++;
|
|
Packit Service |
4d3269 |
}
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
ok( $bytes && $bytesout, "$counter blocks read, $bytes bytes in, $bytesout bytes out" );
|
|
Packit Service |
4d3269 |
ok( $flushcount, "successful flushes at 50,000 - $flushcount" );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
close($in);
|
|
Packit Service |
4d3269 |
close($out);
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
system( "$BZIP -d < $PREFIX-out.bz2 > $PREFIX-reference-out-bunzip2.txt" );
|
|
Packit Service |
4d3269 |
#system( "od -x < $INFILE > $PREFIX-infile.odx" );
|
|
Packit Service |
4d3269 |
#system( "diff $PREFIX-infile.odx $PREFIX-reference-out-bunzip.odx > $PREFIX-diff.txt" );
|
|
Packit Service |
4d3269 |
#ok( ! -s "$PREFIX-diff.txt", "no differences with bzip2" );
|
|
Packit Service |
4d3269 |
|
|
Packit Service |
4d3269 |
ok ( compare_binary_files( $INFILE, "$PREFIX-reference-out-bunzip2.txt" ), "no differences with 50k stream compressing $INFILE" );
|