From c23e499e83666a20dd282c40fa2ad1b90c6ce477 Mon Sep 17 00:00:00 2001 From: aRn0D Date: Tue, 18 Jun 2013 21:41:01 +0200 Subject: [PATCH 1/2] Returns a random element from a passed indexed and associative array --- src/Faker/Provider/Base.php | 4 +++- test/Faker/Provider/BaseTest.php | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index a8fd712b..3f276e29 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -124,7 +124,9 @@ class Base */ public static function randomElement($array = array('a', 'b', 'c')) { - return $array[mt_rand(0, count($array) - 1)]; + $key = array_rand($array); + + return $array[$key]; } /** diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index 8a53ad72..0cff9c70 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -90,6 +90,12 @@ class BaseTest extends \PHPUnit_Framework_TestCase $this->assertContains(BaseProvider::randomElement($elements), $elements); } + public function testRandomElementReturnsElementFromAssociativeArray() + { + $elements = array('tata' => '23', 'toto' => 'e', 'tutu' => 32, 'titi' => '#'); + $this->assertContains(BaseProvider::randomElement($elements), $elements); + } + public function testNumerifyReturnsSameStringWhenItContainsNoHashSign() { $this->assertEquals('fooBar?', BaseProvider::numerify('fooBar?')); From 4449b625d2d93d209792a6c6dd208c3e30580080 Mon Sep 17 00:00:00 2001 From: alanglade Date: Wed, 19 Jun 2013 08:50:52 +0200 Subject: [PATCH 2/2] Fix my previous proposal --- src/Faker/Provider/Base.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 3f276e29..cbccfc25 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -124,7 +124,8 @@ class Base */ public static function randomElement($array = array('a', 'b', 'c')) { - $key = array_rand($array); + $keys = array_keys($array); + $key = $keys[mt_rand(0, count($keys) - 1)]; return $array[$key]; }