futures_test::stream

Trait StreamTestExt

source
pub trait StreamTestExt: Stream {
    // Provided methods
    fn assert_unmoved(self) -> AssertUnmoved<Self> 
       where Self: Sized { ... }
    fn interleave_pending(self) -> InterleavePending<Self> 
       where Self: Sized { ... }
}
Expand description

Additional combinators for testing streams.

Provided Methods§

source

fn assert_unmoved(self) -> AssertUnmoved<Self>
where Self: Sized,

Asserts that the given is not moved after being polled.

A check for movement is performed each time the stream is polled and when Drop is called.

Aside from keeping track of the location at which the stream was first polled and providing assertions, this stream adds no runtime behavior and simply delegates to the child stream.

source

fn interleave_pending(self) -> InterleavePending<Self>
where Self: Sized,

Introduces an extra Poll::Pending in between each item of the stream.

§Examples
use futures::task::Poll;
use futures::stream::{self, Stream};
use futures_test::task::noop_context;
use futures_test::stream::StreamTestExt;
use futures::pin_mut;

let stream = stream::iter(vec![1, 2]).interleave_pending();
pin_mut!(stream);

let mut cx = noop_context();

assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Pending);
assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Ready(Some(1)));
assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Pending);
assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Ready(Some(2)));
assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Pending);
assert_eq!(stream.as_mut().poll_next(&mut cx), Poll::Ready(None));

Implementors§

source§

impl<St> StreamTestExt for St
where St: Stream,