Skip to content

Commit 389e638

Browse files
committed
Add tests for SizeHint implementations
1 parent 96255f8 commit 389e638

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

library/std/src/io/tests.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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]
222249
fn chain_zero_length_read_is_not_eof() {
223250
let a = b"A";

0 commit comments

Comments
 (0)