init
This commit is contained in:
211
vendor/react/promise/tests/FunctionRaceTest.php
vendored
Executable file
211
vendor/react/promise/tests/FunctionRaceTest.php
vendored
Executable file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
|
||||
namespace React\Promise;
|
||||
|
||||
class FunctionRaceTest extends TestCase
|
||||
{
|
||||
/** @test */
|
||||
public function shouldResolveEmptyInput()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(null));
|
||||
|
||||
race(
|
||||
[]
|
||||
)->then($mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldResolveValuesArray()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(1));
|
||||
|
||||
race(
|
||||
[1, 2, 3]
|
||||
)->then($mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldResolvePromisesArray()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(2));
|
||||
|
||||
$d1 = new Deferred();
|
||||
$d2 = new Deferred();
|
||||
$d3 = new Deferred();
|
||||
|
||||
race(
|
||||
[$d1->promise(), $d2->promise(), $d3->promise()]
|
||||
)->then($mock);
|
||||
|
||||
$d2->resolve(2);
|
||||
|
||||
$d1->resolve(1);
|
||||
$d3->resolve(3);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldResolveSparseArrayInput()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(null));
|
||||
|
||||
race(
|
||||
[null, 1, null, 2, 3]
|
||||
)->then($mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldRejectIfFirstSettledPromiseRejects()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(2));
|
||||
|
||||
$d1 = new Deferred();
|
||||
$d2 = new Deferred();
|
||||
$d3 = new Deferred();
|
||||
|
||||
race(
|
||||
[$d1->promise(), $d2->promise(), $d3->promise()]
|
||||
)->then($this->expectCallableNever(), $mock);
|
||||
|
||||
$d2->reject(2);
|
||||
|
||||
$d1->resolve(1);
|
||||
$d3->resolve(3);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldAcceptAPromiseForAnArray()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(1));
|
||||
|
||||
race(
|
||||
resolve([1, 2, 3])
|
||||
)->then($mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldResolveToNullWhenInputPromiseDoesNotResolveToArray()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(null));
|
||||
|
||||
race(
|
||||
resolve(1)
|
||||
)->then($mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldRejectWhenInputPromiseRejects()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('__invoke')
|
||||
->with($this->identicalTo(null));
|
||||
|
||||
race(
|
||||
reject()
|
||||
)->then($this->expectCallableNever(), $mock);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldCancelInputPromise()
|
||||
{
|
||||
$mock = $this
|
||||
->getMockBuilder('React\Promise\CancellablePromiseInterface')
|
||||
->getMock();
|
||||
$mock
|
||||
->expects($this->once())
|
||||
->method('cancel');
|
||||
|
||||
race($mock)->cancel();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldCancelInputArrayPromises()
|
||||
{
|
||||
$mock1 = $this
|
||||
->getMockBuilder('React\Promise\CancellablePromiseInterface')
|
||||
->getMock();
|
||||
$mock1
|
||||
->expects($this->once())
|
||||
->method('cancel');
|
||||
|
||||
$mock2 = $this
|
||||
->getMockBuilder('React\Promise\CancellablePromiseInterface')
|
||||
->getMock();
|
||||
$mock2
|
||||
->expects($this->once())
|
||||
->method('cancel');
|
||||
|
||||
race([$mock1, $mock2])->cancel();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldNotCancelOtherPendingInputArrayPromisesIfOnePromiseFulfills()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->never())
|
||||
->method('__invoke');
|
||||
|
||||
$deferred = New Deferred($mock);
|
||||
$deferred->resolve();
|
||||
|
||||
$mock2 = $this
|
||||
->getMockBuilder('React\Promise\CancellablePromiseInterface')
|
||||
->getMock();
|
||||
$mock2
|
||||
->expects($this->never())
|
||||
->method('cancel');
|
||||
|
||||
race([$deferred->promise(), $mock2])->cancel();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function shouldNotCancelOtherPendingInputArrayPromisesIfOnePromiseRejects()
|
||||
{
|
||||
$mock = $this->createCallableMock();
|
||||
$mock
|
||||
->expects($this->never())
|
||||
->method('__invoke');
|
||||
|
||||
$deferred = New Deferred($mock);
|
||||
$deferred->reject();
|
||||
|
||||
$mock2 = $this
|
||||
->getMockBuilder('React\Promise\CancellablePromiseInterface')
|
||||
->getMock();
|
||||
$mock2
|
||||
->expects($this->never())
|
||||
->method('cancel');
|
||||
|
||||
race([$deferred->promise(), $mock2])->cancel();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user