/** * @param callable $callback * @param mixed|null $initial * @return mixed */ public function reduce(callable $callback, $initial = null) { $items = $this->toArray(); return Arrays::reduce($items, $callback, $initial); }
/** * @dataProvider dataReduceProvider * * @param $callback * @param $initial * @param $array * @param $expect */ public function testReduce($callback, $initial, $array, $expect) { $actual = Arrays::reduce($array, $callback, $initial); $this->assertEquals($expect, $actual); $this->assertEquals(json_encode($expect), json_encode($actual)); }
/** * @dataProvider callbackDataProvider * * @param $method * @param $callback * @param $expect * @param $value * @param $key */ public function testCallbacks($method, $callback, $initial, $expect, $value, $key = null) { $actual = Arrays::reduce($value, $callback, $initial); $this->assertEquals($expect, $actual, $method); }