diff options
Diffstat (limited to 'tokio/tests/io_copy.rs')
-rw-r--r-- | tokio/tests/io_copy.rs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/tokio/tests/io_copy.rs b/tokio/tests/io_copy.rs deleted file mode 100644 index 2fac7e85..00000000 --- a/tokio/tests/io_copy.rs +++ /dev/null @@ -1,61 +0,0 @@ -#![deny(warnings, rust_2018_idioms)] -#![feature(async_await)] - -use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite}; -use tokio_test::assert_ok; - -use bytes::BytesMut; -use std::io; -use std::pin::Pin; -use std::task::{Context, Poll}; - -#[tokio::test] -async fn copy() { - struct Rd(bool); - - impl AsyncRead for Rd { - fn poll_read( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - buf: &mut [u8], - ) -> Poll<io::Result<usize>> { - if self.0 { - buf[0..11].copy_from_slice(b"hello world"); - self.0 = false; - Poll::Ready(Ok(11)) - } else { - Poll::Ready(Ok(0)) - } - } - } - - struct Wr(BytesMut); - - impl Unpin for Wr {} - impl AsyncWrite for Wr { - fn poll_write( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll<io::Result<usize>> { - self.0.extend(buf); - Ok(buf.len()).into() - } - - fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<io::Result<()>> { - Ok(()).into() - } - - fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<io::Result<()>> { - Ok(()).into() - } - } - - let buf = BytesMut::with_capacity(64); - let mut rd = Rd(true); - let mut wr = Wr(buf); - - let n = assert_ok!(rd.copy(&mut wr).await); - assert_eq!(n, 11); - assert_eq!(wr.0[..], b"hello world"[..]); -} |