2015-03-09 20:05:36 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Deblan\Csv\Csv;
|
2020-02-10 16:24:56 +01:00
|
|
|
use PHPUnit\Framework\TestCase;
|
2017-03-12 15:04:19 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* class CsvTest.
|
|
|
|
*
|
|
|
|
* @author Simon Vieille <simon@deblan.fr>
|
|
|
|
*/
|
2020-02-10 16:24:56 +01:00
|
|
|
class CsvTest extends TestCase
|
2015-03-09 20:05:36 +01:00
|
|
|
{
|
2017-03-12 15:04:19 +01:00
|
|
|
public function testGettersAndSettersAndDefaultValues()
|
2015-03-09 20:05:36 +01:00
|
|
|
{
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$this->assertEquals(';', $csv->getDelimiter());
|
|
|
|
$csv->setDelimiter('#');
|
|
|
|
$this->assertEquals('#', $csv->getDelimiter());
|
2017-03-12 18:58:44 +01:00
|
|
|
|
2017-03-12 17:57:30 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$this->assertEquals('"', $csv->getEnclosure());
|
|
|
|
$csv->setEnclosure('#');
|
|
|
|
$this->assertEquals('#', $csv->getEnclosure());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$this->assertEquals("\n", $csv->getEndOfLine());
|
|
|
|
$csv->setEndOfLine("\r\n");
|
|
|
|
$this->assertEquals("\r\n", $csv->getEndOfLine());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$this->assertEquals([], $csv->getDatas());
|
|
|
|
$csv->setDatas([['a', 'b', 'c'], ['d', 'e', 'f']]);
|
|
|
|
$this->assertEquals([['a', 'b', 'c'], ['d', 'e', 'f']], $csv->getDatas());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$this->assertEquals([], $csv->getHeaders());
|
|
|
|
$csv->setHeaders(['a', 'b', 'c']);
|
|
|
|
$this->assertEquals(['a', 'b', 'c'], $csv->getHeaders());
|
2016-05-19 13:41:56 +02:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$this->assertEquals('UTF-8', $csv->getCharset());
|
|
|
|
$csv->setCharset('ISO-8859-1');
|
|
|
|
$this->assertEquals('ISO-8859-1', $csv->getCharset());
|
|
|
|
}
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
public function testRender()
|
|
|
|
{
|
|
|
|
$csv = new Csv();
|
|
|
|
$this->assertEquals(null, $csv->render());
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$this->assertEquals('"foo";"bar"', $csv->render());
|
2015-03-10 09:11:28 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->appendData(['foo', 'bar']);
|
|
|
|
$csv->appendData(['foo2', 'bar2']);
|
|
|
|
$this->assertEquals('"foo";"bar"'."\n".'"foo2";"bar2"', $csv->render());
|
2015-03-10 09:11:28 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$csv->preprendData(['foo2', 'bar2']);
|
|
|
|
$csv->preprendData(['foo', 'bar']);
|
|
|
|
$this->assertEquals('"foo";"bar"'."\n".'"foo2";"bar2"', $csv->render());
|
2015-03-09 20:09:20 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$csv->preprendData(['foo2', 'bar2']);
|
|
|
|
$csv->appendData(['foo3', 'bar3']);
|
|
|
|
$this->assertEquals('"foo2";"bar2"'."\n".'"foo";"bar"'."\n".'"foo3";"bar3"', $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$csv->setHeaders(['a"b', 'cd"']);
|
|
|
|
$csv->addData(['f"oo', 'b""ar']);
|
|
|
|
$this->assertEquals('"a""b";"cd"""'."\n".'"f""oo";"b""""ar"', $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv = new Csv();
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$csv->addData(['foo2', 'bar2']);
|
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$csv->setEndOfLine("\r\n");
|
|
|
|
$this->assertEquals('"a";"b"'."\r\n".'"foo";"bar"'."\r\n".'"foo2";"bar2"', $csv->render());
|
|
|
|
|
|
|
|
$csv = new Csv();
|
|
|
|
$csv->setHeaders(['a', "b'd"]);
|
|
|
|
$csv->addData(["fo'o", 'bar']);
|
|
|
|
$csv->setEnclosure("'");
|
|
|
|
$this->assertEquals("'a';'b''d'"."\n"."'fo''o';'bar'", $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$csv->setDelimiter('#');
|
|
|
|
$this->assertEquals('"a"#"b"'."\n".'"foo"#"bar"', $csv->render());
|
2017-03-12 18:58:44 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
$filename = tempnam(sys_get_temp_dir(), 'csvtests');
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$render = $csv->render($filename);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', $render);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', file_get_contents($filename));
|
|
|
|
$render = $csv->render($filename);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', $render);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"', file_get_contents($filename));
|
|
|
|
|
|
|
|
unlink($filename);
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->setHeaders(['a', 'b']);
|
|
|
|
$csv->addData(['foo', 'bar']);
|
|
|
|
$csv->render($filename);
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->addData(['foo2', 'bar2']);
|
|
|
|
$render = $csv->render($filename, FILE_APPEND);
|
|
|
|
$this->assertEquals('"a";"b"'."\n".'"foo";"bar"'."\n".'"foo2";"bar2"', file_get_contents($filename));
|
2017-03-12 18:58:44 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
unlink($filename);
|
|
|
|
}
|
2015-03-09 20:05:36 +01:00
|
|
|
|
2017-03-12 15:04:19 +01:00
|
|
|
public function testEncoding()
|
|
|
|
{
|
2015-03-09 20:05:36 +01:00
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->addData(['é']);
|
|
|
|
$render = $csv->render();
|
|
|
|
$this->assertEquals('"é"', $csv->render());
|
2015-03-09 20:05:36 +01:00
|
|
|
|
|
|
|
$csv = new Csv();
|
2017-03-12 15:04:19 +01:00
|
|
|
$csv->addData(['é']);
|
|
|
|
$csv->setCharset('ISO-8859-1');
|
|
|
|
$render = $csv->render();
|
|
|
|
$this->assertEquals('"é"', utf8_encode($csv->render()));
|
2015-03-09 20:05:36 +01:00
|
|
|
}
|
|
|
|
}
|