csv/tests/CsvTest.php

144 lines
4.8 KiB
PHP
Raw Normal View History

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
}
}