Skip to content

Commit 45f9ade

Browse files
authored
Merge pull request rust-lang#79 from MarkusJais/master
cleaned up streams tests and split adapters test into several methods
2 parents 65e65e3 + 5e63c91 commit 45f9ade

File tree

1 file changed

+46
-154
lines changed

1 file changed

+46
-154
lines changed

tests/stream.rs

Lines changed: 46 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,6 @@ use futures::stream::*;
66
mod support;
77
use support::*;
88

9-
// #[test]
10-
// fn smoke() {
11-
// let (tx, rx) = channel::<i32, u32>();
12-
// tx.send(Ok(1))
13-
// .and_then(|tx| tx.send(Ok(2)))
14-
// .and_then(|tx| tx.send(Ok(3)))
15-
// .schedule(|r| assert!(r.is_ok()));
16-
// assert_eq!(rx.collect(), Ok(vec![1, 2, 3]));
17-
//
18-
// let (tx, rx) = channel::<i32, u32>();
19-
// tx.send(Ok(1))
20-
// .and_then(|tx| tx.send(Err(2)))
21-
// .and_then(|tx| tx.send(Ok(3)))
22-
// .schedule(|r| assert!(r.is_ok()));
23-
// assert_eq!(rx.collect(), Err(2));
24-
// }
259

