Преглед изворни кода

ZF-8656 Modified methods normalizeItemNumber() and normalizePageNumber() adding an integer cast which forces all into into an integer (e.g. 1.5 => 1). Also added two unit tests checking return values when given float values as input for normalizeItemNumber() and normalizePageNumber().

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22257 44c647ce-9c0f-0410-b52a-842ac1e357ba
wilmoore пре 15 година
родитељ
комит
e866fdd6a2
2 измењених фајлова са 32 додато и 0 уклоњено
  1. 4 0
      library/Zend/Paginator.php
  2. 28 0
      tests/Zend/PaginatorTest.php

+ 4 - 0
library/Zend/Paginator.php

@@ -904,6 +904,8 @@ class Zend_Paginator implements Countable, IteratorAggregate
      */
      */
     public function normalizeItemNumber($itemNumber)
     public function normalizeItemNumber($itemNumber)
     {
     {
+        $itemNumber = (integer) $itemNumber;
+
         if ($itemNumber < 1) {
         if ($itemNumber < 1) {
             $itemNumber = 1;
             $itemNumber = 1;
         }
         }
@@ -923,6 +925,8 @@ class Zend_Paginator implements Countable, IteratorAggregate
      */
      */
     public function normalizePageNumber($pageNumber)
     public function normalizePageNumber($pageNumber)
     {
     {
+        $pageNumber = (integer) $pageNumber;
+
         if ($pageNumber < 1) {
         if ($pageNumber < 1) {
             $pageNumber = 1;
             $pageNumber = 1;
         }
         }

+ 28 - 0
tests/Zend/PaginatorTest.php

@@ -632,6 +632,34 @@ class Zend_PaginatorTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(10, $this->_paginator->normalizeItemNumber(11));
         $this->assertEquals(10, $this->_paginator->normalizeItemNumber(11));
     }
     }
 
 
+    /**
+     * @group ZF-8656
+     */
+    public function testNormalizesPageNumberWhenGivenAFloat()
+    {
+        $this->assertEquals(1, $this->_paginator->normalizePageNumber(0.5));
+        $this->assertEquals(1, $this->_paginator->normalizePageNumber(1.99));
+        $this->assertEquals(2, $this->_paginator->normalizePageNumber(2.3));
+        $this->assertEquals(5, $this->_paginator->normalizePageNumber(5.1));
+        $this->assertEquals(10, $this->_paginator->normalizePageNumber(10.06));
+        $this->assertEquals(11, $this->_paginator->normalizePageNumber(11.5));
+        $this->assertEquals(11, $this->_paginator->normalizePageNumber(12.7889));
+    }
+
+    /**
+     * @group ZF-8656
+     */
+    public function testNormalizesItemNumberWhenGivenAFloat()
+    {
+        $this->assertEquals(1, $this->_paginator->normalizeItemNumber(0.5));
+        $this->assertEquals(1, $this->_paginator->normalizeItemNumber(1.99));
+        $this->assertEquals(2, $this->_paginator->normalizeItemNumber(2.3));
+        $this->assertEquals(5, $this->_paginator->normalizeItemNumber(5.1));
+        $this->assertEquals(9, $this->_paginator->normalizeItemNumber(9.06));
+        $this->assertEquals(10, $this->_paginator->normalizeItemNumber(10.5));
+        $this->assertEquals(10, $this->_paginator->normalizeItemNumber(11.7889));
+    }
+
     public function testGetsPagesInSubsetRange()
     public function testGetsPagesInSubsetRange()
     {
     {
         $actual = $this->_paginator->getPagesInRange(3, 8);
         $actual = $this->_paginator->getPagesInRange(3, 8);