63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
//
|
|
// Created by erki on 29.04.21.
|
|
//
|
|
|
|
#include <catch2/catch.hpp>
|
|
|
|
#include "utility_rand.hpp"
|
|
|
|
TEST_CASE("rand32 is deterministic.", "[utility],[rand]")
|
|
{
|
|
const std::uint32_t original_state = 34;
|
|
std::uint32_t state = original_state;
|
|
std::vector<std::uint32_t> generated;
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
generated.push_back(Utility::rand32(state));
|
|
}
|
|
|
|
std::uint32_t new_state = original_state;
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
REQUIRE(generated[i] == Utility::rand32(new_state));
|
|
}
|
|
}
|
|
|
|
TEST_CASE("rand64 is deterministic.", "[utility],[rand]")
|
|
{
|
|
const std::uint64_t original_state = 10e4;
|
|
std::uint64_t state = original_state;
|
|
std::vector<std::uint64_t> generated;
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
generated.push_back(Utility::rand64(state));
|
|
}
|
|
|
|
std::uint64_t new_state = original_state;
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
REQUIRE(generated[i] == Utility::rand64(new_state));
|
|
}
|
|
}
|
|
|
|
TEST_CASE("rand and srand are deterministic", "[utility],[rand]")
|
|
{
|
|
const std::uint32_t original_state = 34;
|
|
|
|
Utility::srand(original_state);
|
|
std::vector<std::uint32_t> generated;
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
generated.push_back(Utility::rand());
|
|
}
|
|
|
|
Utility::srand(original_state);
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
REQUIRE(generated[i] == Utility::rand());
|
|
}
|
|
}
|