2
2
3
3
namespace React \Tests \Promise \Stream ;
4
4
5
- use Clue \React \Block ;
6
- use React \EventLoop \Factory ;
7
5
use React \Promise ;
8
6
use React \Promise \Deferred ;
9
7
use React \Promise \Stream ;
10
- use React \Promise \Timer ;
11
8
use React \Stream \ThroughStream ;
12
9
13
10
class UnwrapWritableTest extends TestCase
14
11
{
15
- private $ loop ;
16
-
17
- /**
18
- * @before
19
- */
20
- public function setUpLoop ()
21
- {
22
- $ this ->loop = Factory::create ();
23
- }
24
-
25
12
public function testReturnsWritableStreamForPromise ()
26
13
{
27
14
$ promise = new \React \Promise \Promise (function () { });
@@ -45,14 +32,14 @@ public function testClosingStreamMakesItNotWritable()
45
32
46
33
public function testClosingRejectingStreamMakesItNotWritable ()
47
34
{
48
- $ promise = Timer \reject (0.001 , $ this ->loop );
49
- $ stream = Stream \unwrapWritable ($ promise );
35
+ $ deferred = new Deferred ();
36
+
37
+ $ stream = Stream \unwrapWritable ($ deferred ->promise ());
50
38
51
39
$ stream ->on ('close ' , $ this ->expectCallableOnce ());
52
40
$ stream ->on ('error ' , $ this ->expectCallableNever ());
53
41
54
42
$ stream ->close ();
55
- $ this ->loop ->run ();
56
43
57
44
$ this ->assertFalse ($ stream ->isWritable ());
58
45
}
@@ -69,32 +56,32 @@ public function testClosingStreamWillCancelInputPromiseAndMakeStreamNotWritable(
69
56
70
57
public function testEmitsErrorWhenPromiseRejects ()
71
58
{
72
- $ promise = Timer \reject ( 0.001 , $ this -> loop );
59
+ $ deferred = new Deferred ( );
73
60
74
- $ stream = Stream \unwrapWritable ($ promise );
61
+ $ stream = Stream \unwrapWritable ($ deferred -> promise () );
75
62
76
63
$ this ->assertTrue ($ stream ->isWritable ());
77
64
78
65
$ stream ->on ('error ' , $ this ->expectCallableOnce ());
79
66
$ stream ->on ('close ' , $ this ->expectCallableOnce ());
80
67
81
- $ this -> loop -> run ( );
68
+ $ deferred -> reject ( new \ RuntimeException () );
82
69
83
70
$ this ->assertFalse ($ stream ->isWritable ());
84
71
}
85
72
86
73
public function testEmitsErrorWhenPromiseResolvesWithWrongValue ()
87
74
{
88
- $ promise = Timer \resolve ( 0.001 , $ this -> loop );
75
+ $ deferred = new Deferred ( );
89
76
90
- $ stream = Stream \unwrapWritable ($ promise );
77
+ $ stream = Stream \unwrapWritable ($ deferred -> promise () );
91
78
92
79
$ this ->assertTrue ($ stream ->isWritable ());
93
80
94
81
$ stream ->on ('error ' , $ this ->expectCallableOnce ());
95
82
$ stream ->on ('close ' , $ this ->expectCallableOnce ());
96
83
97
- $ this -> loop -> run ( );
84
+ $ deferred -> resolve ( 42 );
98
85
99
86
$ this ->assertFalse ($ stream ->isWritable ());
100
87
}
@@ -125,17 +112,15 @@ public function testReturnsStreamThatWillBeClosedWhenPromiseResolvesWithClosedIn
125
112
$ input = new ThroughStream ();
126
113
$ input ->close ();
127
114
128
- $ promise = Timer \resolve (0.001 , $ this ->loop )->then (function () use ($ input ) {
129
- return $ input ;
130
- });
115
+ $ deferred = new Deferred ();
131
116
132
- $ stream = Stream \unwrapWritable ($ promise );
117
+ $ stream = Stream \unwrapWritable ($ deferred -> promise () );
133
118
134
119
$ this ->assertTrue ($ stream ->isWritable ());
135
120
136
121
$ stream ->on ('close ' , $ this ->expectCallableOnce ());
137
122
138
- $ this -> loop -> run ( );
123
+ $ deferred -> resolve ( $ input );
139
124
140
125
$ this ->assertFalse ($ stream ->isWritable ());
141
126
}
@@ -162,14 +147,13 @@ public function testForwardsOriginalDataOncePromiseResolves()
162
147
$ input ->expects ($ this ->once ())->method ('write ' )->with ($ data );
163
148
$ input ->expects ($ this ->never ())->method ('end ' );
164
149
165
- $ promise = Timer \resolve (0.001 , $ this ->loop )->then (function () use ($ input ) {
166
- return $ input ;
167
- });
168
- $ stream = Stream \unwrapWritable ($ promise );
150
+ $ deferred = new Deferred ();
151
+
152
+ $ stream = Stream \unwrapWritable ($ deferred ->promise ());
169
153
170
154
$ stream ->write ($ data );
171
155
172
- $ this -> loop -> run ( );
156
+ $ deferred -> resolve ( $ input );
173
157
}
174
158
175
159
public function testForwardsDataInOriginalChunksOncePromiseResolves ()
@@ -179,15 +163,14 @@ public function testForwardsDataInOriginalChunksOncePromiseResolves()
179
163
$ input ->expects ($ this ->exactly (2 ))->method ('write ' )->withConsecutive (array ('hello ' ), array ('world ' ));
180
164
$ input ->expects ($ this ->never ())->method ('end ' );
181
165
182
- $ promise = Timer \resolve (0.001 , $ this ->loop )->then (function () use ($ input ) {
183
- return $ input ;
184
- });
185
- $ stream = Stream \unwrapWritable ($ promise );
166
+ $ deferred = new Deferred ();
167
+
168
+ $ stream = Stream \unwrapWritable ($ deferred ->promise ());
186
169
187
170
$ stream ->write ('hello ' );
188
171
$ stream ->write ('world ' );
189
172
190
- $ this -> loop -> run ( );
173
+ $ deferred -> resolve ( $ input );
191
174
}
192
175
193
176
public function testForwardsDataAndEndImmediatelyIfPromiseIsAlreadyResolved ()
@@ -211,16 +194,15 @@ public function testForwardsDataAndEndOncePromiseResolves()
211
194
$ input ->expects ($ this ->exactly (3 ))->method ('write ' )->withConsecutive (array ('hello ' ), array ('world ' ), array ('! ' ));
212
195
$ input ->expects ($ this ->once ())->method ('end ' );
213
196
214
- $ promise = Timer \resolve (0.001 , $ this ->loop )->then (function () use ($ input ) {
215
- return $ input ;
216
- });
217
- $ stream = Stream \unwrapWritable ($ promise );
197
+ $ deferred = new Deferred ();
198
+
199
+ $ stream = Stream \unwrapWritable ($ deferred ->promise ());
218
200
219
201
$ stream ->write ('hello ' );
220
202
$ stream ->write ('world ' );
221
203
$ stream ->end ('! ' );
222
204
223
- $ this -> loop -> run ( );
205
+ $ deferred -> resolve ( $ input );
224
206
}
225
207
226
208
public function testForwardsNoDataWhenWritingAfterEndIfPromiseIsAlreadyResolved ()
@@ -245,15 +227,14 @@ public function testForwardsNoDataWhenWritingAfterEndOncePromiseResolves()
245
227
$ input ->expects ($ this ->never ())->method ('write ' );
246
228
$ input ->expects ($ this ->once ())->method ('end ' );
247
229
248
- $ promise = Timer \resolve (0.001 , $ this ->loop )->then (function () use ($ input ) {
249
- return $ input ;
250
- });
251
- $ stream = Stream \unwrapWritable ($ promise );
230
+ $ deferred = new Deferred ();
231
+
232
+ $ stream = Stream \unwrapWritable ($ deferred ->promise ());
252
233
253
234
$ stream ->end ();
254
235
$ stream ->write ('nope ' );
255
236
256
- $ this -> loop -> run ( );
237
+ $ deferred -> resolve ( $ input );
257
238
}
258
239
259
240
public function testWriteReturnsFalseWhenPromiseIsPending ()
0 commit comments