From 90ac49fef8af89a6b43f1552abbb25a14f4ea9b3 Mon Sep 17 00:00:00 2001 From: Artyom Polkovnikov Date: Sun, 21 Dec 2014 18:06:50 +0300 Subject: [PATCH] [coding] Factor out GetRand64() (commit by Viktor Govakoko). --- base/pseudo_random.cpp | 17 ++++++++++++++--- base/pseudo_random.hpp | 3 +++ coding/coding_tests/arithmetic_codec_test.cpp | 7 +++++-- coding/coding_tests/bit_streams_test.cpp | 13 +++---------- .../coding_tests/compressed_bit_vector_test.cpp | 17 +++++------------ .../compressed_varnum_vector_test.cpp | 11 ++--------- 6 files changed, 32 insertions(+), 36 deletions(-) diff --git a/base/pseudo_random.cpp b/base/pseudo_random.cpp index bdbf52f2f3..a79146851e 100644 --- a/base/pseudo_random.cpp +++ b/base/pseudo_random.cpp @@ -4,16 +4,27 @@ namespace rnd { -string GenerateString() +PseudoRNG32 & Instance() { static PseudoRNG32 rng; + return rng; +} - size_t const size = rng.Generate() % 20 + 1; +string GenerateString() +{ + size_t const size = Instance().Generate() % 20 + 1; string result; result.reserve(size); for (size_t i = 0; i < size; ++i) - result.append(1, static_cast(rng.Generate() + 1)); + result.append(1, static_cast(Instance().Generate() + 1)); + return result; +} + +uint64_t GetRand64() +{ + uint64_t result = Instance().Generate(); + result ^= uint64_t(Instance().Generate()) << 32; return result; } diff --git a/base/pseudo_random.hpp b/base/pseudo_random.hpp index 6ad1b31456..87d8665cfe 100644 --- a/base/pseudo_random.hpp +++ b/base/pseudo_random.hpp @@ -26,5 +26,8 @@ typedef LCG32 PseudoRNG32; namespace rnd { + string GenerateString(); +uint64_t GetRand64(); + } diff --git a/coding/coding_tests/arithmetic_codec_test.cpp b/coding/coding_tests/arithmetic_codec_test.cpp index 3348ac9f84..61eef08197 100644 --- a/coding/coding_tests/arithmetic_codec_test.cpp +++ b/coding/coding_tests/arithmetic_codec_test.cpp @@ -1,10 +1,13 @@ +#include "../../testing/testing.hpp" + #include "../arithmetic_codec.hpp" #include "../reader.hpp" -#include "../../testing/testing.hpp" #include "../../base/pseudo_random.hpp" -UNIT_TEST(ArithmeticCodec) { + +UNIT_TEST(ArithmeticCodec) +{ PseudoRNG32 rng; uint32_t const MAX_FREQ = 2048; diff --git a/coding/coding_tests/bit_streams_test.cpp b/coding/coding_tests/bit_streams_test.cpp index 730dd23745..e3c929653a 100644 --- a/coding/coding_tests/bit_streams_test.cpp +++ b/coding/coding_tests/bit_streams_test.cpp @@ -5,19 +5,12 @@ #include "../writer.hpp" #include "../../base/pseudo_random.hpp" + #include "../../std/utility.hpp" #include "../../std/vector.hpp" -namespace -{ - uint64_t GetRand64() - { - static PseudoRNG32 g_rng; - uint64_t result = g_rng.Generate(); - result ^= uint64_t(g_rng.Generate()) << 32; - return result; - } -} + +using namespace rnd; UNIT_TEST(BitStream_ReadWrite) { diff --git a/coding/coding_tests/compressed_bit_vector_test.cpp b/coding/coding_tests/compressed_bit_vector_test.cpp index 7789abf224..835d2a971f 100644 --- a/coding/coding_tests/compressed_bit_vector_test.cpp +++ b/coding/coding_tests/compressed_bit_vector_test.cpp @@ -1,22 +1,15 @@ +#include "../../testing/testing.hpp" + #include "../compressed_bit_vector.hpp" #include "../reader.hpp" #include "../writer.hpp" -#include "../../testing/testing.hpp" #include "../../base/pseudo_random.hpp" -uint32_t const NUMS_COUNT = 12345; -namespace -{ - uint64_t GetRand64() - { - static PseudoRNG32 g_rng; - uint64_t result = g_rng.Generate(); - result ^= uint64_t(g_rng.Generate()) << 32; - return result; - } -} +using namespace rnd; + +uint32_t const NUMS_COUNT = 12345; UNIT_TEST(CompressedBitVector_Sparse) { diff --git a/coding/coding_tests/compressed_varnum_vector_test.cpp b/coding/coding_tests/compressed_varnum_vector_test.cpp index 37ca4418f3..1084788fe6 100644 --- a/coding/coding_tests/compressed_varnum_vector_test.cpp +++ b/coding/coding_tests/compressed_varnum_vector_test.cpp @@ -6,15 +6,8 @@ #include "../../base/pseudo_random.hpp" -namespace { - uint64_t GetRand64() - { - static PseudoRNG32 g_rng; - uint64_t result = g_rng.Generate(); - result ^= uint64_t(g_rng.Generate()) << 32; - return result; - } -} + +using namespace rnd; struct NumsSource {