mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-08-02 21:17:29 +02:00
Fix CsvParser skipping all rows when OPTION_CONTAINS_HEADER is true
This commit is contained in:
@@ -24,6 +24,7 @@ class CsvParser implements Parser
|
|||||||
|
|
||||||
foreach (explode(PHP_EOL, $input) as $line) {
|
foreach (explode(PHP_EOL, $input) as $line) {
|
||||||
if (!$headerWasParsed && $this->skipHeaderLine === self::OPTION_CONTAINS_HEADER) {
|
if (!$headerWasParsed && $this->skipHeaderLine === self::OPTION_CONTAINS_HEADER) {
|
||||||
|
$headerWasParsed = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,39 @@ class AbstractFactoryTest extends TestCase
|
|||||||
$this->assertInstanceOf(CsvParser::class, $parser);
|
$this->assertInstanceOf(CsvParser::class, $parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCsvParserCanParse()
|
||||||
|
{
|
||||||
|
$factory = new ParserFactory();
|
||||||
|
$parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_NO_HEADER);
|
||||||
|
|
||||||
|
$result = $parser->parse("A0,A1,A2\nB0,B1,B2\nC0,C1,C2");
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
['A0', 'A1', 'A2'],
|
||||||
|
['B0', 'B1', 'B2'],
|
||||||
|
['C0', 'C1', 'C2']
|
||||||
|
],
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCsvParserCanSkipHeader()
|
||||||
|
{
|
||||||
|
$factory = new ParserFactory();
|
||||||
|
$parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_HEADER);
|
||||||
|
|
||||||
|
$result = $parser->parse("A0,A1,A2\nB0,B1,B2\nC0,C1,C2");
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
['B0', 'B1', 'B2'],
|
||||||
|
['C0', 'C1', 'C2']
|
||||||
|
],
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testCanCreateJsonParser()
|
public function testCanCreateJsonParser()
|
||||||
{
|
{
|
||||||
$factory = new ParserFactory();
|
$factory = new ParserFactory();
|
||||||
|
Reference in New Issue
Block a user