$t->diag('implements Serializable'); class NotSerializable implements Serializable { public function serialize() { throw new Exception('Not serializable'); } public function unserialize($serialized) { throw new Exception('Not serializable'); } } function will_crash($a) { return serialize(new sfValidatorErrorSchema(new sfValidatorString())); } $a = new NotSerializable(); try { $serialized = will_crash($a); $t->pass('"sfValidatorErrorSchema" implements Serializable'); } catch (Exception $e) { $t->fail('"sfValidatorErrorSchema" implements Serializable'); } $e = new sfValidatorErrorSchema($v1); $e1 = unserialize($serialized); $t->is($e1->getMessage(), $e->getMessage(), '"sfValidatorErrorSchema" implements Serializable'); $t->is($e1->getCode(), $e->getCode(), '"sfValidatorErrorSchema" implements Serializable'); $t->is(get_class($e1->getValidator()), get_class($e->getValidator()), '"sfValidatorErrorSchema" implements Serializable'); $t->is($e1->getArguments(), $e->getArguments(), '"sfValidatorErrorSchema" implements Serializable'); $t->is($e1->getNamedErrors(), $e->getNamedErrors(), '"sfValidatorErrorSchema" implements Serializable'); $t->is($e1->getGlobalErrors(), $e->getGlobalErrors(), '"sfValidatorErrorSchema" implements Serializable');
// ->getNamedErrors() $t->diag('->getNamedErrors()'); $t->is($e->getNamedErrors(), array('e2' => $e2, '2' => $e1), '->getNamedErrors() returns all named errors'); // ->getValue() $t->diag('->getValue()'); $t->is($e->getValue(), null, '->getValue() always returns null'); // ->getArguments() $t->diag('->getArguments()'); $t->is($e->getArguments(), array(), '->getArguments() always returns an empty array'); $t->is($e->getArguments(true), array(), '->getArguments() always returns an empty array'); // ->getMessageFormat() $t->diag('->getMessageFormat()'); $t->is($e->getMessageFormat(), '', '->getMessageFormat() always returns an empty string'); // ->getMessage() $t->diag('->getMessage()'); $t->is($e->getMessage(), '"foo" is too long (1 characters max). e2 ["bar" is too short (5 characters min).] 2 ["foo" is too long (1 characters max).]', '->getMessage() returns the error message string'); // ->getCode() $t->diag('->getCode()'); $t->is($e->getCode(), 'max_length e2 [min_length] 2 [max_length]', '->getCode() returns the error code'); // implements Countable $t->diag('implements Countable'); $e = new sfValidatorErrorSchema($v1, array('e1' => $e1, 'e2' => $e2)); $t->is(count($e), 2, '"sfValidatorError" implements Countable'); // implements Iterator $t->diag('implements Iterator'); $e = new sfValidatorErrorSchema($v1, array('e1' => $e1, $e2)); $e->addError($e2, '2'); $errors = array(); foreach ($e as $name => $error) { $errors[$name] = $error; }