80 lines
1.9 KiB
PHP
Executable File
80 lines
1.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace React\Tests\Promise\Timer;
|
|
|
|
use React\Promise\Timer;
|
|
|
|
class FunctionRejectTest extends TestCase
|
|
{
|
|
public function testPromiseIsPendingWithoutRunningLoop()
|
|
{
|
|
$promise = Timer\reject(0.01, $this->loop);
|
|
|
|
$this->expectPromisePending($promise);
|
|
}
|
|
|
|
public function testPromiseExpiredIsPendingWithoutRunningLoop()
|
|
{
|
|
$promise = Timer\reject(-1, $this->loop);
|
|
|
|
$this->expectPromisePending($promise);
|
|
}
|
|
|
|
public function testPromiseWillBeRejectedOnTimeout()
|
|
{
|
|
$promise = Timer\reject(0.01, $this->loop);
|
|
|
|
$this->loop->run();
|
|
|
|
$this->expectPromiseRejected($promise);
|
|
}
|
|
|
|
public function testPromiseExpiredWillBeRejectedOnTimeout()
|
|
{
|
|
$promise = Timer\reject(-1, $this->loop);
|
|
|
|
$this->loop->run();
|
|
|
|
$this->expectPromiseRejected($promise);
|
|
}
|
|
|
|
public function testCancellingPromiseWillRejectTimer()
|
|
{
|
|
$promise = Timer\reject(0.01, $this->loop);
|
|
|
|
$promise->cancel();
|
|
|
|
$this->expectPromiseRejected($promise);
|
|
}
|
|
|
|
public function testWaitingForPromiseToRejectDoesNotLeaveGarbageCycles()
|
|
{
|
|
if (class_exists('React\Promise\When')) {
|
|
$this->markTestSkipped('Not supported on legacy Promise v1 API');
|
|
}
|
|
|
|
gc_collect_cycles();
|
|
|
|
$promise = Timer\reject(0.01, $this->loop);
|
|
$this->loop->run();
|
|
unset($promise);
|
|
|
|
$this->assertEquals(0, gc_collect_cycles());
|
|
}
|
|
|
|
public function testCancellingPromiseDoesNotLeaveGarbageCycles()
|
|
{
|
|
if (class_exists('React\Promise\When')) {
|
|
$this->markTestSkipped('Not supported on legacy Promise v1 API');
|
|
}
|
|
|
|
gc_collect_cycles();
|
|
|
|
$promise = Timer\reject(0.01, $this->loop);
|
|
$promise->cancel();
|
|
unset($promise);
|
|
|
|
$this->assertEquals(0, gc_collect_cycles());
|
|
}
|
|
}
|