You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.0 KiB
97 lines
2.0 KiB
<?php |
|
|
|
namespace React\Tests\EventLoop\Timer; |
|
|
|
use React\Tests\EventLoop\TestCase; |
|
|
|
abstract class AbstractTimerTest extends TestCase |
|
{ |
|
abstract public function createLoop(); |
|
|
|
public function testAddTimer() |
|
{ |
|
// usleep is intentionally high |
|
|
|
$loop = $this->createLoop(); |
|
|
|
$loop->addTimer(0.001, $this->expectCallableOnce()); |
|
usleep(1000); |
|
$loop->tick(); |
|
} |
|
|
|
public function testAddPeriodicTimer() |
|
{ |
|
$loop = $this->createLoop(); |
|
|
|
$loop->addPeriodicTimer(0.001, $this->expectCallableExactly(3)); |
|
usleep(1000); |
|
$loop->tick(); |
|
usleep(1000); |
|
$loop->tick(); |
|
usleep(1000); |
|
$loop->tick(); |
|
} |
|
|
|
public function testAddPeriodicTimerWithCancel() |
|
{ |
|
$loop = $this->createLoop(); |
|
|
|
$timer = $loop->addPeriodicTimer(0.001, $this->expectCallableExactly(2)); |
|
|
|
usleep(1000); |
|
$loop->tick(); |
|
usleep(1000); |
|
$loop->tick(); |
|
|
|
$timer->cancel(); |
|
|
|
usleep(1000); |
|
$loop->tick(); |
|
} |
|
|
|
public function testAddPeriodicTimerCancelsItself() |
|
{ |
|
$i = 0; |
|
|
|
$loop = $this->createLoop(); |
|
|
|
$loop->addPeriodicTimer(0.001, function ($timer) use (&$i) { |
|
$i++; |
|
|
|
if ($i == 2) { |
|
$timer->cancel(); |
|
} |
|
}); |
|
|
|
usleep(1000); |
|
$loop->tick(); |
|
usleep(1000); |
|
$loop->tick(); |
|
usleep(1000); |
|
$loop->tick(); |
|
|
|
$this->assertSame(2, $i); |
|
} |
|
|
|
public function testIsTimerActive() |
|
{ |
|
$loop = $this->createLoop(); |
|
|
|
$timer = $loop->addPeriodicTimer(0.001, function () {}); |
|
|
|
$this->assertTrue($loop->isTimerActive($timer)); |
|
|
|
$timer->cancel(); |
|
|
|
$this->assertFalse($loop->isTimerActive($timer)); |
|
} |
|
|
|
public function testMinimumIntervalOneMicrosecond() |
|
{ |
|
$loop = $this->createLoop(); |
|
|
|
$timer = $loop->addTimer(0, function () {}); |
|
|
|
$this->assertEquals(0.000001, $timer->getInterval()); |
|
} |
|
}
|
|
|