blob: b728492b4147bfe27905fa14094f3bdbbfee91d6 [file] [log] [blame]
use futures::executor::block_on_stream;
use futures::channel::mpsc;
use futures::stream::select_all;
use std::mem;
mod support;
#[test]
fn works_1() {
let (a_tx, a_rx) = mpsc::unbounded::<u32>();
let (b_tx, b_rx) = mpsc::unbounded::<u32>();
let (c_tx, c_rx) = mpsc::unbounded::<u32>();
let streams = vec![a_rx, b_rx, c_rx];
let mut stream = block_on_stream(select_all(streams));
b_tx.unbounded_send(99).unwrap();
a_tx.unbounded_send(33).unwrap();
assert_eq!(Some(Ok(33)), stream.next());
assert_eq!(Some(Ok(99)), stream.next());
b_tx.unbounded_send(99).unwrap();
a_tx.unbounded_send(33).unwrap();
assert_eq!(Some(Ok(33)), stream.next());
assert_eq!(Some(Ok(99)), stream.next());
c_tx.unbounded_send(42).unwrap();
assert_eq!(Some(Ok(42)), stream.next());
a_tx.unbounded_send(43).unwrap();
assert_eq!(Some(Ok(43)), stream.next());
mem::drop((a_tx, b_tx, c_tx));
assert_eq!(None, stream.next());
}