Server : Apache System : Linux indy02.toastserver.com 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64 User : palandch ( 1163) PHP Version : 7.1.33 Disable Function : NONE Directory : /home/palandch/Cloudflare-CPanel-7.0.1/vendor/react/promise/tests/ |
<?php namespace React\Promise; class FunctionReduceTest extends TestCase { protected function plus() { return function ($sum, $val) { return $sum + $val; }; } protected function append() { return function ($sum, $val) { return $sum . $val; }; } /** @test */ public function shouldReduceValuesWithoutInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(6)); reduce( [1, 2, 3], $this->plus() )->then($mock); } /** @test */ public function shouldReduceValuesWithInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(7)); reduce( [1, 2, 3], $this->plus(), 1 )->then($mock); } /** @test */ public function shouldReduceValuesWithInitialPromise() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(7)); reduce( [1, 2, 3], $this->plus(), resolve(1) )->then($mock); } /** @test */ public function shouldReducePromisedValuesWithoutInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(6)); reduce( [resolve(1), resolve(2), resolve(3)], $this->plus() )->then($mock); } /** @test */ public function shouldReducePromisedValuesWithInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(7)); reduce( [resolve(1), resolve(2), resolve(3)], $this->plus(), 1 )->then($mock); } /** @test */ public function shouldReducePromisedValuesWithInitialPromise() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(7)); reduce( [resolve(1), resolve(2), resolve(3)], $this->plus(), resolve(1) )->then($mock); } /** @test */ public function shouldReduceEmptyInputWithInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(1)); reduce( [], $this->plus(), 1 )->then($mock); } /** @test */ public function shouldReduceEmptyInputWithInitialPromise() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(1)); reduce( [], $this->plus(), resolve(1) )->then($mock); } /** @test */ public function shouldRejectWhenInputContainsRejection() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(2)); reduce( [resolve(1), reject(2), resolve(3)], $this->plus(), resolve(1) )->then($this->expectCallableNever(), $mock); } /** @test */ public function shouldResolveWithNullWhenInputIsEmptyAndNoInitialValueOrPromiseProvided() { // Note: this is different from when.js's behavior! // In when.reduce(), this rejects with a TypeError exception (following // JavaScript's [].reduce behavior. // We're following PHP's array_reduce behavior and resolve with NULL. $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(null)); reduce( [], $this->plus() )->then($mock); } /** @test */ public function shouldAllowSparseArrayInputWithoutInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(3)); reduce( [null, null, 1, null, 1, 1], $this->plus() )->then($mock); } /** @test */ public function shouldAllowSparseArrayInputWithInitialValue() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(4)); reduce( [null, null, 1, null, 1, 1], $this->plus(), 1 )->then($mock); } /** @test */ public function shouldReduceInInputOrder() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo('123')); reduce( [1, 2, 3], $this->append(), '' )->then($mock); } /** @test */ public function shouldAcceptAPromiseForAnArray() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo('123')); reduce( resolve([1, 2, 3]), $this->append(), '' )->then($mock); } /** @test */ public function shouldResolveToInitialValueWhenInputPromiseDoesNotResolveToAnArray() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(1)); reduce( resolve(1), $this->plus(), 1 )->then($mock); } /** @test */ public function shouldProvideCorrectBasisValue() { $insertIntoArray = function ($arr, $val, $i) { $arr[$i] = $val; return $arr; }; $d1 = new Deferred(); $d2 = new Deferred(); $d3 = new Deferred(); $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo([1, 2, 3])); reduce( [$d1->promise(), $d2->promise(), $d3->promise()], $insertIntoArray, [] )->then($mock); $d3->resolve(3); $d1->resolve(1); $d2->resolve(2); } /** @test */ public function shouldRejectWhenInputPromiseRejects() { $mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(null)); reduce( reject(), $this->plus(), 1 )->then($this->expectCallableNever(), $mock); } /** @test */ public function shouldCancelInputPromise() { $mock = $this ->getMockBuilder('React\Promise\CancellablePromiseInterface') ->getMock(); $mock ->expects($this->once()) ->method('cancel'); reduce( $mock, $this->plus(), 1 )->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'); reduce( [$mock1, $mock2], $this->plus(), 1 )->cancel(); } }