Fixed bug #15020: Enhancement of t3lib_div::testInt (Thanks to Michiel Roos)
authorSteffen Kamper <info@sk-typo3.de>
Thu, 12 Aug 2010 20:09:42 +0000 (20:09 +0000)
committerSteffen Kamper <info@sk-typo3.de>
Thu, 12 Aug 2010 20:09:42 +0000 (20:09 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@8586 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_div.php
tests/t3lib/t3lib_divTest.php

index 09b8cac..00f10c4 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
 
 2010-08-12 Steffen Kamper  <steffen@typo3.org>
 
+       * Fixed bug #15020: Enhancement of t3lib_div::testInt (Thanks to Michiel Roos)
        * Fixed bug #15029: Testcase for t3lib_div::isFirstPartOfStr is missing. (Thanks to Nikolas Hagestein)
        * Fixed bug #13815: Feature: Add .numberFormat function to stdWrap (Thanks to Sebastian Michaelsen)
 
index d90994b..94fbe85 100644 (file)
@@ -1273,14 +1273,13 @@ final class t3lib_div {
        }
 
        /**
-        * Tests if the input is an integer.
-        * Usage: 77
+        * Tests if the input can be interpreted as integer.
         *
-        * @param       mixed           Any input variable to test.
-        * @return      boolean         Returns true if string is an integer
+        * @param mixed Any input variable to test
+        * @return boolean Returns true if string is an integer
         */
-       public static function testInt($var)    {
-               return !strcmp($var,intval($var));
+       public static function testInt($var) {
+               return (string)intval($var) == $var;
        }
 
        /**
index 260657a..466902c 100644 (file)
@@ -92,6 +92,66 @@ class t3lib_divTest extends tx_phpunit_testcase {
 
 
        ///////////////////////////////
+       // Tests concerning testInt
+       ///////////////////////////////
+
+       /**
+        * Data provider for testIntReturnsTrue
+        *
+        * @return array Data sets
+        */
+       public function testIntValidDataProvider() {
+               return array(
+                       'int' => array(32425),
+                       'negative int' => array(-32425),
+                       'largest int' => array(PHP_INT_MAX),
+                       'int as string' => array('32425'),
+                       'int as string with leading zero' => array('01234'),
+                       'negative int as string' => array('-32425'),
+                       'negative int as string with leading zero' => array('-01234'),
+                       'zero' => array(0),
+                       'zero as string' => array('0'),
+               );
+       }
+
+       /**
+        * @test
+        * @dataProvider testIntValidDataProvider
+        */
+       public function testIntReturnsTrue($int) {
+               $this->assertTrue(t3lib_div::testInt($int));
+       }
+
+       /**
+        * Data provider for testIntReturnsFalse
+        *
+        * @return array Data sets
+        */
+       public function testIntInvalidDataProvider() {
+               return array(
+                       'largest int plus one' => array(PHP_INT_MAX + 1),
+                       'string' => array('testInt'),
+                       'empty string' => array(''),
+                       'int in string' => array('5 times of testInt'),
+                       'float' => array(3.14159),
+                       'float as string' => array('3.14159'),
+                       'null' => array(NULL),
+                       'empty array' => array(array()),
+                       'int in array' => array(array(32425)),
+                       'int as string in array' => array(array('32425')),
+               );
+       }
+
+       /**
+        * @test
+        * @dataProvider testIntInvalidDataProvider
+        */
+       public function testIntReturnsFalse($int) {
+               $this->assertFalse(t3lib_div::testInt($int));
+       }
+
+
+       ///////////////////////////////
        // Tests concerning isFirstPartOfStr
        ///////////////////////////////