File tree Expand file tree Collapse file tree 2 files changed +19
-8
lines changed Expand file tree Collapse file tree 2 files changed +19
-8
lines changed Original file line number Diff line number Diff line change 283
283
284
284
function Base. seekstart (stream:: TranscodingStream )
285
285
mode = stream. state. mode
286
- @checkmode (:idle , :read , :write )
287
- if mode == :read || mode == :write
286
+ @checkmode (:idle , :read )
287
+ if mode == :read
288
288
callstartproc (stream, mode)
289
289
emptybuffer! (stream. state. buffer1)
290
290
emptybuffer! (stream. state. buffer2)
Original file line number Diff line number Diff line change @@ -108,19 +108,30 @@ end
108
108
end
109
109
end
110
110
111
+ @testset " seekstart" begin
112
+ data = Vector (b " abracadabra" )
113
+ source = IOBuffer (data)
114
+ seekend (source)
115
+ stream = TranscodingStream (QuadrupleCodec (), source, bufsize= 16 )
116
+ @test seekstart (stream) == stream
117
+ @test position (stream) == 0
118
+ @test read (stream, 5 ) == b " aaaab"
119
+ @test position (stream) == 5
120
+ @test seekstart (stream) == stream
121
+ @test_broken position (stream) == 0
122
+ @test read (stream, 5 ) == b " aaaab"
123
+ @test_broken position (stream) == 5
124
+ end
125
+
111
126
@testset " seekstart doesn't delete data" begin
112
127
sink = IOBuffer ()
113
128
stream = TranscodingStream (QuadrupleCodec (), sink, bufsize= 16 )
114
129
write (stream, " x" )
115
130
# seekstart must not delete user data even if it errors.
116
- try
117
- seekstart (stream)
118
- catch e
119
- e isa ArgumentError || rethrow ()
120
- end
131
+ @test_throws ArgumentError seekstart (stream)
121
132
write (stream, TranscodingStreams. TOKEN_END)
122
133
flush (stream)
123
- @test_broken take! (sink) == b " xxxx"
134
+ @test take! (sink) == b " xxxx"
124
135
close (stream)
125
136
end
126
137
end
You can’t perform that action at this time.
0 commit comments