summaryrefslogtreecommitdiff
path: root/t/034-uncompfile.t
diff options
context:
space:
mode:
Diffstat (limited to 't/034-uncompfile.t')
-rw-r--r--t/034-uncompfile.t76
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" );