9 #use lib qw(t t/compress);
39 # autogenerate the name unless if none supplied
40 $_ = "tst" . $index ++ . ".tmp"
44 for (@_) { 1 while unlink $_ } ;
51 chmod 0777, @{ $self } ;
52 for (@$self) { 1 while unlink $_ } ;
64 foreach (@_) { rmtree $_ }
71 foreach (@$self) { rmtree $_ }
80 if (IO::Compress::Base::Common::isaFilehandle($f))
90 or croak "Cannot open $f: $!\n" ;
96 return @strings if wantarray ;
97 return join "", @strings ;
102 foreach (@_) { writeFile($_, '') }
107 my($filename, @strings) = @_ ;
108 1 while unlink $filename ;
109 open (F, ">$filename")
110 or croak "Cannot open $filename: $!\n" ;
121 my ($filename) = shift ;
125 my $fil = gzopen($filename, "rb")
126 or croak "Cannopt open '$filename': $Compress::Zlib::gzerrno" ;
129 while $fil->gzread($line) > 0;
139 if (IO::Compress::Base::Common::isaFilehandle($d))
143 elsif (IO::Compress::Base::Common::isaFilename($d))
154 $d = '' unless defined $d ;
155 #while (read(STDIN, $data, 16)) {
156 while (my $data = substr($d, 0, 16)) {
157 substr($d, 0, 16) = '' ;
158 printf "# %8.8lx ", $offset;
161 my @array = unpack('C*', $data);
163 printf('%2.2x ', $_);
165 print " " x (16 - @array)
167 $data =~ tr/\0-\37\177-\377/./;
182 ok my $x = new IO::Compress::Gzip $name, %opts
183 or diag "GzipError is $IO::Compress::Gzip::GzipError" ;
184 ok $x->write($string) ;
187 #is GZreadFile($name), $string ;
189 ok my $gunz = new IO::Uncompress::Gunzip $name, Strict => 0
190 or diag "GunzipError is $IO::Uncompress::Gunzip::GunzipError" ;
191 ok my $hdr = $gunz->getHeaderInfo();
193 ok $gunz->read($uncomp) ;
194 ok $uncomp eq $string;
202 my ($filename, $uue) = @_ ;
203 return readFile($filename) eq unpack("u", $uue) ;
209 # # TODO -- add Lzma here?
210 # my %raw = map { $_ => 1 } qw( RawDeflate );
212 # return defined $raw{$class};
218 'IO::Uncompress::AnyInflate' => { Inverse => 'IO::Compress::Gzip',
219 Error => 'AnyInflateError',
220 TopLevel => 'anyinflate',
224 'IO::Uncompress::AnyUncompress' => { Inverse => 'IO::Compress::Gzip',
225 Error => 'AnyUncompressError',
226 TopLevel => 'anyuncompress',
230 'IO::Compress::Gzip' => { Inverse => 'IO::Uncompress::Gunzip',
231 Error => 'GzipError',
235 'IO::Uncompress::Gunzip' => { Inverse => 'IO::Compress::Gzip',
236 Error => 'GunzipError',
237 TopLevel => 'gunzip',
241 'IO::Compress::Deflate' => { Inverse => 'IO::Uncompress::Inflate',
242 Error => 'DeflateError',
243 TopLevel => 'deflate',
246 'IO::Uncompress::Inflate' => { Inverse => 'IO::Compress::Deflate',
247 Error => 'InflateError',
248 TopLevel => 'inflate',
252 'IO::Compress::RawDeflate' => { Inverse => 'IO::Uncompress::RawInflate',
253 Error => 'RawDeflateError',
254 TopLevel => 'rawdeflate',
257 'IO::Uncompress::RawInflate' => { Inverse => 'IO::Compress::RawDeflate',
258 Error => 'RawInflateError',
259 TopLevel => 'rawinflate',
263 'IO::Compress::Zip' => { Inverse => 'IO::Uncompress::Unzip',
268 'IO::Uncompress::Unzip' => { Inverse => 'IO::Compress::Zip',
269 Error => 'UnzipError',
274 'IO::Compress::Bzip2' => { Inverse => 'IO::Uncompress::Bunzip2',
275 Error => 'Bzip2Error',
279 'IO::Uncompress::Bunzip2' => { Inverse => 'IO::Compress::Bzip2',
280 Error => 'Bunzip2Error',
281 TopLevel => 'bunzip2',
285 'IO::Compress::Lzop' => { Inverse => 'IO::Uncompress::UnLzop',
286 Error => 'LzopError',
290 'IO::Uncompress::UnLzop' => { Inverse => 'IO::Compress::Lzop',
291 Error => 'UnLzopError',
292 TopLevel => 'unlzop',
296 'IO::Compress::Lzf' => { Inverse => 'IO::Uncompress::UnLzf',
301 'IO::Uncompress::UnLzf' => { Inverse => 'IO::Compress::Lzf',
302 Error => 'UnLzfError',
307 'IO::Compress::Lzma' => { Inverse => 'IO::Uncompress::UnLzma',
308 Error => 'LzmaError',
312 'IO::Uncompress::UnLzma' => { Inverse => 'IO::Compress::Lzma',
313 Error => 'UnLzmaError',
314 TopLevel => 'unlzma',
318 'IO::Compress::Xz' => { Inverse => 'IO::Uncompress::UnXz',
323 'IO::Uncompress::UnXz' => { Inverse => 'IO::Compress::Xz',
324 Error => 'UnXzError',
329 'IO::Compress::PPMd' => { Inverse => 'IO::Uncompress::UnPPMd',
330 Error => 'PPMdError',
334 'IO::Uncompress::UnPPMd' => { Inverse => 'IO::Compress::PPMd',
335 Error => 'UnPPMdError',
336 TopLevel => 'unppmd',
340 'IO::Compress::DummyComp' => { Inverse => 'IO::Uncompress::DummyUnComp',
341 Error => 'DummyCompError',
342 TopLevel => 'dummycomp',
345 'IO::Uncompress::DummyUnComp' => { Inverse => 'IO::Compress::DummyComp',
346 Error => 'DummyUnCompError',
347 TopLevel => 'dummyunComp',
353 for my $key (keys %TOP)
357 $TOP{$key}{Error} = \${ $key . '::' . $TOP{$key}{Error} };
358 $TOP{$key}{TopLevel} = $key . '::' . $TOP{$key}{TopLevel} ;
360 # Silence used once warning in really old perl
361 my $dummy = \${ $key . '::' . $TOP{$key}{Error} };
363 #$TOP{$key . "::" . $TOP{$key}{TopLevel} } = $TOP{$key};
368 my $compWith = shift ;
373 my $obj = $TOP{$compWith}{Inverse}->new( \$buffer, -Append => 1);
374 1 while $obj->read($out) > 0 ;
384 return $TOP{$class}{Inverse};
391 return $TOP{$class}{Error};
398 die "Cannot find $class"
399 if ! defined $TOP{$class}{TopLevel};
400 return \&{ $TOP{$class}{TopLevel} } ;
407 return $TOP{$class}{TopLevel} ;
412 my $compWith = shift ;
417 die "Cannot find $compWith"
418 if ! defined $TOP{$compWith}{Inverse};
419 my $obj = $TOP{$compWith}{Inverse}->new( \$out);
420 $obj->write($buffer) ;
425 our ($AnyUncompressError);
428 eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); ';
437 if (ref $buffer && ref $buffer eq 'ARRAY')
440 $buffer = shift @opts;
445 croak "buffer is undef" unless defined $$buffer;
446 croak "buffer is empty" unless length $$buffer;
452 if (IO::Compress::Base::Common::isaFilehandle($buffer))
454 $data = readFile($buffer);
456 elsif (IO::Compress::Base::Common::isaFilename($buffer))
458 $data = readFile($buffer);
465 if (defined $already && length $already)
468 my $got = substr($data, 0, length($already));
469 substr($data, 0, length($already)) = '';
471 is $got, $already, ' Already OK' ;
475 my $o = new IO::Uncompress::AnyUncompress \$data,
480 or croak "Cannot open buffer/file: $AnyUncompressError" ;
482 1 while $o->read($out) > 0 ;
484 croak "Error uncompressing -- " . $o->error()
497 if (ref $buffer && ref $buffer eq 'ARRAY')
500 $buffer = shift @opts;
505 croak "buffer is undef" unless defined $$buffer;
506 croak "buffer is empty" unless length $$buffer;
512 if (IO::Compress::Base::Common::isaFilehandle($buffer))
514 $data = readFile($buffer);
516 elsif (IO::Compress::Base::Common::isaFilename($buffer))
518 $data = readFile($buffer);
525 if (defined $already && length $already)
528 my $got = substr($data, 0, length($already));
529 substr($data, 0, length($already)) = '';
531 is $got, $already, ' Already OK' ;
535 my $o = new IO::Uncompress::AnyUncompress \$data,
541 or croak "Cannot open buffer/file: $AnyUncompressError" ;
543 1 while $o->read($out) > 0 ;
545 croak "Error uncompressing -- " . $o->error()
548 return ($o->getHeaderInfo()) ;
556 my $Error = getErrorRef($class);
561 if ($class eq 'IO::Compress::Gzip') {
564 Comment => "a comment",
565 ExtraField => ['ab' => "extra"],
568 elsif ($class eq 'IO::Compress::Zip'){
571 Comment => "a comment",
572 ZipComment => "last comment",
573 exTime => [100, 200, 300],
574 ExtraFieldLocal => ["ab" => "extra1"],
575 ExtraFieldCentral => ["cd" => "extra2"],
579 my $z = new $class( \$buffer, %params)
580 or croak "Cannot create $class object: $$Error";
584 my $unc = getInverse($class);
585 anyUncompress(\$buffer) eq $data
586 or die "bad bad bad";
587 my $u = new $unc( \$buffer);
588 my $info = $u->getHeaderInfo() ;
591 return wantarray ? ($info, $buffer) : $buffer ;
597 my ($dummy, $file, $line) = caller ;
600 $file = quotemeta($file);
602 #return "/$string\\s+at $file line $line/" if $] >= 5.006 ;
603 return "/$string\\s+at /" ;
610 #return "/$string\\s+at \\(eval /" if $] > 5.006 ;
611 return "/$string\\s+at /" ;
618 my ($dummy, $file, $line) = caller ;
622 print "#\n# dumpOBJ from $file line $line @_\n" ;
626 print "#\n# dumpOBJ from $file line $line \n" ;
630 foreach my $k (keys %{ *$obj })
632 $max = length $k if length $k > $max ;
635 foreach my $k (sort keys %{ *$obj })
638 $v = '-undef-' unless defined $v;
639 my $pad = ' ' x ($max - length($k) + 2) ;
640 print "# $k$pad: [$v]\n";
650 return (0,0) if $class =~ /lzf/i;
657 eval ' use Scalar::Util "dualvar" ';
661 package CompTestUtils;
668 t/compress/CompTestUtils.pm
671 t/compress/destroy.pl
672 t/compress/generic.pl
675 t/compress/newtied.pl
676 t/compress/oneshot.pl
679 t/compress/truncate.pl
680 t/compress/zlib-generic.plParsing config.in...
681 Building Zlib enabled
682 Auto Detect Gzip OS Code..
683 Setting Gzip OS Code to 3 [Unix/Default]