2610
fn list() -> Receiver<i32, u32> {
2711
let (tx, rx) = channel();
@@ -41,47 +25,76 @@ fn err_list() -> Receiver<i32, u32> {
4125
return rx
4226
}
4327

44-
// fn collect_poll<S: Stream>(mut s: S) -> Result<Vec<S::Item>, S::Error> {
45-
// let mut base = Vec::new();
46-
// loop {
47-
// match s.poll() {
48-
// Ok(item) => base.push(item),
49-
// Err(PollError::Empty) => return Ok(base),
50-
// Err(PollError::Other(e)) => return Err(e),
51-
// Err(PollError::NotReady) => panic!("blocked?"),
52-
// }
53-
// }
54-
// }
55-
//
5628
#[test]
57-
fn adapters() {
29+
fn map () {
5830
assert_done(|| list().map(|a| a + 1).collect(), Ok(vec![2, 3, 4]));
31+
}
32+
#[test]
33+
fn map_err () {
5934
assert_done(|| err_list().map_err(|a| a + 1).collect(), Err(4));
35+
}
36+
#[test]
37+
fn fold () {
6038
assert_done(|| list().fold(0, |a, b| finished::<i32, u32>(a + b)), Ok(6));
6139
assert_done(|| err_list().fold(0, |a, b| finished::<i32, u32>(a + b)), Err(3));
40+
}
41+
#[test]
42+
fn filter () {
6243
assert_done(|| list().filter(|a| *a % 2 == 0).collect(), Ok(vec![2]));
44+
}
45+
#[test]
46+
fn filter_map () {
6347
assert_done(|| list().filter_map(|x| {
6448
if x % 2 == 0 {
6549
Some(x + 10)
6650
} else {
6751
None
6852
}
6953
}).collect(), Ok(vec![12]));
54+
}
55+
#[test]
56+
fn and_then () {
7057
assert_done(|| list().and_then(|a| Ok(a + 1)).collect(), Ok(vec![2, 3, 4]));
71-
assert_done(|| list().then(|a| a.map(|e| e + 1)).collect(), Ok(vec![2, 3, 4]));
7258
assert_done(|| list().and_then(|a| failed::<i32, u32>(a as u32)).collect(),
7359
Err(1));
60+
}
61+
#[test]
62+
fn then () {
63+
assert_done(|| list().then(|a| a.map(|e| e + 1)).collect(), Ok(vec![2, 3, 4]));
64+
65+
}
66+
67+
#[test]
68+
fn or_else() {
7469
assert_done(|| err_list().or_else(|a| {
7570
finished::<i32, u32>(a as i32)
7671
}).collect(), Ok(vec![1, 2, 3]));
72+
}
73+
74+
#[test]
75+
fn flatten () {
7776
assert_done(|| list().map(|_| list()).flatten().collect(),
7877
Ok(vec![1, 2, 3, 1, 2, 3, 1, 2, 3]));
79-
// assert_eq!(list().map(|i| finished::<_, u32>(i)).flatten().collect(),
80-
// Ok(vec![1, 2, 3]));
78+
79+
}
80+
81+
#[test]
82+
fn skip () {
83+
assert_done(|| list().skip(2).collect(), Ok(vec![3]));
84+
}
85+
86+
#[test]
87+
fn skip_while () {
8188
assert_done(|| list().skip_while(|e| Ok(*e % 2 == 1)).collect(),
8289
Ok(vec![2, 3]));
90+
}
91+
#[test]
92+
fn take () {
8393
assert_done(|| list().take(2).collect(), Ok(vec![1, 2]));
84-
assert_done(|| list().skip(2).collect(), Ok(vec![3]));
94+
}
95+
96+
#[test]
97+
fn peekable () {
8598
assert_done(|| list().peekable().collect(), Ok(vec![1, 2, 3]));
8699
}
87100

@@ -97,127 +110,6 @@ fn fuse() {
97110
assert_eq!(stream.poll(&mut task), Poll::Ok(None));
98111
}
99112

100-
// #[test]
101-
// fn adapters_poll() {
102-
// assert_eq!(collect_poll(list().map(|a| a + 1)), Ok(vec![2, 3, 4]));
103-
// assert_eq!(collect_poll(err_list().map_err(|a| a + 1)), Err(4));
104-
// assert_eq!(collect_poll(list().filter(|a| *a % 2 == 0)), Ok(vec![2]));
105-
// assert_eq!(collect_poll(list().and_then(|a| Ok(a + 1))), Ok(vec![2, 3, 4]));
106-
// assert_eq!(collect_poll(err_list().and_then(|a| Ok(a + 1))), Err(3));
107-
// assert_eq!(collect_poll(err_list().and_then(|a| {
108-
// failed::<i32, _>(a as u32)
109-
// })), Err(1));
110-
// assert_eq!(collect_poll(err_list().or_else(|a| finished::<_, u32>(a as i32))),
111-
// Ok(vec![1, 2, 3]));
112-
//
113-
// let (tx, rx) = channel::<i32, u32>();
114-
// let (rx2, tx2) = oneshot::pair();
115-
// let mut rx2 = Some(rx2);
116-
// let mut rx = rx.and_then(move |_a| rx2.take().unwrap());
117-
// match rx.poll() {
118-
// Err(PollError::NotReady) => {}
119-
// _ => panic!("ready?"),
120-
// }
121-
// tx.send(Ok(1)).schedule(|_| ());
122-
// match rx.poll() {
123-
// Err(PollError::NotReady) => {}
124-
// _ => panic!("ready?"),
125-
// }
126-
// match rx.poll() {
127-
// Err(PollError::NotReady) => {}
128-
// _ => panic!("ready?"),
129-
// }
130-
// tx2.finish(1);
131-
// match rx.poll() {
132-
// Ok(1) => {},
133-
// Err(PollError::NotReady) => panic!("not ready?"),
134-
// Err(PollError::Empty) => panic!("empty?"),
135-
// _ => panic!("not ready?"),
136-
// }
137-
//
138-
// // let (tx, rx) = channel::<i32, u32>();
139-
// // let rx = rx.and_then(|a| failed::<i32, _>(a as u32));
140-
// // tx.send(Ok(1)).schedule(|_| ());
141-
// // assert_eq!(rx.collect(), Err(1));
142-
// // assert_eq!(list().fold(0, |a, b| a + b), Ok(6));
143-
// // assert_eq!(list().and_then(|a| Ok(a + 1)).collect(),
144-
// // Ok(vec![2, 3, 4]));
145-
// // assert_eq!(err_list().or_else(|a| {
146-
// // finished::<i32, u32>(a as i32)
147-
// // }).collect(), Ok(vec![1, 2, 3]));
148-
// // assert_eq!(list().map(|_| list()).flat_map().collect(),
149-
// // Ok(vec![1, 2, 3, 1, 2, 3, 1, 2, 3]));
150-
// // assert_eq!(list().map(|i| finished::<_, u32>(i)).flatten().collect(),
151-
// // Ok(vec![1, 2, 3]));
152-
//
153-
// assert_eq!(list().collect().poll().ok().unwrap(), Ok(vec![1, 2, 3]));
154-
// assert_eq!(err_list().collect().poll().ok().unwrap(), Err(3));
155-
// assert_eq!(list().fold(0, |a, b| a + b).poll().ok().unwrap(), Ok(6));
156-
// assert_eq!(err_list().fold(0, |a, b| a + b).poll().ok().unwrap(), Err(3));
157-
// assert_eq!(list().map(|a| finished::<_, u32>(a))
158-
// .flatten().collect().poll().ok().unwrap(),
159-
// Ok(vec![1, 2, 3]));
160-
// assert_eq!(list().map(|_a| list()).flat_map()
161-
// .collect().poll().ok().unwrap(),
162-
// Ok(vec![1, 2, 3, 1, 2, 3, 1, 2, 3]));
163-
// }
164-
//
165-
// #[test]
166-
// fn rxdrop() {
167-
// let (tx, rx) = channel::<i32, u32>();
168-
// drop(rx);
169-
// assert!(tx.send(Ok(1)).is_err());
170-
// }
171-
//
172-
// #[test]
173-
// fn bufstream_smoke() {
174-
// let (tx, mut rx) = bufstream::<i32, u32>(4);
175-
// let (vrx, mut vtx): (Vec<_>, Vec<_>) = (0..4).map(|_| {
176-
// let (a, b) = oneshot::pair::<i32, u32>();
177-
// (a, Some(b))
178-
// }).unzip();
179-
// for (a, b) in tx.zip(vrx) {
180-
// b.schedule(|val| a.send(val));
181-
// }
182-
//
183-
// assert_eq!(rx.poll(), Err(PollError::NotReady));
184-
// vtx[0].take().unwrap().finish(2);
185-
// assert_eq!(rx.poll(), Ok(2));
186-
// assert_eq!(rx.poll(), Err(PollError::NotReady));
187-
// vtx[3].take().unwrap().finish(4);
188-
// assert_eq!(rx.poll(), Ok(4));
189-
// assert_eq!(rx.poll(), Err(PollError::NotReady));
190-
// vtx[1].take().unwrap().fail(3);
191-
// assert_eq!(rx.poll(), Err(PollError::Other(3)));
192-
// assert_eq!(rx.poll(), Err(PollError::NotReady));
193-
// vtx[2].take().unwrap().finish(1);
194-
// assert_eq!(rx.poll(), Ok(1));
195-
// assert_eq!(rx.poll(), Err(PollError::Empty));
196-
// }
197-
//
198-
// #[test]
199-
// fn bufstream_concurrent() {
200-
// let (tx, rx) = bufstream::<i32, u32>(4);
201-
// let (vrx, vtx): (Vec<_>, Vec<_>) = (0..4).map(|_| {
202-
// oneshot::pair::<i32, u32>()
203-
// }).unzip();
204-
// for (a, b) in tx.zip(vrx) {
205-
// b.schedule(|val| a.send(val));
206-
// }
207-
//
208-
// let t = thread::spawn(|| {
209-
// let mut it = vtx.into_iter();
210-
// it.next().unwrap().finish(2);
211-
// it.next_back().unwrap().finish(4);
212-
// it.next().unwrap().finish(3);
213-
// it.next_back().unwrap().finish(1);
214-
// assert!(it.next().is_none());
215-
// });
216-
//
217-
// assert_eq!(rx.collect(), Ok(vec![2, 4, 3, 1]));
218-
// t.join().unwrap();
219-
// }
220-
221113
#[test]
222114
fn buffered() {
223115
let (tx, rx) = channel::<_, u32>();

0 commit comments

Comments
 (0)