Jyxo\Spl\MapIteratorTest::runMapTest PHP Method

runMapTest() private method

Runs a test on the input
private runMapTest ( array $originalData, array | Traversable $subject, Closure $callback )
$originalData array Original data for Iterators
$subject array | Traversable \Iterator input
$callback Closure Mapping callback
    private function runMapTest(array $originalData, $subject, \Closure $callback)
    {
        $iterator = new MapIterator($subject, $callback);
        $this->assertSame(count($originalData), count($iterator));
        foreach ($iterator as $key => $value) {
            $this->assertArrayHasKey($key, $originalData);
            $this->assertSame($callback($originalData[$key]), $value);
        }
        $iterator->seek(5);
        $this->assertSame($callback($originalData[5]), $iterator->current());
        $this->assertSame(array_map($callback, $originalData), $iterator->toArray());
        if (is_array($subject)) {
            $this->assertInstanceOf(\ArrayIterator::class, $iterator->getInnerIterator());
        } elseif ($subject instanceof \IteratorAggregate) {
            $this->assertInstanceOf(get_class($subject->getIterator()), $iterator->getInnerIterator());
        } else {
            $this->assertInstanceOf(get_class($subject), $iterator->getInnerIterator());
        }
    }