fix codetest failure - assert args
[parrot.git] / t / dynpmc / gziphandle.t
blob18e36ddab612a8ba4cdd963709335c496d7c0278
1 #!./parrot
2 # Copyright (C) 2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/dynpmc/gziphandle.t - test the GzipHandle PMC
9 =head1 SYNOPSIS
11         % parrot t/dynpmc/gziphandle.t
13 =head1 DESCRIPTION
15 Tests the C<GzipHandle> PMC, a zlib wrapper.
17 =cut
19 .sub 'main' :main
20     .include 'test_more.pir'
21     .include 'iglobals.pasm'
22     .local pmc config_hash, interp
23     .local int num_tests
25     num_tests = 9
26     plan(num_tests)
27     interp = getinterp
28     config_hash = interp[.IGLOBALS_CONFIG_HASH]
29     $S0 = config_hash['has_zlib']
30     unless $S0 goto no_zlib
32     $P0 = loadlib 'gziphandle'
33     test_handle()
34     test_stream()
35     test_version()
36     test_basic()
37     .return()
39   no_zlib:
40     skip(num_tests, 'No zlib library available')
41     .return()
42 .end
45 .sub 'test_handle'
46     $P0 = new 'GzipHandle'
47     $S0 = typeof $P0
48     is($S0, 'GzipHandle', 'GzipHandle typeof')
49     $I0 = does $P0, 'Handle'
50     ok($I0, 'does Handle')
51 .end
53 .include 'stat.pasm'
55 .sub 'test_stream'
56     $P0 = new 'FileHandle'
57     $S0 = $P0.'readall'('t/dynpmc/gziphandle.t')
58     $I0 = length $S0
59     diag($I0)
60     .const string filename = 't/dynpmc/gziphandle.t.gz'
61     $P1 = new 'GzipHandle'
62     $P1.'open'(filename, 'wb')
63     $P1.'puts'($S0)
64     $P1.'close'()
65     $I1 = stat filename, .STAT_FILESIZE
66     diag($I1)
67     $I2 = $I1 < $I0
68     ok($I2, "compressed")
69     $P2 = new 'GzipHandle'
70     $P2.'open'(filename, 'rb')
71     $S1 = $P2.'read'($I0)
72     $P2.'close'()
73     is($S1, $S0, "gzip stream")
74     $P0 = loadlib 'os'
75     $P0 = new 'OS'
76     $P0.'rm'(filename)
77 .end
79 .sub 'test_version'
80     $P0 = new 'GzipHandle'
81     $S0 =$P0.'version'()
82     diag($S0)
83     $I0 = index $S0, '1.'
84     is($I0, 0, 'zlib version')
85 .end
87 .sub 'test_basic'
88     $P0 = new 'GzipHandle'
89     .const string data = "message"
90     $I0 = $P0.'crc32'(0, data)
91     ok($I0, "crc32")
92     $S0 = $P0.'compress'(data)
93     $I0 = length $S0
94     is($I0, 15, "compress")
95     $S0 = $P0.'uncompress'($S0)
96     is($S0, data, "uncompress")
98     $S0 = repeat 'repeat', 100
99     $I0 = length $S0
100     $S1 = $P0.'compress'($S0)
101     $I1 = length $S1
102     $N0 = $I1 / $I0
103     diag($N0)
104     $S2 = $P0.'uncompress'($S1)
105     is($S2, $S0, "uncompress with many realloc")
106 .end
108 # Local Variables:
109 #   mode: pir
110 #   fill-column: 100
111 # End:
112 # vim: expandtab shiftwidth=4 ft=pir: