diff options
Diffstat (limited to 't/034-uncompfile.t')
-rw-r--r-- | t/034-uncompfile.t | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/t/034-uncompfile.t b/t/034-uncompfile.t new file mode 100644 index 0000000..d2d8d0e --- /dev/null +++ b/t/034-uncompfile.t @@ -0,0 +1,76 @@ +# -*- mode: perl -*- + +use Test::More tests => 5; +#use Test::More qw(no_plan); + +## uncompress sample3 compressed file from the bzip2 1.0.2 distribution +## compare against bunzip2 command with od -x and diff + +## test uncompressing a large file +## - make up a large file by essentially repeating one of the other sample files + +BEGIN { + use_ok('Compress::Bzip2'); +}; + +do 't/lib.pl'; + +my $INFILE = catfile( qw(bzlib-src sample1.ref) ); +#( my $MODELFILE = $INFILE ) =~ s/\.bz2$/.ref/; +my $PREFIX = catfile( qw(t 034-tmp) ); + +my $in; +my $out; +my $dup; +open( $in, $INFILE ) or die; + +print STDERR "Running $BZIP -1 > $PREFIX-reference.bz2\n" if $debugf; + +my $filecount = 11; + +open( $out, "| $BZIP -1 > $PREFIX-reference.bz2" ) or die; +open( $dup, "> $PREFIX-reference.txt" ) or die; + +my $MODELFILE = "$PREFIX-reference.txt"; + +for (my $i=0; $i<$filecount; $i++) { + while ( my $ln = sysread( $in, $buf, 512 ) ) { + syswrite($out, $buf, $ln); + syswrite($dup, $buf, $ln); + } + sysseek($in,0,0); +} +close($in); +close($out); +close($dup); + +undef $out; +open( $out, "> $PREFIX-sample.txt" ); + +my $d = Compress::Bzip2->new( -verbosity => $debugf ? 4 : 0 ); +$d->bzopen( "$PREFIX-reference.bz2", "r" ); + +ok( $d, "open was successful" ); + +my $counter = 0; +my $bytes = 0; +my $written = 0; +while ( my $read = $d->bzread( $buf, 512 ) ) { + if ( $read < 0 ) { + print STDERR "error: $bytes $Compress::Bzip2::bzerrno\n"; + last; + } + + $written = syswrite( $out, $buf, $read ); + + $bytes += $read; + $counter++; +} +ok( $counter, "$counter blocks were read, $bytes bytes" ); + +my $res = $d->bzclose; +ok( !$res, "file was closed $res $Compress::Bzip2::bzerrno" ); + +close($out); + +ok ( compare_binary_files( "$PREFIX-sample.txt", $MODELFILE ), "no differences with decompressing $INFILE times 11" ); |