public function testCanSetAndRetrieveErrors()
 {
     $errors = array('foo', 'bar');
     $e = new ValidationException('Foo');
     $e->setErrors($errors);
     $this->assertEquals($errors, $e->getErrors());
 }
 /**
  * {@inheritdoc}
  * @todo Needs to recurse over nested errors
  */
 public function bind(FormInterface $form, ValidationException $validationException)
 {
     // Attach exception message to root form
     // todo: general error message is non user-friendly, removing for now
     //$form->addError(new FormError($validationException->getMessage()));
     $errors = $validationException->getErrors();
     // Iterate over errors and bind to form
     foreach ($errors as $field => $message) {
         if ($form->get(self::STEP_FORM_NAME)->has($field)) {
             if (is_array($message)) {
                 foreach ($message as $subField => $subMessage) {
                     if ($form->get(self::STEP_FORM_NAME)->get($field)->has($subField)) {
                         $form->get(self::STEP_FORM_NAME)->get($field)->get($subField)->addError(new FormError($subMessage));
                     }
                 }
             } else {
                 $form->get(self::STEP_FORM_NAME)->get($field)->addError(new FormError($message));
             }
             unset($errors[$field]);
         } elseif (is_array($message)) {
             foreach ($message as $key => $error) {
                 if (is_numeric($key)) {
                     if ($form->get(self::STEP_FORM_NAME)->has($field)) {
                         if ($form->get(self::STEP_FORM_NAME)->get($field)->has($key)) {
                             $this->recurseErrors($form->get(self::STEP_FORM_NAME)->get($field)->get($key), $message);
                         }
                     }
                 }
             }
         } elseif (preg_match('/^\\[([a-z0-9_]+)\\].*$/i', $message, $matches)) {
             if (isset($matches[1]) && $form->get(self::STEP_FORM_NAME)->has($matches[1])) {
                 $form->get(self::STEP_FORM_NAME)->get($matches[1])->addError(new FormError($message));
                 unset($errors[$field]);
             }
         }
     }
     // Iterate over errors and bind remaining errors to form
     foreach ($errors as $message) {
         if (is_string($message)) {
             $form->get(self::STEP_FORM_NAME)->addError(new FormError($message));
         }
     }
 }