blob: 9f529f5d8141004e500f5eb84476ae44d044b39c [file] [log] [blame]
// { dg-do run { target c++11 } }
#include <random>
#include <limits>
#include <testsuite_hooks.h>
#include <testsuite_random.h>
void
test01()
{
for (auto token : { "mt19937", "prng", "rand_s" })
if (__gnu_test::random_device_available(token))
VERIFY( std::random_device(token).entropy() == 0.0 );
using result_type = std::random_device::result_type;
const double max = std::numeric_limits<result_type>::digits;
for (auto token : { "/dev/random", "/dev/urandom" })
if (__gnu_test::random_device_available(token))
{
const double entropy = std::random_device(token).entropy();
VERIFY( entropy >= 0.0 );
VERIFY( entropy <= max );
}
for (auto token : { "rdrand", "rdseed", "darn", "hw" })
if (__gnu_test::random_device_available(token))
{
const double entropy = std::random_device(token).entropy();
VERIFY( entropy == max );
}
for (auto token : { "getentropy", "arc4random" })
if (__gnu_test::random_device_available(token))
{
const double entropy = std::random_device(token).entropy();
VERIFY( entropy == max );
}
}
int
main()
{
test01();
}