Update Compress Modules to version 2.002
[p5sagit/p5-mst-13.2.git] / ext / Compress / Zlib / t / 03zlib-v1.t
index de81966..0ad5440 100644 (file)
@@ -1,17 +1,17 @@
 BEGIN {
-    if ($ENV{PERL_CORE} {
+    if ($ENV{PERL_CORE}) {
        chdir 't' if -d 't';
-       @INC = '../lib';
+       @INC = ("../lib", "lib/compress");
     }
 }
 
-use lib 't';
+use lib qw(t t/compress);
 use strict;
 use warnings;
 use bytes;
 
 use Test::More ;
-use ZlibTestUtils;
+use CompTestUtils;
 use Symbol;
 
 BEGIN 
@@ -23,17 +23,17 @@ BEGIN
 
     my $count = 0 ;
     if ($] < 5.005) {
-        $count = 340 ;
+        $count = 383 ;
     }
     else {
-        $count = 351 ;
+        $count = 394 ;
     }
 
 
     plan tests => $count + $extra ;
 
     use_ok('Compress::Zlib', 2) ;
-    use_ok('Compress::Gzip::Constants') ;
+    use_ok('IO::Compress::Gzip::Constants') ;
 
     use_ok('IO::Compress::Gzip', qw($GzipError)) ;
 }
@@ -363,7 +363,7 @@ EOM
 
     ok $uncomp eq $buffer ;
  
-    unlink $name ;
+    1 while unlink $name ;
 
     # now check that memGunzip can deal with it.
     my $ungzip = Compress::Zlib::memGunzip($dest) ;
@@ -442,7 +442,7 @@ EOM
     ok ! defined $ungzip ;
 
  
-    unlink $name ;
+    1 while unlink $name ;
 
     # check corrupt header -- too short
     $dest = "x" ;
@@ -491,6 +491,33 @@ EOM
     ok ! defined $ungzip ;
 }
 
+{
+    title "Check all bytes can be handled";
+
+    my $lex = new LexFile my $name ;
+    my $data = join '', map { chr } 0x00 .. 0xFF;
+    $data .= "\r\nabd\r\n";
+
+    my $fil;
+    ok $fil = gzopen($name, "wb") ;
+    is $fil->gzwrite($data), length $data ;
+    ok ! $fil->gzclose();
+
+    my $input;
+    ok $fil = gzopen($name, "rb") ;
+    is $fil->gzread($input), length $data ;
+    ok ! $fil->gzclose();
+    ok $input eq $data;
+
+    title "Check all bytes can be handled - transparent mode";
+    writeFile($name, $data);
+    ok $fil = gzopen($name, "rb") ;
+    is $fil->gzread($input), length $data ;
+    ok ! $fil->gzclose();
+    ok $input eq $data;
+
+}
+
 title 'memGunzip with a gzopen created file';
 {
     my $name = "test.gz" ;
@@ -511,7 +538,7 @@ EOM
     my $unc = Compress::Zlib::memGunzip($compr) ;
     ok defined $unc ;
     ok $buffer eq $unc ;
-    unlink $name ;
+    1 while unlink $name ;
 }
 
 {
@@ -671,11 +698,14 @@ EOM
     
     # error cases
     eval { $x->deflateParams() };
-    ok $@ =~ m#^Compress::Zlib::deflateParams needs Level and/or Strategy#;
+    #like $@, mkErr("^Compress::Raw::Zlib::deflateParams needs Level and/or Strategy");
+    like $@, "/^Compress::Raw::Zlib::deflateParams needs Level and/or Strategy/";
 
     eval { $x->deflateParams(-Joe => 3) };
-    ok $@ =~ /^Compress::Zlib::deflateStream::deflateParams: unknown key value\(s\) Joe at/
-        or print "# $@\n" ;
+    like $@, "/^Compress::Raw::Zlib::deflateStream::deflateParams: unknown key value/";
+    #like $@, mkErr("^Compress::Raw::Zlib::deflateStream::deflateParams: unknown key value(s) Joe");
+    #ok $@ =~ /^Compress::Zlib::deflateStream::deflateParams: unknown key value\(s\) Joe at/
+    #    or print "# $@\n" ;
 
     ok $x->get_Level()    == Z_BEST_COMPRESSION;
     ok $x->get_Strategy() == Z_DEFAULT_STRATEGY;
@@ -771,10 +801,10 @@ EOM
     ok $@ =~ /^gzopen: file parameter is not a filehandle or filename at/
        or print "# $@\n" ;
 
-    my $x = Symbol::gensym() ;
-    eval { gzopen($x, 0) ; }  ;
-    ok $@ =~ /^gzopen: file parameter is not a filehandle or filename at/
-       or print "# $@\n" ;
+#    my $x = Symbol::gensym() ;
+#    eval { gzopen($x, 0) ; }  ;
+#    ok $@ =~ /^gzopen: file parameter is not a filehandle or filename at/
+#      or print "# $@\n" ;
 
 }
 
@@ -1060,5 +1090,74 @@ EOM
 }
 
 
+sub slurp
+{
+    my $name = shift ;
 
+    my $input;
+    my $fil = gzopen($name, "rb") ;
+    ok $fil , "opened $name";
+    cmp_ok $fil->gzread($input, 50000), ">", 0, "read more than zero bytes";
+    ok ! $fil->gzclose(), "closed ok";
+
+    return $input;
+}
+
+sub trickle
+{
+    my $name = shift ;
 
+    my $got;
+    my $input;
+    $fil = gzopen($name, "rb") ;
+    ok $fil, "opened ok";
+    while ($fil->gzread($input, 50000) > 0)
+    {
+        $got .= $input;
+        $input = '';
+    }
+    ok ! $fil->gzclose(), "closed ok";
+
+    return $got;
+
+    return $input;
+}
+
+{
+
+    title "Append & MultiStream Tests";
+    # rt.24041
+
+    my $lex = new LexFile my $name ;
+    my $data1 = "the is the first";
+    my $data2 = "and this is the second";
+    my $trailing = "some trailing data";
+
+    my $fil;
+
+    title "One file";
+    $fil = gzopen($name, "wb") ;
+    ok $fil, "opened first file"; 
+    is $fil->gzwrite($data1), length $data1, "write data1" ;
+    ok ! $fil->gzclose(), "Closed";
+
+    is slurp($name), $data1, "got expected data from slurp";
+    is trickle($name), $data1, "got expected data from trickle";
+
+    title "Two files";
+    $fil = gzopen($name, "ab") ;
+    ok $fil, "opened second file"; 
+    is $fil->gzwrite($data2), length $data2, "write data2" ;
+    ok ! $fil->gzclose(), "Closed";
+
+    is slurp($name), $data1 . $data2, "got expected data from slurp";
+    is trickle($name), $data1 . $data2, "got expected data from trickle";
+
+    title "Trailing Data";
+    open F, ">>$name";
+    print F $trailing;
+    close F;
+
+    is slurp($name), $data1 . $data2 . $trailing, "got expected data from slurp" ;
+    is trickle($name), $data1 . $data2 . $trailing, "got expected data from trickle" ;
+}