public function testApiReduce_ProvidesCorrectBasisValue()
{
$test = $this->getTest();
$insertIntoArray = function ($arr, $val, $i) {
$arr[$i] = $val;
return $arr;
};
$d1 = new Deferred();
$d2 = new Deferred();
$d3 = new Deferred();
$mock = $test->createCallableMock();
$mock->expects($test->once())->method('__invoke')->with($test->identicalTo([1, 2, 3]));
Promise::reduce([$d1->getPromise(), $d2->getPromise(), $d3->getPromise()], $insertIntoArray, [])->then($mock);
$d3->resolve(3);
$d1->resolve(1);
$d2->resolve(2);
}