diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index a8fd712b..cbccfc25 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -124,7 +124,10 @@ class Base */ public static function randomElement($array = array('a', 'b', 'c')) { - return $array[mt_rand(0, count($array) - 1)]; + $keys = array_keys($array); + $key = $keys[mt_rand(0, count($keys) - 1)]; + + 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?'));