@@ -249,6 +249,35 @@ public function testEndRemovesReadStreamFromLoop()
249249 $ conn ->end ('bye ' );
250250 }
251251
252+ /**
253+ * @covers React\Stream\DuplexResourceStream::pause
254+ */
255+ public function testPauseRemovesReadStreamFromLoop ()
256+ {
257+ $ stream = fopen ('php://temp ' , 'r+ ' );
258+ $ loop = $ this ->createLoopMock ();
259+ $ loop ->expects ($ this ->once ())->method ('addReadStream ' )->with ($ stream );
260+ $ loop ->expects ($ this ->once ())->method ('removeReadStream ' )->with ($ stream );
261+
262+ $ conn = new DuplexResourceStream ($ stream , $ loop );
263+ $ conn ->pause ();
264+ $ conn ->pause ();
265+ }
266+
267+ /**
268+ * @covers React\Stream\DuplexResourceStream::pause
269+ */
270+ public function testResumeDoesAddStreamToLoopOnlyOnce ()
271+ {
272+ $ stream = fopen ('php://temp ' , 'r+ ' );
273+ $ loop = $ this ->createLoopMock ();
274+ $ loop ->expects ($ this ->once ())->method ('addReadStream ' )->with ($ stream );
275+
276+ $ conn = new DuplexResourceStream ($ stream , $ loop );
277+ $ conn ->resume ();
278+ $ conn ->resume ();
279+ }
280+
252281 /**
253282 * @covers React\Stream\DuplexResourceStream::close
254283 */
@@ -263,6 +292,35 @@ public function testCloseRemovesReadStreamFromLoop()
263292 $ conn ->close ();
264293 }
265294
295+ /**
296+ * @covers React\Stream\DuplexResourceStream::close
297+ */
298+ public function testCloseAfterPauseRemovesReadStreamFromLoopOnlyOnce ()
299+ {
300+ $ stream = fopen ('php://temp ' , 'r+ ' );
301+ $ loop = $ this ->createLoopMock ();
302+ $ loop ->expects ($ this ->once ())->method ('addReadStream ' )->with ($ stream );
303+ $ loop ->expects ($ this ->once ())->method ('removeReadStream ' )->with ($ stream );
304+
305+ $ conn = new DuplexResourceStream ($ stream , $ loop );
306+ $ conn ->pause ();
307+ $ conn ->close ();
308+ }
309+
310+ /**
311+ * @covers React\Stream\DuplexResourceStream::close
312+ */
313+ public function testResumeAfterCloseDoesAddReadStreamToLoopOnlyOnce ()
314+ {
315+ $ stream = fopen ('php://temp ' , 'r+ ' );
316+ $ loop = $ this ->createLoopMock ();
317+ $ loop ->expects ($ this ->once ())->method ('addReadStream ' )->with ($ stream );
318+
319+ $ conn = new DuplexResourceStream ($ stream , $ loop );
320+ $ conn ->close ();
321+ $ conn ->resume ();
322+ }
323+
266324 public function testEndedStreamsShouldNotWrite ()
267325 {
268326 $ file = tempnam (sys_get_temp_dir (), 'reactphptest_ ' );
0 commit comments