public function testMultipleArrayArg()
 {
     $validator = Factory::create([['class' => $this->class, 'options' => $this->options], ['class' => $this->class, 'options' => $this->options]]);
     $this->assertInstanceOf('Sds\\Validator\\Group', $validator);
     $this->assertTrue($validator->isValid('12')->getResult());
     $this->assertFalse($validator->isValid('1')->getResult());
     $this->assertFalse($validator->isValid('123')->getResult());
 }
 /**
  *
  * @param object $document
  * @return boolean
  */
 public function isValid($document)
 {
     $messages = [];
     $result = true;
     $metadata = $this->documentManager->getClassMetadata(get_class($document));
     if (!isset($metadata->validator)) {
         return new ValidatorResult(true, []);
     }
     // Field level validators
     if (isset($metadata->validator['fields'])) {
         foreach ($metadata->validator['fields'] as $field => $validatorDefinition) {
             //check for hashed or encrypted values - if the field has been persisted, and is unchanged,
             //it is assumed to be vaild. If the encrypted value is passed to the validators, then
             //it is likely fail, which isn't correct.
             if (isset($metadata->crypt['hash'][$field]) || isset($metadata->crypt['blockCipher'][$field])) {
                 $originalDocumentData = $this->documentManager->getUnitOfWork()->getOriginalDocumentData($document);
                 if (isset($originalDocumentData) && isset($originalDocumentData[$field]) && $originalDocumentData[$field] == $metadata->reflFields[$field]->getValue($document)) {
                     //encrypted value hasn't changed, so skip validation of it.
                     continue;
                 }
             }
             $validator = ValidatorFactory::create($validatorDefinition);
             $value = $metadata->reflFields[$field]->getValue($document);
             $validatorResult = $validator->isValid($value);
             if (!$validatorResult->getResult()) {
                 $messages[$field] = $validatorResult->getMessages();
                 $result = false;
             }
         }
     }
     // Document level validators
     if (isset($metadata->validator['document'])) {
         $validator = ValidatorFactory::create($metadata->validator['document']);
         $validatorResult = $validator->isValid($value);
         if (!$validatorResult->getResult()) {
             $messages = array_merge($messages, $validatorResult->getMessages());
             $result = false;
         }
     }
     return new ValidatorResult($result, $messages);
 }