Просмотр исходного кода

[ZF-8875] Zend_Validate:

- changed number representation for plain numbers

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20454 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 лет назад
Родитель
Сommit
6c68ca98fe

+ 9 - 5
library/Zend/Validate/File/FilesSize.php

@@ -128,12 +128,14 @@ class Zend_Validate_File_FilesSize extends Zend_Validate_File_Size
 
             // limited to 2GB files
             $size += @filesize($files);
-            $this->_setSize($size);
+            $this->_size = $size;
             if (($max !== null) && ($max < $size)) {
                 if ($this->useByteString()) {
-                    $this->setMax($this->_toByteString($max));
+                    $this->_max  = $this->_toByteString($max);
+                    $this->_size = $this->_toByteString($size);
                     $this->_throw($file, self::TOO_BIG);
-                    $this->setMax($max);
+                    $this->_max  = $max;
+                    $this->_size = $size;
                 } else {
                     $this->_throw($file, self::TOO_BIG);
                 }
@@ -143,9 +145,11 @@ class Zend_Validate_File_FilesSize extends Zend_Validate_File_Size
         // Check that aggregate files are >= minimum size
         if (($min !== null) && ($size < $min)) {
             if ($this->useByteString()) {
-                $this->setMin($this->_toByteString($min));
+                $this->_min  = $this->_toByteString($min);
+                $this->_size = $this->_toByteString($size);
                 $this->_throw($file, self::TOO_SMALL);
-                $this->setMin($min);
+                $this->_min  = $min;
+                $this->_size = $size;
             } else {
                 $this->_throw($file, self::TOO_SMALL);
             }

+ 2 - 1
library/Zend/Validate/File/Size.php

@@ -280,7 +280,8 @@ class Zend_Validate_File_Size extends Zend_Validate_Abstract
         }
 
         // limited to 4GB files
-        $size = sprintf("%u", @filesize($value));
+        $size        = sprintf("%u", @filesize($value));
+        $this->_size = $size;
 
         // Check to see if it's smaller than min size
         $min = $this->getMin(true);

+ 24 - 2
tests/Zend/Validate/File/FilesSizeTest.php

@@ -195,8 +195,30 @@ class Zend_Validate_File_FilesSizeTest extends PHPUnit_Framework_TestCase
         $handler = set_error_handler(array($this, 'errorHandler'), E_USER_NOTICE);
         $validator = new Zend_Validate_File_FilesSize(1000, 10000);
         restore_error_handler();
-// @todo: Preperation for 2.0... needs to be cleared with the dev-team
-//        $this->assertTrue($this->multipleOptionsDetected);
+    }
+
+    /**
+     * Ensures that the validator returns size infos
+     *
+     * @return void
+     */
+    public function testFailureMessage()
+    {
+        $validator = new Zend_Validate_File_FilesSize(array('min' => 9999, 'max' => 10000));
+        $this->assertFalse($validator->isValid(array(
+            dirname(__FILE__) . '/_files/testsize.mo',
+            dirname(__FILE__) . '/_files/testsize.mo',
+            dirname(__FILE__) . '/_files/testsize2.mo')));
+        $this->assertContains('9.76kB', current($validator->getMessages()));
+        $this->assertContains('1.55kB', current($validator->getMessages()));
+
+        $validator = new Zend_Validate_File_FilesSize(array('min' => 9999, 'max' => 10000, 'bytestring' => false));
+        $this->assertFalse($validator->isValid(array(
+            dirname(__FILE__) . '/_files/testsize.mo',
+            dirname(__FILE__) . '/_files/testsize.mo',
+            dirname(__FILE__) . '/_files/testsize2.mo')));
+        $this->assertContains('9999', current($validator->getMessages()));
+        $this->assertContains('1588', current($validator->getMessages()));
     }
 
     public function errorHandler($errno, $errstr)

+ 18 - 0
tests/Zend/Validate/File/SizeTest.php

@@ -198,6 +198,24 @@ class Zend_Validate_File_SizeTest extends PHPUnit_Framework_TestCase
         $validator->setMax('0.000000000000001 YB');
         $this->assertEquals('1.13GB', $validator->getMax());
     }
+
+    /**
+     * Ensures that the validator returns size infos
+     *
+     * @return void
+     */
+    public function testFailureMessage()
+    {
+        $validator = new Zend_Validate_File_Size(array('min' => 9999, 'max' => 10000));
+        $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/testsize.mo'));
+        $this->assertContains('9.76kB', current($validator->getMessages()));
+        $this->assertContains('794B', current($validator->getMessages()));
+
+        $validator = new Zend_Validate_File_Size(array('min' => 9999, 'max' => 10000, 'bytestring' => false));
+        $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/testsize.mo'));
+        $this->assertContains('9999', current($validator->getMessages()));
+        $this->assertContains('794', current($validator->getMessages()));
+    }
 }
 
 // Call Zend_Validate_File_SizeTest::main() if this source file is executed directly.