diff options
author | Carl Lerche <me@carllerche.com> | 2019-06-26 17:06:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-26 17:06:56 -0700 |
commit | 1f47ed3dcc4b582315cdbfb195495d7d4c76d3f3 (patch) | |
tree | 0b9ca199a6b5e5539d75e4fe46dbc7563bb1b20c /tokio/tests/io_read.rs | |
parent | e9aaacddbda25eeb56a40e4f5e85d616d5e08b74 (diff) |
tokio: rewrite io_read.rs test to use async/await (#1207)
This simplifies the test
Diffstat (limited to 'tokio/tests/io_read.rs')
-rw-r--r-- | tokio/tests/io_read.rs | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/tokio/tests/io_read.rs b/tokio/tests/io_read.rs index 8544a6c6..b1fc42c4 100644 --- a/tokio/tests/io_read.rs +++ b/tokio/tests/io_read.rs @@ -1,41 +1,38 @@ #![deny(warnings, rust_2018_idioms)] +#![feature(async_await)] use tokio::io::{AsyncRead, AsyncReadExt}; -use tokio_test::assert_ready_ok; -use tokio_test::task::MockTask; +use tokio_test::assert_ok; -use pin_utils::pin_mut; -use std::future::Future; use std::io; use std::pin::Pin; use std::task::{Context, Poll}; -#[test] -fn read() { - struct Rd; +#[tokio::test] +async fn read() { + #[derive(Default)] + struct Rd { + poll_cnt: usize, + } impl AsyncRead for Rd { fn poll_read( - self: Pin<&mut Self>, + mut self: Pin<&mut Self>, _cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<io::Result<usize>> { + assert_eq!(0, self.poll_cnt); + self.poll_cnt +=1 ; + buf[0..11].copy_from_slice(b"hello world"); Poll::Ready(Ok(11)) } } let mut buf = Box::new([0; 11]); - let mut task = MockTask::new(); - - task.enter(|cx| { - let mut rd = Rd; - - let read = rd.read(&mut buf[..]); - pin_mut!(read); + let mut rd = Rd::default(); - let n = assert_ready_ok!(read.poll(cx)); - assert_eq!(n, 11); - assert_eq!(buf[..], b"hello world"[..]); - }); + let n = assert_ok!(rd.read(&mut buf[..]).await); + assert_eq!(n, 11); + assert_eq!(buf[..], b"hello world"[..]); } |