Move test into test/std subdirectory.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224658 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
85
test/std/numerics/rand/rand.device/ctor.pass.cpp
Normal file
85
test/std/numerics/rand/rand.device/ctor.pass.cpp
Normal file
@@ -0,0 +1,85 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <random>
|
||||
|
||||
// class random_device;
|
||||
|
||||
// explicit random_device(const string& token = implementation-defined);
|
||||
|
||||
// For the following ctors, the standard states: "The semantics and default
|
||||
// value of the token parameter are implementation-defined". Implementations
|
||||
// therefore aren't required to accept any string, but the default shouldn't
|
||||
// throw.
|
||||
|
||||
#include <random>
|
||||
#include <cassert>
|
||||
#include <unistd.h>
|
||||
|
||||
bool is_valid_random_device(const std::string &token) {
|
||||
#if defined(_WIN32)
|
||||
return true;
|
||||
#elif defined(_LIBCPP_USING_NACL_RANDOM)
|
||||
return token == "/dev/urandom";
|
||||
#else // !defined(_WIN32) && !defined(_LIBCPP_USING_NACL_RANDOM)
|
||||
// Not an exhaustive list: they're the only tokens that are tested below.
|
||||
return token == "/dev/urandom" || token == "/dev/random";
|
||||
#endif // defined(_WIN32) || defined(_LIBCPP_USING_NACL_RANDOM)
|
||||
}
|
||||
|
||||
void check_random_device_valid(const std::string &token) {
|
||||
std::random_device r(token);
|
||||
}
|
||||
|
||||
void check_random_device_invalid(const std::string &token) {
|
||||
try {
|
||||
std::random_device r(token);
|
||||
assert(false);
|
||||
} catch (const std::system_error &e) {
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
{ std::random_device r; }
|
||||
|
||||
{
|
||||
int ec;
|
||||
ec = close(STDIN_FILENO);
|
||||
assert(!ec);
|
||||
ec = close(STDOUT_FILENO);
|
||||
assert(!ec);
|
||||
ec = close(STDERR_FILENO);
|
||||
assert(!ec);
|
||||
std::random_device r;
|
||||
}
|
||||
|
||||
{
|
||||
std::string token = "wrong file";
|
||||
if (is_valid_random_device(token))
|
||||
check_random_device_valid(token);
|
||||
else
|
||||
check_random_device_invalid(token);
|
||||
}
|
||||
|
||||
{
|
||||
std::string token = "/dev/urandom";
|
||||
if (is_valid_random_device(token))
|
||||
check_random_device_valid(token);
|
||||
else
|
||||
check_random_device_invalid(token);
|
||||
}
|
||||
|
||||
{
|
||||
std::string token = "/dev/random";
|
||||
if (is_valid_random_device(token))
|
||||
check_random_device_valid(token);
|
||||
else
|
||||
check_random_device_invalid(token);
|
||||
}
|
||||
}
|
23
test/std/numerics/rand/rand.device/entropy.pass.cpp
Normal file
23
test/std/numerics/rand/rand.device/entropy.pass.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <random>
|
||||
|
||||
// class random_device;
|
||||
|
||||
// double entropy() const;
|
||||
|
||||
#include <random>
|
||||
#include <cassert>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::random_device r;
|
||||
double e = r.entropy();
|
||||
}
|
35
test/std/numerics/rand/rand.device/eval.pass.cpp
Normal file
35
test/std/numerics/rand/rand.device/eval.pass.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <random>
|
||||
|
||||
// class random_device;
|
||||
|
||||
// result_type operator()();
|
||||
|
||||
#include <random>
|
||||
#include <cassert>
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
std::random_device r;
|
||||
std::random_device::result_type e = r();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
std::random_device r("/dev/null");
|
||||
r();
|
||||
assert(false);
|
||||
}
|
||||
catch (const std::system_error& e)
|
||||
{
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user