1 #![warn(rust_2018_idioms)] 2 #![cfg(feature = "full")] 3 4 use tempfile::NamedTempFile; 5 use tokio::fs::File; 6 use tokio::io::{AsyncBufReadExt, BufReader}; 7 use tokio_test::assert_ok; 8 tcp_doesnt_block()9#[tokio::test] 10 async fn fill_buf_file() { 11 let file = NamedTempFile::new().unwrap(); 12 13 assert_ok!(std::fs::write(file.path(), b"hello")); 14 15 let file = assert_ok!(File::open(file.path()).await); 16 let mut file = BufReader::new(file); 17 18 let mut contents = Vec::new(); 19 20 loop { 21 let consumed = { 22 let buffer = assert_ok!(file.fill_buf().await); 23 if buffer.is_empty() { 24 break; 25 } 26 contents.extend_from_slice(buffer); 27 buffer.len() 28 }; 29 30 file.consume(consumed); 31 } 32 33 assert_eq!(contents, b"hello"); 34 } 35