diff options
Diffstat (limited to 'tests/io_mem_stream.rs')
-rw-r--r-- | tests/io_mem_stream.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/io_mem_stream.rs b/tests/io_mem_stream.rs index 520391a..3d9941d 100644 --- a/tests/io_mem_stream.rs +++ b/tests/io_mem_stream.rs @@ -101,3 +101,22 @@ async fn max_write_size() { // drop b only after task t1 finishes writing drop(b); } + +#[tokio::test] +async fn duplex_is_cooperative() { + let (mut tx, mut rx) = tokio::io::duplex(1024 * 8); + + tokio::select! { + biased; + + _ = async { + loop { + let buf = [3u8; 4096]; + tx.write_all(&buf).await.unwrap(); + let mut buf = [0u8; 4096]; + let _ = rx.read(&mut buf).await.unwrap(); + } + } => {}, + _ = tokio::task::yield_now() => {} + } +} |