Erki 8d721ccaaa
All checks were successful
continuous-integration/drone/push Build is passing
Add Utility/Rand module
2021-04-30 18:31:24 +03:00

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(Peripherals::rand32(state));
}
std::uint32_t new_state = original_state;
for (int i = 0; i < 10; i++)
{
REQUIRE(generated[i] == Peripherals::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(Peripherals::rand64(state));
}
std::uint64_t new_state = original_state;
for (int i = 0; i < 10; i++)
{
REQUIRE(generated[i] == Peripherals::rand64(new_state));
}
}
TEST_CASE("rand and srand are deterministic", "[utility],[rand]")
{
const std::uint32_t original_state = 34;
Peripherals::srand(original_state);
std::vector<std::uint32_t> generated;
for (int i = 0; i < 10; i++)
{
generated.push_back(Peripherals::rand());
}
Peripherals::srand(original_state);
for (int i = 0; i < 10; i++)
{
REQUIRE(generated[i] == Peripherals::rand());
}
}