1 #![warn(rust_2018_idioms)] 2 #![cfg(feature = "full")] 3 4 use tokio::io::AsyncWriteExt; 5 6 #[tokio::test] sink_poll_write_is_cooperative()7async fn sink_poll_write_is_cooperative() { 8 tokio::select! { 9 biased; 10 _ = async { 11 loop { 12 let buf = vec![1, 2, 3]; 13 tokio::io::sink().write_all(&buf).await.unwrap(); 14 } 15 } => {}, 16 _ = tokio::task::yield_now() => {} 17 } 18 } 19 20 #[tokio::test] sink_poll_flush_is_cooperative()21async fn sink_poll_flush_is_cooperative() { 22 tokio::select! { 23 biased; 24 _ = async { 25 loop { 26 tokio::io::sink().flush().await.unwrap(); 27 } 28 } => {}, 29 _ = tokio::task::yield_now() => {} 30 } 31 } 32 33 #[tokio::test] sink_poll_shutdown_is_cooperative()34async fn sink_poll_shutdown_is_cooperative() { 35 tokio::select! { 36 biased; 37 _ = async { 38 loop { 39 tokio::io::sink().shutdown().await.unwrap(); 40 } 41 } => {}, 42 _ = tokio::task::yield_now() => {} 43 } 44 } 45