@@ -28,11 +28,9 @@ pub fn init(reader: *Reader, limit: Limit, buffer: []u8) Limited {
28
28
fn stream (r : * Reader , w : * Writer , limit : Limit ) Reader.StreamError ! usize {
29
29
const l : * Limited = @fieldParentPtr ("interface" , r );
30
30
const combined_limit = limit .min (l .remaining );
31
- if (combined_limit .nonzero ()) {
32
- const n = try l .unlimited .stream (w , combined_limit );
33
- l .remaining = l .remaining .subtract (n ).? ;
34
- return n ;
35
- } else return error .EndOfStream ;
31
+ const n = try l .unlimited .stream (w , combined_limit );
32
+ l .remaining = l .remaining .subtract (n ).? ;
33
+ return n ;
36
34
}
37
35
38
36
test stream {
@@ -51,64 +49,6 @@ test stream {
51
49
try std .testing .expectEqualStrings ("test" , result_buf [0.. streamed ]);
52
50
}
53
51
54
- test "readSliceAll from infinite source" {
55
- const InfSource = struct {
56
- reader : std.Io.Reader ,
57
-
58
- pub fn init (buffer : []u8 ) @This () {
59
- return @This (){
60
- .reader = .{
61
- .vtable = &.{
62
- .stream = streamA ,
63
- },
64
- .buffer = buffer ,
65
- .seek = 0 ,
66
- .end = 0 ,
67
- },
68
- };
69
- }
70
-
71
- fn streamA (io_reader : * std.Io.Reader , w : * std.Io.Writer , limit : std.Io.Limit ) std.Io.Reader.StreamError ! usize {
72
- _ = io_reader ;
73
-
74
- std .debug .assert (limit .nonzero ());
75
-
76
- const n_bytes_remaining = limit .minInt (2 );
77
- for (0.. n_bytes_remaining ) | _ | {
78
- try w .writeByte ('A' );
79
- }
80
- return n_bytes_remaining ;
81
- }
82
- };
83
-
84
- // Exact size
85
- {
86
- var inf_buf : [10 ]u8 = undefined ;
87
- var inf_stream = InfSource .init (& inf_buf );
88
-
89
- var limit_buf : [2 ]u8 = undefined ;
90
- var limited : std.Io.Reader.Limited = .init (& inf_stream .reader , .limited (2 ), & limit_buf );
91
- const limited_reader = & limited .interface ;
92
-
93
- var out_buffer : [2 ]u8 = undefined ;
94
- try std .testing .expectEqual ({}, limited_reader .readSliceAll (& out_buffer ));
95
- try std .testing .expectEqualStrings ("AA" , & out_buffer );
96
- }
97
-
98
- // Too large
99
- {
100
- var inf_buf : [10 ]u8 = undefined ;
101
- var inf_stream = InfSource .init (& inf_buf );
102
-
103
- var limit_buf : [2 ]u8 = undefined ;
104
- var limited : std.Io.Reader.Limited = .init (& inf_stream .reader , .limited (2 ), & limit_buf );
105
- const limited_reader = & limited .interface ;
106
-
107
- var out_buffer : [8 ]u8 = undefined ;
108
- try std .testing .expectError (error .EndOfStream , limited_reader .readSliceAll (& out_buffer ));
109
- }
110
- }
111
-
112
52
fn discard (r : * Reader , limit : Limit ) Reader.Error ! usize {
113
53
const l : * Limited = @fieldParentPtr ("interface" , r );
114
54
const combined_limit = limit .min (l .remaining );
0 commit comments