LineIteratorTest.php in Feeds extensible parsers 8
File
tests/src/Unit/File/LineIteratorTest.php
View source
<?php
namespace Drupal\Tests\feeds_ex\Unit\File;
use Drupal\Component\Serialization\Json;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Tests\feeds_ex\Unit\UnitTestBase;
use Drupal\feeds_ex\File\LineIterator;
class LineIteratorTest extends UnitTestBase {
public function test() {
$iterator = new LineIterator($this->moduleDir . '/tests/resources/test.jsonl');
$this
->assertCount(4, iterator_to_array($iterator));
}
public function testLineLimit() {
foreach (range(1, 4) as $limit) {
$iterator = new LineIterator($this->moduleDir . '/tests/resources/test.jsonl');
$iterator
->setLineLimit($limit);
$array = iterator_to_array($iterator);
$this
->assertCount($limit, $array, new FormattableMarkup('@count lines read.', [
'@count' => count($array),
]));
}
}
public function testFileResume() {
$iterator = new LineIterator($this->moduleDir . '/tests/resources/test.jsonl');
$iterator
->setLineLimit(1);
foreach ([
'Gilbert',
'Alexa',
'May',
'Deloise',
] as $name) {
foreach ($iterator as $line) {
$line = Json::decode($line);
$this
->assertSame($line['name'], $name);
}
$iterator
->setStartPosition($iterator
->ftell());
}
}
}