public function testIteratorReduce() { $rangeIterator = new RangeIterator(1, 2); $genericObject1 = new stdClass(); $genericObject1->test = 5; $genericObject2 = new stdClass(); $genericObject2->test = 10; $arrayIterator = new ArrayIterator(array($genericObject1, $genericObject2)); $this->assertEquals(3, IterUtil::iterator_reduce($rangeIterator, function (&$carry, $element) { return $carry += $element; })); $this->assertEquals(5, IterUtil::iterator_reduce($rangeIterator, function (&$carry, $element) { return $carry += $element; }, 2)); $this->assertEquals(15, IterUtil::iterator_reduce($arrayIterator, function (&$carry, $element) { return $carry += $element->test; })); $this->assertEquals(19, IterUtil::iterator_reduce($arrayIterator, function (&$carry, $element) { return $carry += $element->test; }, 4)); }