File tree Expand file tree Collapse file tree 2 files changed +38
-2
lines changed Expand file tree Collapse file tree 2 files changed +38
-2
lines changed Original file line number Diff line number Diff line change @@ -76,13 +76,13 @@ pub fn (mut r StringReader) fill_buffer(read_till_end_of_stream bool) !int {
7676 }
7777
7878 for {
79- read := reader.read (mut r.builder[start ..]) or {
79+ read := reader.read (mut r.builder[end ..]) or {
8080 r.end_of_stream = true
8181 break
8282 }
8383 end + = read
8484
85- if ! read_till_end_of_stream && read == 0 {
85+ if ! read_till_end_of_stream || read == 0 {
8686 break
8787 } else if r.builder.len == end {
8888 unsafe { r.builder.grow_len (io.read_all_grow_len) }
Original file line number Diff line number Diff line change 99 i int
1010}
1111
12+ struct TwoByteReader {
13+ mut :
14+ data string
15+ pos int
16+ }
17+
1218fn (mut b Buf) read (mut buf []u8 ) ! int {
1319 if ! (b.i < b.bytes.len) {
1420 return io.Eof{}
@@ -18,6 +24,18 @@ fn (mut b Buf) read(mut buf []u8) !int {
1824 return n
1925}
2026
27+ fn (mut r TwoByteReader) read (mut buf []u8 ) ! int {
28+ if r.pos > = r.data.len {
29+ return io.Eof{}
30+ }
31+ min := int_min (r.data.len - r.pos, 2 )
32+ for i in 0 .. min {
33+ buf[i] = r.data[r.pos]
34+ r.pos++
35+ }
36+ return min
37+ }
38+
2139fn test_read_all () {
2240 mut reader := StringReader.new ()
2341
@@ -122,3 +140,21 @@ fn test_flush() {
122140 assert reader.offset == 0
123141 assert reader.builder.len == 0
124142}
143+
144+ fn test_fill_buffer_true () {
145+ mut two := TwoByteReader{
146+ data: '12345'
147+ }
148+ mut reader := StringReader.new (reader: two)
149+ assert reader.fill_buffer (true )! == 5
150+ assert reader.get_string () == '12345'
151+ }
152+
153+ fn test_fill_buffer_false () {
154+ mut two := TwoByteReader{
155+ data: '12345'
156+ }
157+ mut reader := StringReader.new (reader: two)
158+ assert reader.fill_buffer (false )! == 2
159+ assert reader.get_string () == '12'
160+ }
You can’t perform that action at this time.
0 commit comments