Skip to content

Commit

Permalink
return first element from random element
Browse files Browse the repository at this point in the history
  • Loading branch information
GautierDele committed Sep 8, 2024
1 parent 16f1e61 commit 2d40ad7
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/Extensions/Extension.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ protected function pickArrayRandomElements(array $array, int $elements = 1)

protected function pickArrayRandomElement(array $array)
{
return $this->pickArrayRandomElements($array)[0];
$elements = $this->pickArrayRandomElements($array);
return reset($elements);
}
}
33 changes: 33 additions & 0 deletions tests/Unit/Extensions/ExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

namespace Extensions;

use Random\Randomizer;
use ReflectionClass;
use Xefi\Faker\Container\Container;
use Xefi\Faker\Extensions\Extension;
use Xefi\Faker\Tests\Unit\TestCase;

class ExtensionTest extends TestCase
Expand All @@ -26,4 +29,34 @@ public function testExtensionReturnOne(): void
$container->returnOne()
);
}

public function testExtensionPickArrayRandomElements(): void
{
$elements = range(1, 100);

$method = (new ReflectionClass(Extension::class))->getMethod('pickArrayRandomElements');
$result = $method->invoke(new Extension(new Randomizer), $elements, 5);

$this->assertCount(
5,
$result
);

foreach ($result as $item) {
$this->assertGreaterThanOrEqual(1, $item);
$this->assertLessThanOrEqual(100, $item);
}
}

public function testExtensionPickArrayRandomElement(): void
{
$elements = range(1, 100);

$method = (new ReflectionClass(Extension::class))->getMethod('pickArrayRandomElement');
$result = $method->invoke(new Extension(new Randomizer), $elements);

$this->assertIsNotArray($result);
$this->assertGreaterThanOrEqual(1, $result);
$this->assertLessThanOrEqual(100, $result);
}
}

0 comments on commit 2d40ad7

Please sign in to comment.