summaryrefslogtreecommitdiffstats
path: root/tokio/tests/io_read.rs
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-06-26 17:06:56 -0700
committerGitHub <noreply@github.com>2019-06-26 17:06:56 -0700
commit1f47ed3dcc4b582315cdbfb195495d7d4c76d3f3 (patch)
tree0b9ca199a6b5e5539d75e4fe46dbc7563bb1b20c /tokio/tests/io_read.rs
parente9aaacddbda25eeb56a40e4f5e85d616d5e08b74 (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.rs35
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"[..]);
}