41 lines
1.3 KiB
Rust
41 lines
1.3 KiB
Rust
use futures::channel::mpsc;
|
|
use futures::stream::Stream;
|
|
|
|
#[test]
|
|
fn unbounded_size_hint() {
|
|
let (tx, mut rx) = mpsc::unbounded::<u32>();
|
|
assert_eq!((0, None), rx.size_hint());
|
|
tx.unbounded_send(1).unwrap();
|
|
assert_eq!((1, None), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((0, None), rx.size_hint());
|
|
tx.unbounded_send(2).unwrap();
|
|
tx.unbounded_send(3).unwrap();
|
|
assert_eq!((2, None), rx.size_hint());
|
|
drop(tx);
|
|
assert_eq!((2, Some(2)), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((1, Some(1)), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((0, Some(0)), rx.size_hint());
|
|
}
|
|
|
|
#[test]
|
|
fn channel_size_hint() {
|
|
let (mut tx, mut rx) = mpsc::channel::<u32>(10);
|
|
assert_eq!((0, None), rx.size_hint());
|
|
tx.try_send(1).unwrap();
|
|
assert_eq!((1, None), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((0, None), rx.size_hint());
|
|
tx.try_send(2).unwrap();
|
|
tx.try_send(3).unwrap();
|
|
assert_eq!((2, None), rx.size_hint());
|
|
drop(tx);
|
|
assert_eq!((2, Some(2)), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((1, Some(1)), rx.size_hint());
|
|
rx.try_next().unwrap().unwrap();
|
|
assert_eq!((0, Some(0)), rx.size_hint());
|
|
}
|