/**
  * @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());
 }