public final function testThatReturnsNewInstanceOfCorrectTypeWithSameScheme(\Pinq\ITraversable $traversable, array $data)
{
$originalType = get_class($traversable);
$originalScheme = $traversable->getIteratorScheme();
$returnedTraversable = $this->_testReturnsNewInstanceOfSameTypeWithSameScheme($traversable);
if ($returnedTraversable === self::$instance) {
return;
}
$this->assertNotSame($traversable, $returnedTraversable);
if ($traversable instanceof \Pinq\IQueryable) {
$this->assertInstanceOf(\Pinq\IQueryable::IQUERYABLE_TYPE, $returnedTraversable);
} else {
$this->assertInstanceOf(\Pinq\IQueryable::ITRAVERSABLE_TYPE, $returnedTraversable);
}
$this->assertSame($originalScheme, $returnedTraversable->getIteratorScheme());
}