@@ -204,8 +204,8 @@ fn bufreader_size_hint() {
204
204
let mut buf_reader = BufReader :: new ( & testdata[ ..] ) ;
205
205
assert_eq ! ( buf_reader. buffer( ) . len( ) , 0 ) ;
206
206
207
- let buffer = buf_reader . fill_buf ( ) . unwrap ( ) ;
208
- let buffer_length = buffer . len ( ) ;
207
+ let buffer_length = testdata . len ( ) ;
208
+ buf_reader . fill_buf ( ) . unwrap ( ) ;
209
209
210
210
// Check that size hint matches buffer contents
211
211
let mut buffered_bytes = buf_reader. bytes ( ) ;
@@ -218,6 +218,33 @@ fn bufreader_size_hint() {
218
218
assert_eq ! ( lower_bound, buffer_length - 1 ) ;
219
219
}
220
220
221
+ #[ test]
222
+ fn empty_size_hint ( ) {
223
+ let size_hint = io:: empty ( ) . bytes ( ) . size_hint ( ) ;
224
+ assert_eq ! ( size_hint, ( 0 , Some ( 0 ) ) ) ;
225
+ }
226
+
227
+ #[ test]
228
+ fn chain_empty_size_hint ( ) {
229
+ let chain = io:: empty ( ) . chain ( io:: empty ( ) ) ;
230
+ let size_hint = chain. bytes ( ) . size_hint ( ) ;
231
+ assert_eq ! ( size_hint, ( 0 , Some ( 0 ) ) ) ;
232
+ }
233
+
234
+ #[ test]
235
+ fn chain_size_hint ( ) {
236
+ let testdata = b"ABCDEFGHIJKL" ;
237
+ let mut buf_reader_1 = BufReader :: new ( & testdata[ ..6 ] ) ;
238
+ let mut buf_reader_2 = BufReader :: new ( & testdata[ 6 ..] ) ;
239
+
240
+ buf_reader_1. fill_buf ( ) . unwrap ( ) ;
241
+ buf_reader_2. fill_buf ( ) . unwrap ( ) ;
242
+
243
+ let chain = buf_reader_1. chain ( buf_reader_2) ;
244
+ let size_hint = chain. bytes ( ) . size_hint ( ) ;
245
+ assert_eq ! ( size_hint, ( testdata. len( ) , None ) ) ;
246
+ }
247
+
221
248
#[ test]
222
249
fn chain_zero_length_read_is_not_eof ( ) {
223
250
let a = b"A" ;
0 commit comments