mirror of
https://github.com/php/php-src.git
synced 2026-04-19 05:51:02 +02:00
https://wiki.php.net/rfc/rng_extension https://wiki.php.net/rfc/random_extension_improvement
64 lines
1.5 KiB
PHP
64 lines
1.5 KiB
PHP
--TEST--
|
|
Random: Engine: User: compatibility
|
|
--FILE--
|
|
<?php
|
|
|
|
$native_engine = new \Random\Engine\Mt19937(1234);
|
|
$user_engine = new class () implements \Random\Engine {
|
|
public function __construct(private $engine = new \Random\Engine\Mt19937(1234))
|
|
{
|
|
}
|
|
|
|
public function generate(): string
|
|
{
|
|
return $this->engine->generate();
|
|
}
|
|
};
|
|
|
|
for ($i = 0; $i < 1000; $i++) {
|
|
if ($native_engine->generate() !== $user_engine->generate()) {
|
|
die('failure Mt19937');
|
|
}
|
|
}
|
|
|
|
$native_engine = new \Random\Engine\PcgOneseq128XslRr64(1234);
|
|
$user_engine = new class () implements \Random\Engine {
|
|
public function __construct(private $engine = new \Random\Engine\PcgOneseq128XslRr64(1234))
|
|
{
|
|
}
|
|
|
|
public function generate(): string
|
|
{
|
|
return $this->engine->generate();
|
|
}
|
|
};
|
|
|
|
for ($i = 0; $i < 1000; $i++) {
|
|
if ($native_engine->generate() !== $user_engine->generate()) {
|
|
die('failure PcgOneseq128XslRr64');
|
|
}
|
|
}
|
|
|
|
$native_engine = new \Random\Engine\Xoshiro256StarStar(1234);
|
|
$user_engine = new class () implements \Random\Engine {
|
|
public function __construct(private $engine = new \Random\Engine\Xoshiro256StarStar(1234))
|
|
{
|
|
}
|
|
|
|
public function generate(): string
|
|
{
|
|
return $this->engine->generate();
|
|
}
|
|
};
|
|
|
|
for ($i = 0; $i < 1000; $i++) {
|
|
if ($native_engine->generate() !== $user_engine->generate()) {
|
|
die('failure Xoshiro256StarStar');
|
|
}
|
|
}
|
|
|
|
die('success');
|
|
?>
|
|
--EXPECT--
|
|
success
|