This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Compress::Zlib 1.35
[perl5.git] / ext / Compress / Zlib / t / 05gzsetp.t
1
2
3 use strict ;
4 use warnings ;
5
6 use Compress::Zlib ;
7
8 if (Compress::Zlib::ZLIB_VERNUM() < 0x1060 )
9 {
10     my $ver = Compress::Zlib::zlib_version();
11     print "1..0 # gzsetparams needs zlib 1.0.6 or better. You have $ver\n";
12     exit 0 ;
13 }
14
15 sub ok
16 {
17     my ($no, $ok) = @_ ;
18
19     #++ $total ;
20     #++ $totalBad unless $ok ;
21
22     print "ok $no\n" if $ok ;
23     print "not ok $no\n" unless $ok ;
24 }
25
26 print "1..11\n" ;
27
28 # Check zlib_version and ZLIB_VERSION are the same.
29 ok(1, Compress::Zlib::zlib_version eq ZLIB_VERSION) ;
30
31
32 {
33     # gzsetparams
34
35     my $hello = "I am a HAL 9000 computer" x 2001 ;
36     my $len_hello = length $hello ;
37     my $goodbye = "Will I dream?" x 2010;
38     my $len_goodbye = length $goodbye;
39
40     my ($input, $err, $answer, $X, $status, $Answer);
41      
42     my $name = "test.gz" ;
43     unlink $name ;
44     ok(2, my $x = gzopen($name, "wb")) ;
45
46     ok(3, $x->gzwrite($hello) == $len_hello) ;
47     $input .= $hello;
48     
49     # error cases
50     eval { $x->gzsetparams() };
51     ok(4, $@ =~ /^Usage: Compress::Zlib::gzFile::gzsetparams\(file, level, strategy\) at/);
52
53     # change both Level & Strategy
54     $status = $x->gzsetparams(Z_BEST_SPEED, Z_HUFFMAN_ONLY) ;
55     ok(5, $status == Z_OK) ;
56     
57     ok(6, $x->gzwrite($goodbye) == $len_goodbye) ;
58     $input .= $goodbye;
59     
60     ok(7, ! $x->gzclose ) ;
61
62     ok(8, my $k = gzopen($name, "rb")) ;
63      
64     my $len = length $input ;
65     my $uncompressed;
66     ok(9, $k->gzread($uncompressed, $len) == $len) ;
67
68     ok(10, $uncompressed  eq $input ) ;
69     ok(11, ! $k->gzclose ) ;
70     unlink $name ;
71 }
72