improve test coverage and support negative int for random function
authorTobias Schultze <webmaster@tubo-world.de>
Thu, 26 Jan 2012 13:52:41 +0000 (14:52 +0100)
committerTobias Schultze <webmaster@tubo-world.de>
Thu, 26 Jan 2012 13:52:41 +0000 (14:52 +0100)
lib/Twig/Extension/Core.php
test/Twig/Tests/Extension/CoreTest.php

index a32946e..312286c 100644 (file)
@@ -299,7 +299,7 @@ function twig_random($values = null)
     }
 
     if (is_int($values) || is_float($values)) {
-        return mt_rand(0, $values);
+        return ($values < 0) ? mt_rand($values, 0) : mt_rand(0, $values);
     }
 
     if ($values instanceof Traversable) {
index 15d6d19..e1936c3 100644 (file)
@@ -48,6 +48,10 @@ class Twig_Tests_Extension_CoreTest extends PHPUnit_Framework_TestCase
                 5.9,
                 range(0, 5, 1),
             ),
+            array( // negative
+                -2,
+                array(0, -1, -2),
+            ),
         );
     }
 
@@ -61,6 +65,14 @@ class Twig_Tests_Extension_CoreTest extends PHPUnit_Framework_TestCase
         }
     }
 
+    public function testRandomFunctionReturnsAsIs()
+    {
+        $this->assertSame('', twig_random(''));
+
+        $instance = new stdClass();
+        $this->assertSame($instance, twig_random($instance));
+    }
+
     /**
      * @expectedException Twig_Error_Runtime
      */