diff options
author | Carl Lerche <me@carllerche.com> | 2019-06-26 14:42:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-26 14:42:19 -0700 |
commit | 11f6b2862fc458204aabbed9a6f919c65215aeb5 (patch) | |
tree | 544c19e0b13a21f3eeb66e2eff910f37511c2b71 /tokio/tests/io_read.rs | |
parent | 8404f796ac99504ac9fbbce898e78bb02f05804a (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.rs | 41 |
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"[..]); + }); +} |