15 #include "absl/random/internal/seed_material.h"
22 #include "gmock/gmock.h"
23 #include "gtest/gtest.h"
28 #define ABSL_EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
29 EXPECT_DEATH_IF_SUPPORTED(statement, ".*")
31 #define ABSL_EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
32 EXPECT_DEATH_IF_SUPPORTED(statement, regex)
55 constexpr
size_t kSeedMaterialSize = 64;
56 uint32_t seed_material_1[kSeedMaterialSize] = {};
57 uint32_t seed_material_2[kSeedMaterialSize] = {};
69 std::memset(seed_material, 0xAA,
sizeof(seed_material));
95 constexpr
size_t kSeedMaterialSize = 1024;
96 uint32_t seed_material[kSeedMaterialSize] = {};
106 std::mt19937_64 urbg;
108 std::memset(seed_material, 0xAA,
sizeof(seed_material));
116 constexpr
size_t kSeedMaterialSize = 32;
117 uint32_t seed_material[kSeedMaterialSize];
119 EXPECT_FALSE(absl::random_internal::ReadSeedMaterialFromURBG<std::mt19937_64>(
124 result = absl::random_internal::ReadSeedMaterialFromURBG<std::mt19937_64>(
132 std::mt19937_64 urbg;
152 TEST(MixSequenceIntoSeedMaterial, AvalancheEffectTestOneBitLong) {
153 std::vector<uint32_t> seed_material = {1, 2, 3, 4, 5, 6, 7, 8};
159 std::vector<uint32_t> seed_material_copy = seed_material;
163 seed_material_copy.size()));
166 for (
size_t i = 0;
i < seed_material.size();
i++) {
167 std::bitset<
sizeof(
uint32_t) * 8> bitset(seed_material[
i] ^
168 seed_material_copy[
i]);
169 changed_bits += bitset.count();
177 TEST(MixSequenceIntoSeedMaterial, AvalancheEffectTestOneBitShort) {
178 std::vector<uint32_t> seed_material = {1};
184 std::vector<uint32_t> seed_material_copy = seed_material;
188 seed_material_copy.size()));
191 for (
size_t i = 0;
i < seed_material.size();
i++) {
192 std::bitset<
sizeof(
uint32_t) * 8> bitset(seed_material[
i] ^
193 seed_material_copy[
i]);
194 changed_bits += bitset.count();