/** * Constructor. * * Available options: * * * left_field: The left field name * * operator: The comparison operator * * self::EQUAL * * self::NOT_EQUAL * * self::IDENTICAL * * self::NOT_IDENTICAL * * self::LESS_THAN * * self::LESS_THAN_EQUAL * * self::GREATER_THAN * * self::GREATER_THAN_EQUAL * * right_field: The right field name * * throw_global_error: Whether to throw a global error (false by default) or an error tied to the left field * * @param string $leftField The left field name * @param string $operator The operator to apply * @param string $rightField The right field name * @param array $options An array of options * @param array $messages An array of error messages * * @see Base */ public function __construct($leftField, $operator, $rightField, $options = array(), $messages = array()) { $this->addOption('left_field', $leftField); $this->addOption('operator', $operator); $this->addOption('right_field', $rightField); $this->addOption('throw_global_error', false); parent::__construct(null, $options, $messages); }
$v->setPostValidator(new AndOperator(array($comparator, $comparator1))); try { $v->clean(array('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab', 'user' => array('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab'))); $t->skip('', 7); } catch (ErrorSchema $e) { $t->is(count($e->getNamedErrors()), 2, '->clean() throws an exception with all error messages'); $t->is(count($e->getGlobalErrors()), 1, '->clean() throws an exception with all error messages'); $t->is(count($e['user']->getNamedErrors()), 1, '->clean() throws an exception with all error messages'); $t->is(count($e['user']->getGlobalErrors()), 1, '->clean() throws an exception with all error messages'); $t->is(isset($e['user']) ? $e['user']->getCode() : '', 'invalid password [invalid]', '->clean() throws an exception with all error messages'); $t->is(isset($e['user']['password']) ? $e['user']['password']->getCode() : '', 'invalid', '->clean() throws an exception with all error messages'); $t->is($e->getCode(), 'invalid user [invalid password [invalid]] password [invalid]', '->clean() throws an exception with all error messages'); } // __clone() $t->diag('__clone()'); $v = new Schema(array('v1' => $v1, 'v2' => $v2)); $v1 = clone $v; $f1 = $v1->getFields(); $f = $v->getFields(); $t->is(array_keys($f1), array_keys($f), '__clone() clones embedded validators'); foreach ($f1 as $name => $validator) { $t->ok($validator !== $f[$name], '__clone() clones embedded validators'); $t->ok($validator == $f[$name], '__clone() clones embedded validators'); } $t->is($v1->getPreValidator(), null, '__clone() clones the pre validator'); $t->is($v1->getPostValidator(), null, '__clone() clones the post validator'); $v->setPreValidator(new String(array('min_length' => 4))); $v->setPostValidator(new String(array('min_length' => 4))); $v1 = clone $v; $t->ok($v1->getPreValidator() !== $v->getPreValidator(), '__clone() clones the pre validator'); $t->ok($v1->getPreValidator() == $v->getPreValidator(), '__clone() clones the pre validator');