Skip to content
Snippets Groups Projects
Commit aecb90ec authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add missing tests and simplify implementation

parent 8de6b166
No related branches found
No related tags found
1 merge request!103Set AssertError to inherit from std::runtime_error
......@@ -41,13 +41,7 @@ RandomEngine::destroy()
RandomEngine::RandomEngine()
{
uint64_t random_seed = std::random_device{}();
parallel::broadcast(random_seed, 0);
m_random_engine = std::default_random_engine(random_seed);
std::cout << " * setting " << rang::fgB::green << "random seed" << rang::style::reset << " to " << rang::fgB::yellow
<< random_seed << rang::style::reset << '\n';
this->resetRandomSeed();
}
void
......@@ -62,5 +56,8 @@ RandomEngine::setRandomSeed(const uint64_t random_seed)
void
RandomEngine::resetRandomSeed()
{
m_instance = std::unique_ptr<RandomEngine>(new RandomEngine);
uint64_t random_seed = std::random_device{}();
parallel::broadcast(random_seed, 0);
this->setRandomSeed(random_seed);
}
......@@ -113,6 +113,7 @@ add_executable (mpi_unit_tests
test_ItemValueUtils.cpp
test_Messenger.cpp
test_Partitioner.cpp
test_RandomEngine.cpp
test_SubItemValuePerItem.cpp
test_SubItemArrayPerItem.cpp
)
......
......@@ -9,6 +9,7 @@
#include <mesh/SynchronizerManager.hpp>
#include <utils/Messenger.hpp>
#include <utils/PETScWrapper.hpp>
#include <utils/RandomEngine.hpp>
#include <utils/pugs_config.hpp>
#include <MeshDataBaseForTests.hpp>
......@@ -57,6 +58,7 @@ main(int argc, char* argv[])
std::cout.setstate(std::ios::badbit);
SynchronizerManager::create();
RandomEngine::create();
MeshDataManager::create();
DiamondDualConnectivityManager::create();
DiamondDualMeshManager::create();
......@@ -89,6 +91,7 @@ main(int argc, char* argv[])
DiamondDualMeshManager::destroy();
DiamondDualConnectivityManager::destroy();
MeshDataManager::destroy();
RandomEngine::destroy();
SynchronizerManager::destroy();
}
}
......
#include <catch2/catch_test_macros.hpp>
#include <catch2/matchers/catch_matchers_all.hpp>
#include <utils/Messenger.hpp>
#include <utils/RandomEngine.hpp>
#include <utils/pugs_config.hpp>
// clazy:excludeall=non-pod-global-static
TEST_CASE("RandomEngine", "[random]")
{
SECTION("current state")
{
RandomEngine& random_engine = RandomEngine::instance();
REQUIRE(isSynchronized(random_engine));
}
SECTION("set seed")
{
RandomEngine& random_engine = RandomEngine::instance();
random_engine.setRandomSeed(1402339680);
REQUIRE(isSynchronized(random_engine));
REQUIRE(random_engine.getCurrentSeed() == 1402339680);
}
SECTION("reset seed")
{
RandomEngine& random_engine = RandomEngine::instance();
random_engine.resetRandomSeed();
REQUIRE(isSynchronized(random_engine));
}
SECTION("de-synchronize seeds")
{
RandomEngine& random_engine = RandomEngine::instance();
random_engine.resetRandomSeed();
auto& engine = random_engine.engine();
for (size_t i = 0; i < parallel::rank(); ++i) {
engine();
}
REQUIRE(((parallel::size() == 1) or not isSynchronized(random_engine)));
random_engine.resetRandomSeed();
REQUIRE(isSynchronized(random_engine));
}
}
......@@ -9,6 +9,7 @@
#include <mesh/SynchronizerManager.hpp>
#include <utils/Messenger.hpp>
#include <utils/PETScWrapper.hpp>
#include <utils/RandomEngine.hpp>
#include <utils/SLEPcWrapper.hpp>
#include <MeshDataBaseForTests.hpp>
......@@ -34,6 +35,7 @@ main(int argc, char* argv[])
std::cout.setstate(std::ios::badbit);
SynchronizerManager::create();
RandomEngine::create();
MeshDataManager::create();
DiamondDualConnectivityManager::create();
DiamondDualMeshManager::create();
......@@ -51,6 +53,7 @@ main(int argc, char* argv[])
DiamondDualMeshManager::destroy();
DiamondDualConnectivityManager::destroy();
MeshDataManager::destroy();
RandomEngine::destroy();
SynchronizerManager::destroy();
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment