diff --git a/README.md b/README.md
index 60a693c..3b2a3d3 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@ $validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Date());
// Validate the legend
-$validator->setExpectedLegend(array('foo', 'bar', 'bim'));
+$validator->setExpectedHeaders(['foo', 'bar', 'bim']);
// An line must contain 3 columns
$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) {
@@ -55,10 +55,10 @@ $validator->addDataConstraint(new Callback(function($data, ExecutionContextInter
}));
// Initialisation of the parser
-$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv');
-$parser->setHasLegend(true);
+$parser = new CsvParser();
+$parser->setHasHeaders(true);
-$validator->validate($parser);
+$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv'));
if ($validator->isValid() === false) {
foreach ($validator->getErrors() as $error) {
@@ -80,6 +80,39 @@ EOF;
}
```
+Run `example.php` and see results:
+
+```
+
+ - Line: 1
+ - Column:
+ -
+
Invalid legend.
+
+
+
+
+
+```
+
Contributors
------------
diff --git a/composer.json b/composer.json
index c9aa77f..4e8a836 100644
--- a/composer.json
+++ b/composer.json
@@ -17,6 +17,6 @@
"require": {
"php": ">=5.6.0",
"symfony/validator": "2.*",
- "deblan/csv": "v1.1"
+ "deblan/csv": "v2.0.*"
}
}
diff --git a/example.php b/example.php
index 48250f6..595e5c5 100644
--- a/example.php
+++ b/example.php
@@ -20,7 +20,7 @@ $validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Date());
// Validate the legend
-$validator->setExpectedLegend(array('foo', 'bar', 'bim'));
+$validator->setExpectedHeaders(['foo', 'bar', 'bim']);
// An line must contain 3 columns
$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) {
@@ -30,17 +30,17 @@ $validator->addDataConstraint(new Callback(function($data, ExecutionContextInter
}));
// Initialisation of the parser
-$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv');
-$parser->setHasLegend(true);
+$parser = new CsvParser();
+$parser->setHasHeaders(true);
-$validator->validate($parser);
+$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv'));
if ($validator->isValid() === false) {
foreach ($validator->getErrors() as $error) {
- $line = $error->getLine();
+ $line = $error->getLine();
$column = $error->getColumn();
$message = $error->getViolation()->getMessage();
-
+
echo <<
Line: $line
diff --git a/src/Deblan/CsvValidator/Validator.php b/src/Deblan/CsvValidator/Validator.php
index ee22932..6374910 100644
--- a/src/Deblan/CsvValidator/Validator.php
+++ b/src/Deblan/CsvValidator/Validator.php
@@ -49,7 +49,7 @@ class Validator
/**
* @var array
*/
- protected $expectedLegend = [];
+ protected $expectedHeaders = [];
/**
* Constructor.
@@ -105,9 +105,9 @@ class Validator
*
* @return Validator
*/
- public function setExpectedLegend(array $legend)
+ public function setExpectedHeaders(array $legend)
{
- $this->expectedLegend = $legend;
+ $this->expectedHeaders = $legend;
return $this;
}
@@ -121,13 +121,12 @@ class Validator
{
if ($this->parser !== $parser) {
$this->parser = $parser;
- $this->parser->parse();
$this->errors = [];
} elseif ($this->hasValidate) {
return;
}
- $this->validateLegend();
+ $this->validateHeaders();
$this->validateDatas();
$this->validateFields();
@@ -137,17 +136,17 @@ class Validator
/**
* Validates the legend.
*/
- protected function validateLegend()
+ protected function validateHeaders()
{
- if (!$this->parser->getHasLegend()) {
+ if (!$this->parser->getHasHeaders()) {
return;
}
- if (empty($this->expectedLegend)) {
+ if (empty($this->expectedHeaders)) {
return;
}
- if ($this->parser->getLegend() !== $this->expectedLegend) {
+ if ($this->parser->getHeaders() !== $this->expectedHeaders) {
$this->mergeErrorMessage('Invalid legend.', 1);
}
}
@@ -294,7 +293,7 @@ class Validator
*/
protected function getTrueLine($line)
{
- if ($this->parser->getHasLegend()) {
+ if ($this->parser->getHasHeaders()) {
++$line;
}
diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php
new file mode 100644
index 0000000..4d0705f
--- /dev/null
+++ b/tests/ExampleTest.php
@@ -0,0 +1,44 @@
+
+ */
+class ExampleTest extends \PHPUnit_Framework_TestCase
+{
+ public function testExemple()
+ {
+ $content = shell_exec('php -f '.__DIR__.'/../example.php');
+
+ $this->assertEquals('
+ - Line: 1
+ - Column:
+ -
+
Invalid legend.
+
+
+
+
+
+', $content);
+ }
+}
diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php
index 4c8c617..f3d75ac 100644
--- a/tests/ValidatorTest.php
+++ b/tests/ValidatorTest.php
@@ -16,20 +16,20 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
$validator->isValid();
}
- public function testExpectedLegend()
+ public function testExpectedHeaders()
{
$parser = $this->generateParser('example.csv');
- $parser->setHasLegend(true);
+ $parser->setHasHeaders(true);
$validator = $this->generateValidator();
- $validator->setExpectedLegend(['foo', 'bar', 'boo']);
- $validator->validate($parser);
+ $validator->setExpectedHeaders(['foo', 'bar', 'boo']);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
$validator = $this->generateValidator();
- $validator->setExpectedLegend(['bad', 'legend']);
- $validator->validate($parser);
+ $validator->setExpectedHeaders(['bad', 'legend']);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(1, count($validator->getErrors()));
}
@@ -38,7 +38,7 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
{
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(true, $validator->isValid());
}
@@ -47,14 +47,14 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new NotBlank());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(1, new NotBlank());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
@@ -62,24 +62,24 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new NotBlank());
$validator->addFieldConstraint(1, new NotBlank());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
}
public function testFieldContraintsKo()
{
- $parser = $this->generateParser('example.csv');
+ $parser = $this->generateParser();
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new Email());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(2, count($validator->getErrors()));
- $parser = $this->generateParser('example.csv');
+ $parser = $this->generateParser();
$validator = $this->generateValidator();
$validator->addFieldConstraint(1, new Email());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(5, count($validator->getErrors()));
@@ -87,14 +87,14 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Email());
- $validator->validate($parser);
+ $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(7, count($validator->getErrors()));
}
- protected function generateParser($file)
+ protected function generateParser()
{
- return new CsvParser(__DIR__.'/fixtures/'.$file);
+ return new CsvParser();
}
protected function generateValidator()