1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?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());
- }
- }
|