blob: 40b9bcca59b2cf2db453b0a3502cb4f84ef66715 [file] [log] [blame]
BEGIN {
if ($ENV{PERL_CORE}) {
chdir 't' if -d 't';
@INC = ("../lib", "lib/compress");
}
}
use lib qw(t t/compress);
use strict;
use warnings;
use bytes;
use Test::More ;
use CompTestUtils;
BEGIN
{
# use Test::NoWarnings, if available
my $extra = 0 ;
$extra = 1
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
plan tests => 841 + $extra ;
};
use IO::Compress::Bzip2 qw($Bzip2Error) ;
use IO::Uncompress::Bunzip2 qw($Bunzip2Error) ;
my $CompressClass = 'IO::Compress::Bzip2';
my $UncompressClass = getInverse($CompressClass);
my $Error = getErrorRef($CompressClass);
my $UnError = getErrorRef($UncompressClass);
sub myBZreadFile
{
my $filename = shift ;
my $init = shift ;
my $fil = new $UncompressClass $filename,
-Strict => 1,
-Append => 1
;
my $data = '';
$data = $init if defined $init ;
1 while $fil->read($data) > 0;
$fil->close ;
return $data ;
}
{
title "Testing $CompressClass Errors";
my $buffer ;
for my $value (undef, -1, 'fred')
{
my $stringValue = defined $value ? $value : 'undef';
title "BlockSize100K => $stringValue";
my $err = "Parameter 'BlockSize100K' must be an unsigned int, got '$stringValue'";
my $bz ;
eval { $bz = new IO::Compress::Bzip2(\$buffer, BlockSize100K => $value) };
like $@, mkErr("IO::Compress::Bzip2: $err"),
" value $stringValue is bad";
is $Bzip2Error, "IO::Compress::Bzip2: $err",
" value $stringValue is bad";
ok ! $bz, " no bz object";
}
for my $value (0, 10, 99999)
{
my $stringValue = defined $value ? $value : 'undef';
title "BlockSize100K => $stringValue";
my $err = "Parameter 'BlockSize100K' not between 1 and 9, got $stringValue";
my $bz ;
eval { $bz = new IO::Compress::Bzip2(\$buffer, BlockSize100K => $value) };
like $@, mkErr("IO::Compress::Bzip2: $err"),
" value $stringValue is bad";
is $Bzip2Error, "IO::Compress::Bzip2: $err",
" value $stringValue is bad";
ok ! $bz, " no bz object";
}
for my $value (undef, -1, 'fred')
{
my $stringValue = defined $value ? $value : 'undef';
title "WorkFactor => $stringValue";
my $err = "Parameter 'WorkFactor' must be an unsigned int, got '$stringValue'";
my $bz ;
eval { $bz = new IO::Compress::Bzip2(\$buffer, WorkFactor => $value) };
like $@, mkErr("IO::Compress::Bzip2: $err"),
" value $stringValue is bad";
is $Bzip2Error, "IO::Compress::Bzip2: $err",
" value $stringValue is bad";
ok ! $bz, " no bz object";
}
for my $value (251, 99999)
{
my $stringValue = defined $value ? $value : 'undef';
title "WorkFactor => $stringValue";
my $err = "Parameter 'WorkFactor' not between 0 and 250, got $stringValue";
my $bz ;
eval { $bz = new IO::Compress::Bzip2(\$buffer, WorkFactor => $value) };
like $@, mkErr("IO::Compress::Bzip2: $err"),
" value $stringValue is bad";
is $Bzip2Error, "IO::Compress::Bzip2: $err",
" value $stringValue is bad";
ok ! $bz, " no bz object";
}
}
{
title "Testing $UncompressClass Errors";
my $buffer ;
for my $value (-1, 'fred')
{
my $stringValue = defined $value ? $value : 'undef';
title "Small => $stringValue";
my $err = "Parameter 'Small' must be an int, got '$stringValue'";
my $bz ;
eval { $bz = new IO::Uncompress::Bunzip2(\$buffer, Small => $value) };
like $@, mkErr("IO::Uncompress::Bunzip2: $err"),
" value $stringValue is bad";
is $Bunzip2Error, "IO::Uncompress::Bunzip2: $err",
" value $stringValue is bad";
ok ! $bz, " no bz object";
}
}
{
title "Testing $CompressClass and $UncompressClass";
my $hello = <<EOM ;
hello world
this is a test
EOM
for my $value ( 1 .. 9 )
{
title "$CompressClass - BlockSize100K => $value";
my $lex = new LexFile my $name ;
my $bz ;
$bz = new IO::Compress::Bzip2($name, BlockSize100K => $value)
or diag $IO::Compress::Bzip2::Bzip2Error ;
ok $bz, " bz object ok";
$bz->write($hello);
$bz->close($hello);
is myBZreadFile($name), $hello, " got expected content";
}
for my $value ( 0 .. 250 )
{
title "$CompressClass - WorkFactor => $value";
my $lex = new LexFile my $name ;
my $bz ;
$bz = new IO::Compress::Bzip2($name, WorkFactor => $value);
ok $bz, " bz object ok";
$bz->write($hello);
$bz->close($hello);
is myBZreadFile($name), $hello, " got expected content";
}
for my $value ( 0 .. 1 )
{
title "$UncompressClass - Small => $value";
my $lex = new LexFile my $name ;
my $bz ;
$bz = new IO::Compress::Bzip2($name);
ok $bz, " bz object ok";
$bz->write($hello);
$bz->close($hello);
my $fil = new $UncompressClass $name,
Append => 1,
Small => $value ;
my $data = '';
1 while $fil->read($data) > 0;
$fil->close ;
is $data, $hello, " got expected";
}
}
1;