<?php namespace React\Promise; class FunctionResolveTest extends TestCase { /** @test */ public function shouldResolveAnImmediateValue() { $expected = 123; $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected)); resolve($expected) ->then( $mock, $this->expectCallableNever() ); } /** @test */ public function shouldResolveAFulfilledPromise() { $expected = 123; $resolved = new FulfilledPromise($expected); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected)); resolve($resolved) ->then( $mock, $this->expectCallableNever() ); } /** @test */ public function shouldResolveAThenable() { $thenable = new SimpleFulfilledTestThenable(); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo('foo')); resolve($thenable) ->then( $mock, $this->expectCallableNever() ); } /** @test */ public function shouldResolveACancellableThenable() { $thenable = new SimpleTestCancellableThenable(); $promise = resolve($thenable); $promise->cancel(); $this->assertTrue($thenable->cancelCalled); } /** @test */ public function shouldRejectARejectedPromise() { $expected = 123; $resolved = new RejectedPromise($expected); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected)); resolve($resolved) ->then( $this->expectCallableNever(), $mock ); } /** @test */ public function shouldSupportDeepNestingInPromiseChains() { $d = new Deferred(); $d->resolve(false); $result = resolve(resolve($d->promise()->then(function ($val) { $d = new Deferred(); $d->resolve($val); $identity = function ($val) { return $val; }; return resolve($d->promise()->then($identity))->then( function ($val) { return !$val; } ); }))); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(true)); $result->then($mock); } /** @test */ public function shouldSupportVeryDeepNestedPromises() { $deferreds = []; // @TODO Increase count once global-queue is merged for ($i = 0; $i < 10; $i++) { $deferreds[] = $d = new Deferred(); $p = $d->promise(); $last = $p; for ($j = 0; $j < 10; $j++) { $last = $last->then(function($result) { return $result; }); } } $p = null; foreach ($deferreds as $d) { if ($p) { $d->resolve($p); } $p = $d->promise(); } $deferreds[0]->resolve(true); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(true)); $deferreds[0]->promise()->then($mock); } /** @test */ public function returnsExtendePromiseForSimplePromise() { $promise = $this ->getMockBuilder('React\Promise\PromiseInterface') ->getMock(); $this->assertInstanceOf('React\Promise\ExtendedPromiseInterface', resolve($promise)); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
PromiseAdapter | Folder | 0755 |
|
|
PromiseTest | Folder | 0755 |
|
|
Stub | Folder | 0755 |
|
|
fixtures | Folder | 0755 |
|
|
CancellationQueueTest.php | File | 2.46 KB | 0644 |
|
DeferredTest.php | File | 1 KB | 0644 |
|
FulfilledPromiseTest.php | File | 1.48 KB | 0644 |
|
FunctionAllTest.php | File | 2.76 KB | 0644 |
|
FunctionAnyTest.php | File | 5.24 KB | 0644 |
|
FunctionCheckTypehintTest.php | File | 3.45 KB | 0644 |
|
FunctionMapTest.php | File | 4.63 KB | 0644 |
|
FunctionRaceTest.php | File | 5.03 KB | 0644 |
|
FunctionReduceTest.php | File | 8.21 KB | 0644 |
|
FunctionRejectTest.php | File | 1.4 KB | 0644 |
|
FunctionResolveTest.php | File | 4.04 KB | 0644 |
|
FunctionSomeTest.php | File | 6.53 KB | 0644 |
|
LazyPromiseTest.php | File | 2.77 KB | 0644 |
|
PromiseTest.php | File | 2.29 KB | 0644 |
|
RejectedPromiseTest.php | File | 1.48 KB | 0644 |
|
TestCase.php | File | 895 B | 0644 |
|
bootstrap.php | File | 192 B | 0644 |
|