ConnectionTest.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace React\Tests\Socket;
  3. use React\Socket\Connection;
  4. class ConnectionTest extends TestCase
  5. {
  6. public function testCloseConnectionWillCloseSocketResource()
  7. {
  8. if (defined('HHVM_VERSION')) {
  9. $this->markTestSkipped('HHVM does not support socket operation on test memory stream');
  10. }
  11. $resource = fopen('php://memory', 'r+');
  12. $loop = $this->getMockBuilder('React\EventLoop\LoopInterface')->getMock();
  13. $connection = new Connection($resource, $loop);
  14. $connection->close();
  15. $this->assertFalse(is_resource($resource));
  16. }
  17. public function testCloseConnectionWillRemoveResourceFromLoopBeforeClosingResource()
  18. {
  19. if (defined('HHVM_VERSION')) {
  20. $this->markTestSkipped('HHVM does not support socket operation on test memory stream');
  21. }
  22. $resource = fopen('php://memory', 'r+');
  23. $loop = $this->getMockBuilder('React\EventLoop\LoopInterface')->getMock();
  24. $loop->expects($this->once())->method('addWriteStream')->with($resource);
  25. $onRemove = null;
  26. $loop->expects($this->once())->method('removeWriteStream')->with($this->callback(function ($param) use (&$onRemove) {
  27. $onRemove = is_resource($param);
  28. return true;
  29. }));
  30. $connection = new Connection($resource, $loop);
  31. $connection->write('test');
  32. $connection->close();
  33. $this->assertTrue($onRemove);
  34. $this->assertFalse(is_resource($resource));
  35. }
  36. }