@@ -164,62 +164,64 @@ include("utils.jl")
164164 @test CodecZstd. find_decompressed_size (v) == CodecZstd. ZSTD_CONTENTSIZE_ERROR
165165 end
166166
167- @testset " pledgeinsize" begin
168- # when pledgeinsize is available transcode should save the
169- # decompressed size in a header
170- for n in [0 : 30 ; 1000 ; 1000000 ;]
171- v = transcode (ZstdCompressor, rand (UInt8, n))
172- @test CodecZstd. find_decompressed_size (v) == n
173- end
174-
175- # Test what happens if pledgeinsize promise is broken
176- d1 = zeros (UInt8, 10000 )
177- d2 = zeros (UInt8, 10000 )
178- GC. @preserve d1 d2 begin
179- @testset " too many bytes" begin
180- m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
181- m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
182- codec = ZstdCompressor ()
183- e = TranscodingStreams. Error ()
184- @test TranscodingStreams. startproc (codec, :read , e) === :ok
185- @test TranscodingStreams. pledgeinsize (codec, Int64 (10 ), e) === :ok
186- @test TranscodingStreams. process (codec, m1, m2, e) === (0 , 0 , :error )
187- @test e[] == ErrorException (" zstd error: Src size is incorrect" )
188- TranscodingStreams. finalize (codec)
189- end
190- @testset " too few bytes" begin
191- m1 = TranscodingStreams. Memory (pointer (d1), 10 )
192- m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
193- codec = ZstdCompressor ()
194- e = TranscodingStreams. Error ()
195- @test TranscodingStreams. startproc (codec, :read , e) === :ok
196- @test TranscodingStreams. pledgeinsize (codec, Int64 (10000 ), e) === :ok
197- @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
198- m1 = TranscodingStreams. Memory (pointer (d1), 0 )
199- @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :error
200- @test e[] == ErrorException (" zstd error: Src size is incorrect" )
201- TranscodingStreams. finalize (codec)
202- end
203- @testset " set pledgeinsize after process" begin
204- m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
205- m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
206- codec = ZstdCompressor ()
207- e = TranscodingStreams. Error ()
208- @test TranscodingStreams. startproc (codec, :read , e) === :ok
209- @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
210- @test TranscodingStreams. pledgeinsize (codec, Int64 (10000 ), e) === :error
211- @test e[] == ErrorException (" zstd error setting pledged source size" )
212- TranscodingStreams. finalize (codec)
167+ if isdefined (TranscodingStreams, :pledgeinsize )
168+ @testset " pledgeinsize" begin
169+ # when pledgeinsize is available transcode should save the
170+ # decompressed size in a header
171+ for n in [0 : 30 ; 1000 ; 1000000 ;]
172+ v = transcode (ZstdCompressor, rand (UInt8, n))
173+ @test CodecZstd. find_decompressed_size (v) == n
213174 end
214- @testset " set unknown pledgeinsize" begin
215- m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
216- m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
217- codec = ZstdCompressor ()
218- e = TranscodingStreams. Error ()
219- @test TranscodingStreams. startproc (codec, :read , e) === :ok
220- @test TranscodingStreams. pledgeinsize (codec, Int64 (- 1 ), e) === :ok
221- @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
222- TranscodingStreams. finalize (codec)
175+
176+ # Test what happens if pledgeinsize promise is broken
177+ d1 = zeros (UInt8, 10000 )
178+ d2 = zeros (UInt8, 10000 )
179+ GC. @preserve d1 d2 begin
180+ @testset " too many bytes" begin
181+ m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
182+ m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
183+ codec = ZstdCompressor ()
184+ e = TranscodingStreams. Error ()
185+ @test TranscodingStreams. startproc (codec, :read , e) === :ok
186+ @test TranscodingStreams. pledgeinsize (codec, Int64 (10 ), e) === :ok
187+ @test TranscodingStreams. process (codec, m1, m2, e) === (0 , 0 , :error )
188+ @test e[] == ErrorException (" zstd error: Src size is incorrect" )
189+ TranscodingStreams. finalize (codec)
190+ end
191+ @testset " too few bytes" begin
192+ m1 = TranscodingStreams. Memory (pointer (d1), 10 )
193+ m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
194+ codec = ZstdCompressor ()
195+ e = TranscodingStreams. Error ()
196+ @test TranscodingStreams. startproc (codec, :read , e) === :ok
197+ @test TranscodingStreams. pledgeinsize (codec, Int64 (10000 ), e) === :ok
198+ @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
199+ m1 = TranscodingStreams. Memory (pointer (d1), 0 )
200+ @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :error
201+ @test e[] == ErrorException (" zstd error: Src size is incorrect" )
202+ TranscodingStreams. finalize (codec)
203+ end
204+ @testset " set pledgeinsize after process" begin
205+ m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
206+ m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
207+ codec = ZstdCompressor ()
208+ e = TranscodingStreams. Error ()
209+ @test TranscodingStreams. startproc (codec, :read , e) === :ok
210+ @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
211+ @test TranscodingStreams. pledgeinsize (codec, Int64 (10000 ), e) === :error
212+ @test e[] == ErrorException (" zstd error setting pledged source size" )
213+ TranscodingStreams. finalize (codec)
214+ end
215+ @testset " set unknown pledgeinsize" begin
216+ m1 = TranscodingStreams. Memory (pointer (d1), 1000 )
217+ m2 = TranscodingStreams. Memory (pointer (d2), 1000 )
218+ codec = ZstdCompressor ()
219+ e = TranscodingStreams. Error ()
220+ @test TranscodingStreams. startproc (codec, :read , e) === :ok
221+ @test TranscodingStreams. pledgeinsize (codec, Int64 (- 1 ), e) === :ok
222+ @test TranscodingStreams. process (codec, m1, m2, e)[3 ] === :ok
223+ TranscodingStreams. finalize (codec)
224+ end
223225 end
224226 end
225227 end
0 commit comments