Skip to content

Commit c04cfa2

Browse files
authored
add seek operations to NoopStream (#26)
1 parent 515dd0f commit c04cfa2

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/noop.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,24 @@ function TranscodingStream(codec::Noop, stream::IO;
4141
return TranscodingStream(codec, stream, State(buffer, buffer))
4242
end
4343

44+
function Base.seek(stream::NoopStream, pos::Integer)
45+
seek(stream.stream, pos)
46+
initbuffer!(stream.state.buffer1)
47+
return
48+
end
49+
50+
function Base.seekstart(stream::NoopStream)
51+
seekstart(stream.stream)
52+
initbuffer!(stream.state.buffer1)
53+
return
54+
end
55+
56+
function Base.seekend(stream::NoopStream)
57+
seekend(stream.stream)
58+
initbuffer!(stream.state.buffer1)
59+
return
60+
end
61+
4462
function Base.unsafe_read(stream::NoopStream, output::Ptr{UInt8}, nbytes::UInt)
4563
changemode!(stream, :read)
4664
buffer = stream.state.buffer1

test/runtests.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ end
9595
@test !ismarked(stream)
9696
close(stream)
9797

98+
stream = TranscodingStream(Noop(), IOBuffer(b"foobarbaz"))
99+
seek(stream, 2)
100+
@test read(stream, 3) == b"oba"
101+
seek(stream, 0)
102+
@test read(stream, 3) == b"foo"
103+
seekstart(stream)
104+
@test read(stream, 3) == b"foo"
105+
seekend(stream)
106+
@test eof(stream)
107+
close(stream)
108+
98109
data = collect(0x00:0x0f)
99110
stream = TranscodingStream(Noop(), IOBuffer(data))
100111
@test read(stream, UInt8) == data[1]

0 commit comments

Comments
 (0)