diff --git a/Utils/RnG/File.php b/Utils/RnG/File.php index 24f15d22e..7ad7d24f6 100644 --- a/Utils/RnG/File.php +++ b/Utils/RnG/File.php @@ -48,27 +48,20 @@ class File /** * Get a random file extension. * - * @param array> $source Source array for possible extensions - * @param DistributionType|int $distribution Distribution type for the extensions + * @param array> $source Source array for possible extensions * - * @return false|array + * @return string * * @since 1.0.0 */ - public static function generateExtension($source = null, $distribution = DistributionType::UNIFORM) + public static function generateExtension(array $source = null) : string { if ($source === null) { $source = self::$extensions; } - switch ($distribution) { - case DistributionType::UNIFORM: - $key = \rand(0, \count($source) - 1); - break; - default: - return false; - } + $key = \rand(0, \count($source) - 1); - return $source[$key][0]; + return $source[$key][\rand(0, \count($source[$key]) - 1)]; } } diff --git a/Utils/RnG/Phone.php b/Utils/RnG/Phone.php index db85b5d7e..b73e893a6 100644 --- a/Utils/RnG/Phone.php +++ b/Utils/RnG/Phone.php @@ -28,36 +28,46 @@ class Phone /** * Get a random phone number. * - * @param bool $isInt This number uses a country code - * @param array $layout Number layout - * @param array $countries Country codes + * @param bool $isInt This number uses a country code + * @param string $struct Number layout + * @param array $size Digits per placeholder [min, max] + * @param array|null $countries Country codes * - * @return \DateTime + * @return string * * @since 1.0.0 */ public static function generatePhone( - $isInt = true, - $layout = [ - 'struct' => '+$1 ($2) $3-$4', - 'size' => [null, [3, 4], [3, 5], [3, 8],],], - $countries = null - ) { - $numberString = $layout['struct']; + bool $isInt = true, + string $struct = '+$1 ($2) $3-$4', + array $size = [null, [3, 4], [3, 5], [3, 8],], + array $countries = null + ) : string + { + $numberString = $struct; if ($isInt) { if ($countries === null) { $countries = ['de' => 49, 'us' => 1]; } - $numberString = \str_replace('$1', $countries[array_keys($countries)[rand(0, \count($countries))]], $numberString); + $numberString = \str_replace( + '$1', + $countries[\array_keys($countries)[\rand(0, \count($countries) - 1)]], + $numberString + ); } - $numberParts = substr_count($layout['struct'], '$'); + $numberParts = \substr_count($struct, '$'); - for ($i = ($isInt ? 2 : 1); $i < $numberParts; ++$i) { + for ($i = ($isInt ? 2 : 1); $i <= $numberParts; ++$i) { $numberString = \str_replace( - '$' . $i, StringUtils::generateString($layout['size'][$i - 1][0], $layout['size'][$i - 1][1], '0123456789'), + '$' . $i, + StringUtils::generateString( + $size[$i - 1][0], + $size[$i - 1][1], + '0123456789' + ), $numberString ); } diff --git a/tests/Utils/RnG/FileTest.php b/tests/Utils/RnG/FileTest.php index 1a7b2a9a8..e4842be3a 100644 --- a/tests/Utils/RnG/FileTest.php +++ b/tests/Utils/RnG/FileTest.php @@ -17,8 +17,8 @@ use phpOMS\Utils\RnG\File; class FileTest extends \PHPUnit\Framework\TestCase { - public function testPlaceholder() + public function testRnGExtension() { - self::markTestIncomplete(); + self::assertRegExp('/^[a-z]{2,5}$/', File::generateExtension()); } } diff --git a/tests/Utils/RnG/PhoneTest.php b/tests/Utils/RnG/PhoneTest.php index 74e604e20..c1d1fe4cb 100644 --- a/tests/Utils/RnG/PhoneTest.php +++ b/tests/Utils/RnG/PhoneTest.php @@ -17,8 +17,8 @@ use phpOMS\Utils\RnG\Phone; class PhoneTest extends \PHPUnit\Framework\TestCase { - public function testPlaceholder() + public function testRnG() { - self::markTestIncomplete(); + self::assertRegExp('/^\+\d{1,2} \(\d{3,4}\) \d{3,5}\-\d{3,8}$/', Phone::generatePhone()); } }