/** * @see ValueValidatorObject::doValidation * * @since 0.1 * * @param mixed $value */ public function doValidation($value) { if (!is_string($value) && !is_int($value) && !is_float($value)) { $this->addErrorMessage('Dimension is not a string, float or int'); return; } if (!is_string($value)) { $value = (string) $value; } if ($value === 'auto') { if (!$this->allowAuto) { $this->addErrorMessage('Dimension value cannot be auto'); } return; } if (!preg_match('/^\\d+(\\.\\d+)?(' . implode('|', $this->allowedUnits) . ')$/', $value)) { $this->addErrorMessage('Not a valid dimension value'); return; } if (strpos($value, '%') !== false) { $upperBound = $this->maxPercentage; $lowerBound = $this->minPercentage; } else { $upperBound = $this->upperBound; $lowerBound = $this->lowerBound; } $value = (double) preg_replace('/[^0-9]/', '', $value); $rangeValidator = new RangeValidator(); $rangeValidator->setRange($lowerBound, $upperBound); $this->runSubValidator($value, $rangeValidator); }
/** * @dataProvider outsideBoundsProvider */ public function testNumberOutsideRange_WhenSetWithSetRange($number, $lowerBound, $upperBound) { $rangeValidator = new RangeValidator(); $rangeValidator->setRange($lowerBound, $upperBound); $this->assertFalse($rangeValidator->validate($number)->isValid()); }