/** * @expectedException InvalidArgumentException */ public function testDirectoryValidation() { $target_file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'line_sample.txt'; $enumerator = new Enumerator($target_file, new DirectoryReader()); foreach ($enumerator->enumerate() as $inode) { } }
public function testFunctionMap() { $enumerator = new Enumerator($this->sample(), new LineReader(new FunctionMapTransformer(function ($value) { return preg_split('/-/', trim($value)); }))); $collector = []; foreach ($enumerator->enumerate() as $values) { $collector[] = $values; } $expected = [["lorem"], ["ipsum"], ["dolor", "sit"]]; $this->assertEquals($expected, $collector, "Last value should be an array with two elements"); }
public function testTransformerAll() { $transformer = new CSVTransformer(); $transformer->mapColumn(0, function () { return 1; }); $transformer->columnsToNames([0 => "First", 1 => "Second", 2 => "Third"]); $transformer->onlyColumns(0, 2); $enumerator = new Enumerator($this->sample(), new CSVReader(CSVReader::COMMA_DELIMITED, $transformer)); $rows = []; foreach ($enumerator->enumerate() as $row) { $rows[] = $row; } $expected = [["First" => 1, "Third" => "dolor"], ["First" => 1, "Third" => "consectetur"], ["First" => 1, "Third" => "Donec"]]; $this->assertEquals($expected, $rows, "Transformations should work well togheter :)"); }
public function testTwoChainedFunctionMapTransformers() { $transformers = new FunctionMapTransformer(function ($value) { return $value . '_first'; }); $transformers->chain(new FunctionMapTransformer(function ($value) { return $value . '_second'; })); $enumerator = new Enumerator(__DIR__ . '/data/line_sample.txt', new LineReader($transformers)); $collector = []; foreach ($enumerator->enumerate() as $line) { $collector[] = $line; } $expected_raw = file(__DIR__ . '/data/line_sample.txt'); $expected = []; foreach ($expected_raw as $raw_line) { $expected[] = $raw_line . '_first_second'; } $this->assertEquals($expected, $collector, "Order should be preserved in transformer chaining"); }