Skip to content

Commit 9f342c6

Browse files
authored
Add test_roundtrip_seekstart function to help test that seekstart resets the state of the codec (#218)
1 parent 7893d74 commit 9f342c6

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

ext/TestExt.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,24 @@ function TranscodingStreams.test_roundtrip_lines(encoder, decoder)
6262
Test.@test hash(lines) == hash(readlines(decoder(buf)))
6363
end
6464

65+
function TranscodingStreams.test_roundtrip_seekstart(encoder, decoder)
66+
seed!(TEST_RANDOM_SEED)
67+
for n in vcat(0:30, sort!(rand(500:100_000, 30))), alpha in (0x00:0xff, 0x00:0x0f)
68+
data = rand(alpha, n)
69+
file = IOBuffer(data)
70+
stream = decoder(encoder(file))
71+
for m in vcat(0:min(n,20), rand(0:n, 10))
72+
Test.@test read(stream, m) == @view(data[1:m])
73+
seekstart(stream)
74+
end
75+
seekstart(stream)
76+
Test.@test read(stream) == data
77+
seekstart(stream)
78+
Test.@test read(stream) == data
79+
close(stream)
80+
end
81+
end
82+
6583
function TranscodingStreams.test_roundtrip_fileio(Encoder, Decoder)
6684
data = b"""
6785
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sit amet tempus felis. Etiam molestie urna placerat iaculis pellentesque. Maecenas porttitor et dolor vitae posuere. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eget nibh quam. Nullam aliquet interdum fringilla. Duis facilisis, lectus in consectetur varius, lorem sem tempor diam, nec auctor tellus nibh sit amet sapien. In ex nunc, elementum eget facilisis ut, luctus eu orci. Sed sapien urna, accumsan et elit non, auctor pretium massa. Phasellus consectetur nisi suscipit blandit aliquam. Nulla facilisi. Mauris pellentesque sem sit amet mi vestibulum eleifend. Nulla faucibus orci ac lorem efficitur, et blandit orci interdum. Aenean posuere ultrices ex sed rhoncus. Donec malesuada mollis sem, sed varius nunc sodales sed. Curabitur lobortis non justo non tristique.

src/TranscodingStreams.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function test_roundtrip_read end
2121
function test_roundtrip_write end
2222
function test_roundtrip_transcode end
2323
function test_roundtrip_lines end
24+
function test_roundtrip_seekstart end
2425
function test_roundtrip_fileio end
2526
function test_chunked_read end
2627
function test_chunked_write end

test/codecdoubleframe.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ using TranscodingStreams:
77
test_roundtrip_read,
88
test_roundtrip_write,
99
test_roundtrip_lines,
10+
test_roundtrip_seekstart,
1011
test_roundtrip_transcode,
1112
test_roundtrip_fileio,
1213
test_chunked_read,
@@ -305,6 +306,7 @@ DoubleFrameDecoderStream(stream::IO; kwargs...) = TranscodingStream(DoubleFrameD
305306
test_roundtrip_read(DoubleFrameEncoderStream, DoubleFrameDecoderStream)
306307
test_roundtrip_write(DoubleFrameEncoderStream, DoubleFrameDecoderStream)
307308
test_roundtrip_lines(DoubleFrameEncoderStream, DoubleFrameDecoderStream)
309+
test_roundtrip_seekstart(DoubleFrameEncoderStream, DoubleFrameDecoderStream)
308310
test_roundtrip_transcode(DoubleFrameEncoder, DoubleFrameDecoder)
309311
test_roundtrip_fileio(DoubleFrameEncoder, DoubleFrameDecoder)
310312
test_chunked_read(DoubleFrameEncoder, DoubleFrameDecoder)

test/codecnoop.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ using FillArrays: Zeros
254254
TranscodingStreams.test_roundtrip_read(NoopStream, NoopStream)
255255
TranscodingStreams.test_roundtrip_write(NoopStream, NoopStream)
256256
TranscodingStreams.test_roundtrip_lines(NoopStream, NoopStream)
257+
TranscodingStreams.test_roundtrip_seekstart(NoopStream, NoopStream)
257258

258259
@testset "switch write => read" begin
259260
stream = NoopStream(IOBuffer(collect(b"foobar"), read=true, write=true))

0 commit comments

Comments
 (0)