Test the legend

This commit is contained in:
Simon Vieille 2016-05-22 23:38:17 +02:00
parent 8cb4496806
commit 522e7f9032
3 changed files with 33 additions and 1 deletions

View File

@ -23,6 +23,9 @@ $validator->addFieldConstraint(0, new Email());
// The second field must contain a date
$validator->addFieldConstraint(1, new Date());
// Validate the legend
$validator->setExceptedLegend(array('foo', 'bar', 'bim'));
// An line must contain 3 columns
$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) {
if (count($data) !== 6) { // 6 because of the legend (3 fields * 2)

View File

@ -89,6 +89,19 @@ class Validator
return $this;
}
/**
* Set the excepted legend
*
* @param array $legend Expected legend
* @return Validator
*/
public function setExceptedLegend(array $legend)
{
$this->expectedLegend = $legend;
return $this;
}
/**
* Run the validation
*/
@ -98,6 +111,7 @@ class Validator
return;
}
$this->validateLegend();
$this->validateDatas();
$this->validateFields();
@ -105,6 +119,21 @@ class Validator
$this->hasValidate = true;
}
protected function validateLegend()
{
if (!$this->parser->getHasLegend()) {
return;
}
if (null === $this->expectedLegend) {
return;
}
if ($this->parser->getLegend() !== $this->expectedLegend) {
$this->mergeErrorMessage('Invalid legend.', 1);
}
}
/**
* Validates datas
*/

View File

@ -1,4 +1,4 @@
"foo";"bar";""
"foo";"bar";"boo"
"foo1";"1989-07-27";""
"foo2@bar.com";"bar2";""
"foo3@bar.com";"1989-07-27"

Can't render this file because it has a wrong number of fields in line 4.