fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / dynpmc / gziphandle.t
blob5a8689d04a9528ef8a25122bb7cb8583b4eda1c4
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 .loadlib 'io_ops'
21 .sub 'main' :main
22     .include 'test_more.pir'
23     .include 'iglobals.pasm'
24     .local pmc config_hash, interp
26     interp = getinterp
27     config_hash = interp[.IGLOBALS_CONFIG_HASH]
28     $S0 = config_hash['has_zlib']
29     unless $S0 goto no_zlib
31     plan(10)
32     $P0 = loadlib 'gziphandle'
33     test_handle()
34     test_stream()
35     test_version()
36     test_basic()
37     .return()
39   no_zlib:
40     skip_all('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 = isa $P0, 'Handle'
50     ok($I0, 'isa 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     $I2 = $P2.'isatty'()
72     is($I2, 0, 'isatty')
73     $S1 = $P2.'read'($I0)
74     $P2.'close'()
75     is($S1, $S0, "gzip stream")
76     $P0 = loadlib 'os'
77     $P0 = new 'OS'
78     $P0.'rm'(filename)
79 .end
81 .sub 'test_version'
82     $P0 = new 'GzipHandle'
83     $S0 =$P0.'version'()
84     diag($S0)
85     $I0 = index $S0, '1.'
86     is($I0, 0, 'zlib version')
87 .end
89 .sub 'test_basic'
90     $P0 = new 'GzipHandle'
91     .const string data = "message"
92     $I0 = $P0.'crc32'(0, data)
93     ok($I0, "crc32")
94     $S0 = $P0.'compress'(data)
95     $I0 = length $S0
96     is($I0, 15, "compress")
97     $S0 = $P0.'uncompress'($S0)
98     is($S0, data, "uncompress")
100     $S0 = repeat 'repeat', 100
101     $I0 = length $S0
102     $S1 = $P0.'compress'($S0)
103     $I1 = length $S1
104     $N0 = $I1 / $I0
105     diag($N0)
106     $S2 = $P0.'uncompress'($S1)
107     is($S2, $S0, "uncompress with many realloc")
108 .end
110 # Local Variables:
111 #   mode: pir
112 #   fill-column: 100
113 # End:
114 # vim: expandtab shiftwidth=4 ft=pir: