SignalsHandlerTest.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace React\Tests\EventLoop;
  3. use React\EventLoop\SignalsHandler;
  4. final class SignalsHandlerTest extends TestCase
  5. {
  6. /**
  7. * @requires extension pcntl
  8. */
  9. public function testEmittedEventsAndCallHandling()
  10. {
  11. $callCount = 0;
  12. $func = function () use (&$callCount) {
  13. $callCount++;
  14. };
  15. $signals = new SignalsHandler();
  16. $this->assertSame(0, $callCount);
  17. $signals->add(SIGUSR1, $func);
  18. $this->assertSame(0, $callCount);
  19. $signals->add(SIGUSR1, $func);
  20. $this->assertSame(0, $callCount);
  21. $signals->add(SIGUSR1, $func);
  22. $this->assertSame(0, $callCount);
  23. $signals->call(SIGUSR1);
  24. $this->assertSame(1, $callCount);
  25. $signals->add(SIGUSR2, $func);
  26. $this->assertSame(1, $callCount);
  27. $signals->add(SIGUSR2, $func);
  28. $this->assertSame(1, $callCount);
  29. $signals->call(SIGUSR2);
  30. $this->assertSame(2, $callCount);
  31. $signals->remove(SIGUSR2, $func);
  32. $this->assertSame(2, $callCount);
  33. $signals->remove(SIGUSR2, $func);
  34. $this->assertSame(2, $callCount);
  35. $signals->call(SIGUSR2);
  36. $this->assertSame(2, $callCount);
  37. $signals->remove(SIGUSR1, $func);
  38. $this->assertSame(2, $callCount);
  39. $signals->call(SIGUSR1);
  40. $this->assertSame(2, $callCount);
  41. }
  42. }