/**
  * Is the data set valid?
  *
  * @return bool
  */
 public function isValid()
 {
     $isValid = parent::isValid();
     foreach ($this->getUniqueFields() as $uniqueField) {
         $validatedValues = array();
         foreach ($this->collectionData as $key => $values) {
             if (!is_array($values)) {
                 $values = array();
             }
             if (array_key_exists($uniqueField, $values)) {
                 $validatedValues[$key] = $values[$uniqueField];
             }
         }
         unset($key);
         $uniqueValues = array_values(array_unique($validatedValues, SORT_REGULAR));
         if (count($uniqueValues) < count($validatedValues)) {
             $isValid = false;
             $notUnique = array_keys(array_diff_assoc($validatedValues, $uniqueValues));
             foreach ($notUnique as $key) {
                 $this->collectionMessages[$key][$uniqueField][self::NOT_UNIQUE] = $this->messageTemplates[self::NOT_UNIQUE];
             }
         }
     }
     return $isValid;
 }
 public function testEmptyCollectionIsNotValidIfRequired()
 {
     $data = array();
     $this->filter->setInputFilter($this->getBaseInputFilter());
     $this->filter->setData($data);
     $this->filter->setIsRequired(true);
     $this->assertFalse($this->filter->isValid());
 }
 public function testNonRequiredFieldsAreValidated()
 {
     $invalidCollectionData = array(array('foo' => ' bazbattoolong ', 'bar' => '12345', 'baz' => 'baztoolong', 'nest' => array('foo' => ' bazbat ', 'bar' => '12345', 'baz' => '')));
     $this->filter->setInputFilter($this->getBaseInputFilter());
     $this->filter->setData($invalidCollectionData);
     $this->assertFalse($this->filter->isValid());
     $this->assertCount(2, current($this->filter->getInvalidInput()));
     $this->assertArrayHasKey('baz', current($this->filter->getMessages()));
 }