@@ -204,8 +204,8 @@ fn bufreader_size_hint() {
204204 let mut buf_reader = BufReader :: new ( & testdata[ ..] ) ;
205205 assert_eq ! ( buf_reader. buffer( ) . len( ) , 0 ) ;
206206
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 ( ) ;
209209
210210 // Check that size hint matches buffer contents
211211 let mut buffered_bytes = buf_reader. bytes ( ) ;
@@ -218,6 +218,33 @@ fn bufreader_size_hint() {
218218 assert_eq ! ( lower_bound, buffer_length - 1 ) ;
219219}
220220
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+
221248#[ test]
222249fn chain_zero_length_read_is_not_eof ( ) {
223250 let a = b"A" ;
0 commit comments