@@ -6,22 +6,6 @@ use futures::stream::*;
6
6
mod support;
7
7
use support:: * ;
8
8
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
- // }
25
9
26
10
fn list ( ) -> Receiver < i32 , u32 > {
27
11
let ( tx, rx) = channel ( ) ;
@@ -41,47 +25,76 @@ fn err_list() -> Receiver<i32, u32> {
41
25
return rx
42
26
}
43
27
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
- //
56
28
#[ test]
57
- fn adapters ( ) {
29
+ fn map ( ) {
58
30
assert_done ( || list ( ) . map ( |a| a + 1 ) . collect ( ) , Ok ( vec ! [ 2 , 3 , 4 ] ) ) ;
31
+ }
32
+ #[ test]
33
+ fn map_err ( ) {
59
34
assert_done ( || err_list ( ) . map_err ( |a| a + 1 ) . collect ( ) , Err ( 4 ) ) ;
35
+ }
36
+ #[ test]
37
+ fn fold ( ) {
60
38
assert_done ( || list ( ) . fold ( 0 , |a, b| finished :: < i32 , u32 > ( a + b) ) , Ok ( 6 ) ) ;
61
39
assert_done ( || err_list ( ) . fold ( 0 , |a, b| finished :: < i32 , u32 > ( a + b) ) , Err ( 3 ) ) ;
40
+ }
41
+ #[ test]
42
+ fn filter ( ) {
62
43
assert_done ( || list ( ) . filter ( |a| * a % 2 == 0 ) . collect ( ) , Ok ( vec ! [ 2 ] ) ) ;
44
+ }
45
+ #[ test]
46
+ fn filter_map ( ) {
63
47
assert_done ( || list ( ) . filter_map ( |x| {
64
48
if x % 2 == 0 {
65
49
Some ( x + 10 )
66
50
} else {
67
51
None
68
52
}
69
53
} ) . collect ( ) , Ok ( vec ! [ 12 ] ) ) ;
54
+ }
55
+ #[ test]
56
+ fn and_then ( ) {
70
57
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 ] ) ) ;
72
58
assert_done ( || list ( ) . and_then ( |a| failed :: < i32 , u32 > ( a as u32 ) ) . collect ( ) ,
73
59
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 ( ) {
74
69
assert_done ( || err_list ( ) . or_else ( |a| {
75
70
finished :: < i32 , u32 > ( a as i32 )
76
71
} ) . collect ( ) , Ok ( vec ! [ 1 , 2 , 3 ] ) ) ;
72
+ }
73
+
74
+ #[ test]
75
+ fn flatten ( ) {
77
76
assert_done ( || list ( ) . map ( |_| list ( ) ) . flatten ( ) . collect ( ) ,
78
77
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 ( ) {
81
88
assert_done ( || list ( ) . skip_while ( |e| Ok ( * e % 2 == 1 ) ) . collect ( ) ,
82
89
Ok ( vec ! [ 2 , 3 ] ) ) ;
90
+ }
91
+ #[ test]
92
+ fn take ( ) {
83
93
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 ( ) {
85
98
assert_done ( || list ( ) . peekable ( ) . collect ( ) , Ok ( vec ! [ 1 , 2 , 3 ] ) ) ;
86
99
}
87
100
@@ -97,127 +110,6 @@ fn fuse() {
97
110
assert_eq ! ( stream. poll( & mut task) , Poll :: Ok ( None ) ) ;
98
111
}
99
112
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
-
221
113
#[ test]
222
114
fn buffered ( ) {
223
115
let ( tx, rx) = channel :: < _ , u32 > ( ) ;
0 commit comments