diff --git a/ext/TestExt.jl b/ext/TestExt.jl index 2c045d4d..cac67dd8 100644 --- a/ext/TestExt.jl +++ b/ext/TestExt.jl @@ -97,4 +97,24 @@ function TranscodingStreams.test_chunked_read(Encoder, Decoder) finalize(encoder) end +function TranscodingStreams.test_chunked_write(Encoder, Decoder) + seed!(TEST_RANDOM_SEED) + alpha = b"空即是色" + encoder = Encoder() + initialize(encoder) + for _ in 1:500 + chunks = [rand(alpha, rand(0:100)) for _ in 1:2] + data = map(x->transcode(encoder, x), chunks) + buffer = IOBuffer() + stream = TranscodingStream(Decoder(), buffer, stop_on_end=true) + write(stream, vcat(data...)) + close(stream) + ok = true + ok &= hash(take!(buffer)) == hash(vcat(chunks...)) + ok &= buffersize(stream.state.buffer1) == 0 + Test.@test ok + end + finalize(encoder) +end + end # module diff --git a/test/codecdoubleframe.jl b/test/codecdoubleframe.jl index 318ef1aa..95151350 100644 --- a/test/codecdoubleframe.jl +++ b/test/codecdoubleframe.jl @@ -248,4 +248,5 @@ DoubleFrameDecoderStream(stream::IO; kwargs...) = TranscodingStream(DoubleFrameD test_roundtrip_transcode(DoubleFrameEncoder, DoubleFrameDecoder) test_roundtrip_fileio(DoubleFrameEncoder, DoubleFrameDecoder) test_chunked_read(DoubleFrameEncoder, DoubleFrameDecoder) + test_chunked_write(DoubleFrameEncoder, DoubleFrameDecoder) end