123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace React\Promise;
- class FunctionMapTest extends TestCase
- {
- protected function mapper()
- {
- return function ($val) {
- return $val * 2;
- };
- }
- protected function promiseMapper()
- {
- return function ($val) {
- return resolve($val * 2);
- };
- }
- /** @test */
- public function shouldMapInputValuesArray()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- map(
- [1, 2, 3],
- $this->mapper()
- )->then($mock);
- }
- /** @test */
- public function shouldMapInputPromisesArray()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- map(
- [resolve(1), resolve(2), resolve(3)],
- $this->mapper()
- )->then($mock);
- }
- /** @test */
- public function shouldMapMixedInputArray()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- map(
- [1, resolve(2), 3],
- $this->mapper()
- )->then($mock);
- }
- /** @test */
- public function shouldMapInputWhenMapperReturnsAPromise()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- map(
- [1, 2, 3],
- $this->promiseMapper()
- )->then($mock);
- }
- /** @test */
- public function shouldAcceptAPromiseForAnArray()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- map(
- resolve([1, resolve(2), 3]),
- $this->mapper()
- )->then($mock);
- }
- /** @test */
- public function shouldResolveToEmptyArrayWhenInputPromiseDoesNotResolveToArray()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([]));
- map(
- resolve(1),
- $this->mapper()
- )->then($mock);
- }
- /** @test */
- public function shouldPreserveTheOrderOfArrayWhenResolvingAsyncPromises()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo([2, 4, 6]));
- $deferred = new Deferred();
- map(
- [resolve(1), $deferred->promise(), resolve(3)],
- $this->mapper()
- )->then($mock);
- $deferred->resolve(2);
- }
- /** @test */
- public function shouldRejectWhenInputContainsRejection()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo(2));
- map(
- [resolve(1), reject(2), resolve(3)],
- $this->mapper()
- )->then($this->expectCallableNever(), $mock);
- }
- /** @test */
- public function shouldRejectWhenInputPromiseRejects()
- {
- $mock = $this->createCallableMock();
- $mock
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo(null));
- map(
- reject(),
- $this->mapper()
- )->then($this->expectCallableNever(), $mock);
- }
- /** @test */
- public function shouldCancelInputPromise()
- {
- $mock = $this
- ->getMockBuilder('React\Promise\CancellablePromiseInterface')
- ->getMock();
- $mock
- ->expects($this->once())
- ->method('cancel');
- map(
- $mock,
- $this->mapper()
- )->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');
- map(
- [$mock1, $mock2],
- $this->mapper()
- )->cancel();
- }
- }
|