init
This commit is contained in:
76
vendor/react/promise/tests/RejectedPromiseTest.php
vendored
Executable file
76
vendor/react/promise/tests/RejectedPromiseTest.php
vendored
Executable file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace React\Promise;
|
||||
|
||||
use React\Promise\PromiseAdapter\CallbackPromiseAdapter;
|
||||
|
||||
class RejectedPromiseTest extends TestCase
|
||||
{
|
||||
use PromiseTest\PromiseSettledTestTrait,
|
||||
PromiseTest\PromiseRejectedTestTrait;
|
||||
|
||||
public function getPromiseTestAdapter(callable $canceller = null)
|
||||
{
|
||||
$promise = null;
|
||||
|
||||
return new CallbackPromiseAdapter([
|
||||
'promise' => function () use (&$promise) {
|
||||
if (!$promise) {
|
||||
throw new \LogicException('RejectedPromise must be rejected before obtaining the promise');
|
||||
}
|
||||
|
||||
return $promise;
|
||||
},
|
||||
'resolve' => function () {
|
||||
throw new \LogicException('You cannot call resolve() for React\Promise\RejectedPromise');
|
||||
},
|
||||
'reject' => function ($reason = null) use (&$promise) {
|
||||
if (!$promise) {
|
||||
$promise = new RejectedPromise($reason);
|
||||
}
|
||||
},
|
||||
'notify' => function () {
|
||||
// no-op
|
||||
},
|
||||
'settle' => function ($reason = null) use (&$promise) {
|
||||
if (!$promise) {
|
||||
$promise = new RejectedPromise($reason);
|
||||
}
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldThrowExceptionIfConstructedWithAPromise()
|
||||
{
|
||||
$this->setExpectedException('\InvalidArgumentException');
|
||||
|
||||
return new RejectedPromise(new RejectedPromise());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldNotLeaveGarbageCyclesWhenRemovingLastReferenceToRejectedPromiseWithAlwaysFollowers()
|
||||
{
|
||||
gc_collect_cycles();
|
||||
$promise = new RejectedPromise(1);
|
||||
$promise->always(function () {
|
||||
throw new \RuntimeException();
|
||||
});
|
||||
unset($promise);
|
||||
|
||||
$this->assertSame(0, gc_collect_cycles());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldNotLeaveGarbageCyclesWhenRemovingLastReferenceToRejectedPromiseWithThenFollowers()
|
||||
{
|
||||
gc_collect_cycles();
|
||||
$promise = new RejectedPromise(1);
|
||||
$promise = $promise->then(null, function () {
|
||||
throw new \RuntimeException();
|
||||
});
|
||||
unset($promise);
|
||||
|
||||
$this->assertSame(0, gc_collect_cycles());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user