1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
<?php
namespace React\Promise\Internal;
use InvalidArgumentException;
use LogicException;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
use PHPUnit\Framework\Attributes\Test;
use React\Promise\PromiseAdapter\CallbackPromiseAdapter;
use React\Promise\PromiseTest\PromiseFulfilledTestTrait;
use React\Promise\PromiseTest\PromiseSettledTestTrait;
use React\Promise\TestCase;
/**
* @template T
*/
class FulfilledPromiseTest extends TestCase
{
use PromiseSettledTestTrait,
PromiseFulfilledTestTrait;
/**
* @return CallbackPromiseAdapter<T>
*/
public function getPromiseTestAdapter(?callable $canceller = null): CallbackPromiseAdapter
{
/** @var ?FulfilledPromise<T> */
$promise = null;
return new CallbackPromiseAdapter([
'promise' => function () use (&$promise) {
if (!$promise) {
throw new LogicException('FulfilledPromise must be resolved before obtaining the promise');
}
return $promise;
},
'resolve' => function ($value = null) use (&$promise) {
if (!$promise) {
$promise = new FulfilledPromise($value);
}
},
'reject' => function () {
throw new LogicException('You cannot call reject() for React\Promise\FulfilledPromise');
},
'settle' => function ($value = null) use (&$promise) {
if (!$promise) {
$promise = new FulfilledPromise($value);
}
},
]);
}
#[Test]
#[RequiresPhpunit('< 12')]
public function shouldThrowExceptionIfConstructedWithAPromise(): void
{
$this->expectException(InvalidArgumentException::class);
new FulfilledPromise(new FulfilledPromise());
}
}
|