SupportTimeboxTest.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Illuminate\Tests\Support;
  3. use Illuminate\Support\Timebox;
  4. use Mockery as m;
  5. use PHPUnit\Framework\TestCase;
  6. class SupportTimeboxTest extends TestCase
  7. {
  8. public function testMakeExecutesCallback()
  9. {
  10. $callback = function () {
  11. $this->assertTrue(true);
  12. };
  13. (new Timebox)->call($callback, 0);
  14. }
  15. public function testMakeWaitsForMicroseconds()
  16. {
  17. $mock = m::spy(Timebox::class)->shouldAllowMockingProtectedMethods()->makePartial();
  18. $mock->shouldReceive('usleep')->once();
  19. $mock->call(function () {
  20. }, 10000);
  21. $mock->shouldHaveReceived('usleep')->once();
  22. }
  23. public function testMakeShouldNotSleepWhenEarlyReturnHasBeenFlagged()
  24. {
  25. $mock = m::spy(Timebox::class)->shouldAllowMockingProtectedMethods()->makePartial();
  26. $mock->call(function ($timebox) {
  27. $timebox->returnEarly();
  28. }, 10000);
  29. $mock->shouldNotHaveReceived('usleep');
  30. }
  31. public function testMakeShouldSleepWhenDontEarlyReturnHasBeenFlagged()
  32. {
  33. $mock = m::spy(Timebox::class)->shouldAllowMockingProtectedMethods()->makePartial();
  34. $mock->shouldReceive('usleep')->once();
  35. $mock->call(function ($timebox) {
  36. $timebox->returnEarly();
  37. $timebox->dontReturnEarly();
  38. }, 10000);
  39. $mock->shouldHaveReceived('usleep')->once();
  40. }
  41. }