/** * @dataProvider providerIsValid */ public function testIsValid($expected, $value) { $validator = new NumericValidator(); $result = $validator->isValid($value); $this->assertEquals($expected, $result); if (!$expected) { $expectedParameters = array('value' => $value); $expectedError = new ValidationError(NumericValidator::CODE, NumericValidator::MESSAGE, $expectedParameters); $resultErrors = $validator->getErrors(); $this->assertEquals(array($expectedError), $resultErrors); } }
/** * Checks whether a value is a numeric value with a minimum and/or maximum * @param mixed $value * @return boolean true if the value is a valid value, false otherwise */ public function isValid($value) { $result = parent::isValid($value); if (!$result) { return false; } if (!$this->isRequired && empty($value)) { return true; } if ($this->minimum !== null && $this->maximum !== null) { if ($value < $this->minimum || $value > $this->maximum) { $this->addMinMaxError($value); return false; } } elseif ($this->minimum !== null) { if ($value < $this->minimum) { $this->addMinimumError($value); return false; } } else { if ($this->maximum !== null) { if ($value > $this->maximum) { $this->addMaximumError($value); return false; } } } return true; }
/** * Construct a new size validator instance * @param array $options options for this instance * @return null * @throws zibo\ZiboException when no minimum or maximum option is provided * @throws zibo\ZiboException when no minimum or maximum is not a valid value */ public function __construct(array $options = array()) { if (!isset($options[self::OPTION_MINIMUM]) && !isset($options[self::OPTION_MAXIMUM])) { throw new ZiboException('No minimum nor maximum option provided'); } if (isset($options[self::OPTION_MINIMUM])) { if (!parent::isValid($options[self::OPTION_MINIMUM])) { throw new ZiboException('Provided minimum is invalid'); } $this->minimum = $options[self::OPTION_MINIMUM]; } if (isset($options[self::OPTION_MAXIMUM])) { if (!parent::isValid($options[self::OPTION_MAXIMUM])) { throw new ZiboException('Provided maximum is invalid'); } $this->maximum = $options[self::OPTION_MAXIMUM]; } }