Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
remove unused attribute name_ and method set_name()
[simgrid.git] / src / xbt / random_test.cpp
index b7c10e8a2c3c57f0a6ad62faee3409f46d16ab13..9b66134836a1c4d998b67ddd7d228b1f9266c316 100644 (file)
@@ -27,8 +27,8 @@ TEST_CASE("xbt::random: Random Number Generation")
     std::mt19937 gen;
     gen.seed(12345);
 
-    simgrid::xbt::random::set_mersenne_seed(12345);
     simgrid::xbt::random::set_implem_std();
+    simgrid::xbt::random::set_mersenne_seed(12345);
 
     std::exponential_distribution<> distA(25);
     std::uniform_int_distribution<> distB(1, 6);
@@ -40,4 +40,23 @@ TEST_CASE("xbt::random: Random Number Generation")
     REQUIRE_THAT(simgrid::xbt::random::uniform_real(0, 1), EpsilonApprox(distC(gen)));
     REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(distD(gen)));
   }
+
+  SECTION("XBT_RNG_std write to a file")
+  {
+    simgrid::xbt::random::set_implem_std();
+    simgrid::xbt::random::set_mersenne_seed(12345);
+
+    simgrid::xbt::random::exponential(25);
+    bool writtenA = simgrid::xbt::random::write_mersenne_state("rdm_state_tmp.txt");
+    double resB = simgrid::xbt::random::uniform_real(10, 20);
+    double resC = simgrid::xbt::random::normal(0, 2);
+    bool writtenB = simgrid::xbt::random::read_mersenne_state("rdm_state_tmp.txt");
+    REQUIRE(writtenA);
+    REQUIRE(writtenB);
+    REQUIRE_THAT(simgrid::xbt::random::uniform_real(10, 20), EpsilonApprox(resB));
+    REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(resC));
+    if (writtenB) {
+      std::remove("rdm_state_tmp.txt");
+    }
+  }
 }