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

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

index 58d5349..312a2df 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)
 
 2010-08-12  Xavier Perseguers  <typo3@perseguers.ch>
index 276b4d1..1886b16 100644 (file)
@@ -1263,8 +1263,8 @@ final class t3lib_div {
         * @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
        ///////////////////////////////