futures-test-sink
This crate provide a handy mock sink implementations that can be used test own Sink.
Examples
:MockSink
allow to create a handy tests
This example contains a 3 tests. See documentation of MockSink
for details.
use waker_fn;
use iter;
use
use ;
SinkFeedback
mock provide a full control of returned items.
You should first use MockSink
if this doesn't this one may be useful.
use waker_fn;
use Sink;
use from_iter;
use ;
// create a Context
let wake_cnt = new;
let cnt = wake_cnt.clone;
let waker = waker_fn;
let mut cx = from_waker;
// actual test
let poll_fallback = vec!
.into_iter;
let start_send_fallback = vec!.into_iter.cycle;
// ours sink implementation
let mut s = from_iter;
let r1 = new.poll_ready;
assert_eq!;
let s1 = new.start_send;
assert_eq!;
let r2 = new.poll_ready;
assert_eq!;
// start send don't panic because start_send_fallback is cycle
let s2 = new.start_send;
assert_eq!;
// ctx.wake() wasn't called.
assert_eq!;
let r3 = new.poll_ready;
assert_eq!;
assert_eq!;
let r4 = new.poll_ready;
assert_eq!;
assert_eq!;
You can be interested in FuseLast container for Iterator.
use waker_fn;
use Sink;
use ;
use ;
// create a Context
let wake_cnt = new;
let cnt = wake_cnt.clone;
let waker = waker_fn;
let mut cx = from_waker;
// actual test
let poll_fallback = vec!
.into_iter
.fuse_last;
let start_send_fallback = vec!.into_iter.cycle;
// ours sink implementation
let mut s = from_iter;
let r1 = new.poll_ready;
assert_eq!;
let s1 = new.start_send;
assert_eq!;
let r2 = new.poll_ready;
assert_eq!;
let r3 = new.poll_ready;
assert_eq!;
// if not `fuse_last` this would panic!
let r4 = new.poll_ready;
assert_eq!;
let r5 = new.poll_ready;
assert_eq!;
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
This project try follow rules:
This README was generated with cargo-readme from template