# -*- mode: perl -*-
use Test::More tests => 9;
use Fcntl;
BEGIN {
use_ok('Compress::Bzip2');
};
our ( $debugf, $BZIP );
do 't/lib.pl';
my $INFILE = catfile( qw(bzlib-src sample0.ref) );
( my $MODELFILE = $INFILE ) =~ s/\.ref$/.bz2/;
my $PREFIX = catfile( qw(t 041-tmp) );
## verbosity 0-4, small 0,1, blockSize100k 1-9, workFactor 0-250, readUncompressed 0,1
my ( $d, $err, $in, $out, $buf, $res );
$d = Compress::Bzip2->new( -workFactor => 1000 );
ok( $d, "object created in spite of error" );
$err = $d->bzerror;
ok( $err, "error is set '$err' vs '$bzerrno'" );
$d->bzclearerr;
$err = $d->bzerror;
ok( !$err, "after bzclearerr, error is not set '$err' vs '$bzerrno'" );
my $TMPFILE = "$PREFIX-protected.bz2";
unlink( $TMPFILE ) if -f $TMPFILE;
SKIP: {
skip "bzclose handle not with 5.6", 2 if $] < 5.008;
sysopen( $out, $TMPFILE, O_WRONLY|O_CREAT ) or die "failed $TMPFILE $!";
ok( $d->bzopen( $out, "w" ), "bzopen with file handle instead of file" );
open( $in, "<", $INFILE );
while ( my $ln = sysread( $in, $buf, 512 ) ) {
$res = $d->bzwrite( $buf, $ln );
if ( $res < 0 ) {
print STDERR "error: $res $bzerrno\n";
last;
}
}
$res = $d->bzclose;
ok( !$res, "file was closed $res $Compress::Bzip2::bzerrno" );
}
close($in);
if ($] < 5.008) {
require File::Copy;
File::Copy::syscopy($MODELFILE, $TMPFILE);
chmod( 0644, $TMPFILE ) or die;
}
ok ( compare_binary_files( $MODELFILE, $TMPFILE ), "no differences with $MODELFILE reference" );
chmod( 0000, $TMPFILE ) or die;
SKIP: {
skip "0000 but writable ($>/$^O)", 2 if -w $TMPFILE;
$d = Compress::Bzip2->new( -verbosity => $debugf ? 4 : 0, -blockSize100k => 1 );
$res = $d->bzopen( $TMPFILE, "w" );
ok( !$res, "open failed" );
$res = $d->bzerror;
ok( $res, "error set, is '$res' '$bzerrno'" );
}