OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
cream
/
Xpress
/
vendor
/
guzzlehttp
/
promises
/
tests
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/19/2025 10:07:16 AM
rwxr-xr-x
📄
AggregateExceptionTest.php
456 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
CoroutineTest.php
3.63 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
CreateTest.php
1.63 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
EachPromiseTest.php
14.92 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
EachTest.php
944 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
FulfilledPromiseTest.php
3.12 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
IsTest.php
1.06 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
NotPromiseInstance.php
1.08 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
PromiseTest.php
22.44 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
PropertyHelper.php
596 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
RejectedPromiseTest.php
4.08 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
RejectionExceptionTest.php
796 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
TaskQueueTest.php
942 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
Thennable.php
502 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
Thing1.php
296 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
Thing2.php
228 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
UtilsTest.php
24.18 KB
05/19/2025 10:07:16 AM
rw-r--r--
Editing: CoroutineTest.php
Close
<?php declare(strict_types=1); namespace GuzzleHttp\Promise\Tests; use GuzzleHttp\Promise as P; use GuzzleHttp\Promise\Coroutine; use GuzzleHttp\Promise\Promise; use GuzzleHttp\Promise\PromiseInterface; use PHPUnit\Framework\TestCase; use ReflectionClass; class CoroutineTest extends TestCase { public function testReturnsCoroutine(): void { $fn = function () { yield 'foo'; }; $this->assertInstanceOf(P\Coroutine::class, P\Coroutine::of($fn)); } /** * @dataProvider promiseInterfaceMethodProvider * * @param string $method * @param array $args */ public function testShouldProxyPromiseMethodsToResultPromise($method, $args = []): void { $coroutine = new Coroutine(function () { yield 0; }); $mockPromise = $this->getMockForAbstractClass(PromiseInterface::class); $mockPromise->expects($this->once())->method($method)->with(...$args); $resultPromiseProp = (new ReflectionClass(Coroutine::class))->getProperty('result'); $resultPromiseProp->setAccessible(true); $resultPromiseProp->setValue($coroutine, $mockPromise); $coroutine->{$method}(...$args); } public function promiseInterfaceMethodProvider() { return [ ['then', [null, null]], ['otherwise', [function (): void {}]], ['wait', [true]], ['getState', []], ['resolve', [null]], ['reject', [null]], ]; } public function testShouldCancelResultPromiseAndOutsideCurrentPromise(): void { $coroutine = new Coroutine(function () { yield 0; }); $mockPromises = [ 'result' => $this->getMockForAbstractClass(PromiseInterface::class), 'currentPromise' => $this->getMockForAbstractClass(PromiseInterface::class), ]; foreach ($mockPromises as $propName => $mockPromise) { /** * @var $mockPromise \PHPUnit_Framework_MockObject_MockObject */ $mockPromise->expects($this->once()) ->method('cancel') ->with(); $promiseProp = (new ReflectionClass(Coroutine::class))->getProperty($propName); $promiseProp->setAccessible(true); $promiseProp->setValue($coroutine, $mockPromise); } $coroutine->cancel(); } public function testWaitShouldResolveChainedCoroutines(): void { $promisor = function () { return P\Coroutine::of(function () { yield $promise = new Promise(function () use (&$promise): void { $promise->resolve(1); }); }); }; $promise = $promisor()->then($promisor)->then($promisor); $this->assertSame(1, $promise->wait()); } public function testWaitShouldHandleIntermediateErrors(): void { $promise = P\Coroutine::of(function () { yield $promise = new Promise(function () use (&$promise): void { $promise->resolve(1); }); }) ->then(function () { return P\Coroutine::of(function () { yield $promise = new Promise(function () use (&$promise): void { $promise->reject(new \Exception()); }); }); }) ->otherwise(function (\Exception $error = null) { if (!$error) { self::fail('Error did not propagate.'); } return 3; }); $this->assertSame(3, $promise->wait()); } }