* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); $t = new lime_test(14); $v = new sfValidatorString(); $e = new sfValidatorError($v, 'max_length', array('value' => 'foo
', 'max_length' => 1)); // ->getValue() $t->diag('->getValue()'); $t->is($e->getValue(), 'foo
', '->getValue() returns the value that has been validated with the validator'); $e1 = new sfValidatorError($v, 'max_length', array('max_length' => 1)); $t->is($e1->getValue(), null, '->getValue() returns null if there is no value key in arguments'); // ->getValidator() $t->diag('->getValidator()'); $t->is($e->getValidator(), $v, '->getValidator() returns the validator that triggered this exception'); // ->getArguments() $t->diag('->getArguments()'); $t->is($e->getArguments(), array('%value%' => 'foo<br />', '%max_length%' => 1), '->getArguments() returns the arguments needed to format the error message, escaped according to the current charset'); $t->is($e->getArguments(true), array('value' => 'foo
', 'max_length' => 1), '->getArguments() takes a Boolean as its first argument to return the raw arguments'); // ->getMessageFormat() $t->diag('->getMessageFormat()'); $t->is($e->getMessageFormat(), $v->getMessage($e->getCode()), '->getMessageFormat()'); // ->getMessage() $t->diag('->getMessage()'); $t->is($e->getMessage(), '"foo<br />" is too long (1 characters max).', '->getMessage() returns the error message string'); // ->getCode() $t->diag('->getCode()'); $t->is($e->getCode(), 'max_length', '->getCode() returns the error code'); // ->__toString() $t->diag('__toString()'); $t->is($e->__toString(), $e->getMessage(), '->__toString() returns the error message string'); // implements Serializable $t->diag('implements Serializable'); // we test with non serializable objects // to ensure that the errors are always serializable // even if you use PDO as a session handler 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 sfValidatorError(new sfValidatorString(), 'max_length', array('value' => 'foo
', 'max_length' => 1))); } $a = new NotSerializable(); try { $serialized = will_crash($a); $t->pass('sfValidatorError implements Serializable'); } catch (Exception $e) { $t->fail('sfValidatorError implements Serializable'); } $e1 = unserialize($serialized); $t->is($e1->getMessage(), $e->getMessage(), 'sfValidatorError implements Serializable'); $t->is($e1->getCode(), $e->getCode(), 'sfValidatorError implements Serializable'); $t->is(get_class($e1->getValidator()), get_class($e->getValidator()), 'sfValidatorError implements Serializable'); $t->is($e1->getArguments(), $e->getArguments(), 'sfValidatorError implements Serializable');