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 = < $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;