summaryrefslogtreecommitdiffstats
path: root/tokio/tests/io_read.rs
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-06-26 14:42:19 -0700
committerGitHub <noreply@github.com>2019-06-26 14:42:19 -0700
commit11f6b2862fc458204aabbed9a6f919c65215aeb5 (patch)
tree544c19e0b13a21f3eeb66e2eff910f37511c2b71 /tokio/tests/io_read.rs
parent8404f796ac99504ac9fbbce898e78bb02f05804a (diff)
tokio: move I/O helpers to ext traits (#1204)
Refs: #1203
Diffstat (limited to 'tokio/tests/io_read.rs')
-rw-r--r--tokio/tests/io_read.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/tokio/tests/io_read.rs b/tokio/tests/io_read.rs
new file mode 100644
index 00000000..8544a6c6
--- /dev/null
+++ b/tokio/tests/io_read.rs
@@ -0,0 +1,41 @@
+#![deny(warnings, rust_2018_idioms)]
+
+use tokio::io::{AsyncRead, AsyncReadExt};
+use tokio_test::assert_ready_ok;
+use tokio_test::task::MockTask;
+
+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;
+
+ impl AsyncRead for Rd {
+ fn poll_read(
+ self: Pin<&mut Self>,
+ _cx: &mut Context<'_>,
+ buf: &mut [u8],
+ ) -> Poll<io::Result<usize>> {
+ 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 n = assert_ready_ok!(read.poll(cx));
+ assert_eq!(n, 11);
+ assert_eq!(buf[..], b"hello world"[..]);
+ });
+}