|
1 | 1 | use super::{repeat, Cursor, SeekFrom};
|
2 | 2 | use crate::cmp::{self, min};
|
3 | 3 | use crate::io::{self, IoSlice, IoSliceMut};
|
4 |
| -use crate::io::{BufRead, Read, Seek, Write}; |
| 4 | +use crate::io::{BufRead, BufReader, Read, Seek, Write}; |
5 | 5 | use crate::ops::Deref;
|
6 | 6 |
|
7 | 7 | #[test]
|
@@ -198,6 +198,26 @@ fn chain_bufread() {
|
198 | 198 | cmp_bufread(chain1, chain2, &testdata[..]);
|
199 | 199 | }
|
200 | 200 |
|
| 201 | +#[test] |
| 202 | +fn bufreader_size_hint() { |
| 203 | + let testdata = b"ABCDEFGHIJKL"; |
| 204 | + let mut buf_reader = BufReader::new(&testdata[..]); |
| 205 | + assert_eq!(buf_reader.buffer().len(), 0); |
| 206 | + |
| 207 | + let buffer = buf_reader.fill_buf().unwrap(); |
| 208 | + let buffer_length = buffer.len(); |
| 209 | + |
| 210 | + // Check that size hint matches buffer contents |
| 211 | + let mut buffered_bytes = buf_reader.bytes(); |
| 212 | + let (lower_bound, _upper_bound) = buffered_bytes.size_hint(); |
| 213 | + assert_eq!(lower_bound, buffer_length); |
| 214 | + |
| 215 | + // Check that size hint matches buffer contents after advancing |
| 216 | + buffered_bytes.next().unwrap().unwrap(); |
| 217 | + let (lower_bound, _upper_bound) = buffered_bytes.size_hint(); |
| 218 | + assert_eq!(lower_bound, buffer_length - 1); |
| 219 | +} |
| 220 | + |
201 | 221 | #[test]
|
202 | 222 | fn chain_zero_length_read_is_not_eof() {
|
203 | 223 | let a = b"A";
|
|
0 commit comments