Skip to content

Commit a4a4283

Browse files
committed
Random: improve rng serialization tests
1 parent e159de9 commit a4a4283

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/htm/algorithms/SpatialPooler.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,9 @@ class SpatialPooler : public Serializable
780780
void setSeed(UInt seed) {
781781
rng_ = Random(seed);
782782
}
783+
UInt getSeed() const {
784+
return rng_.getSeed();
785+
}
783786

784787

785788
/**

src/test/unit/algorithms/SpatialPoolerTest.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,8 +1958,8 @@ TEST(SpatialPoolerTest, testSerialization_ar) {
19581958

19591959
// Save initial trained model
19601960
stringstream ss;
1961-
ss.precision(std::numeric_limits<double>::digits10 + 1);
1962-
ss.precision(std::numeric_limits<float>::digits10 + 1);
1961+
// ss.precision(std::numeric_limits<double>::digits10 + 1);
1962+
// ss.precision(std::numeric_limits<float>::digits10 + 1);
19631963
sp1.save(ss);
19641964

19651965
htm::Timer testTimer;
@@ -1975,6 +1975,8 @@ TEST(SpatialPoolerTest, testSerialization_ar) {
19751975
// C - Next, verify the same results come from the de/serialized version
19761976
{
19771977
SpatialPooler spTemp;
1978+
ASSERT_EQ(spTemp.getSeed(), 1u);
1979+
19781980
testTimer.start();
19791981

19801982
// Deserialize

src/test/unit/utils/RandomTest.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,11 @@ TEST(RandomTest, testSerialization2) {
180180

181181
TEST(RandomTest, testSerialization_ar) {
182182
// test serialization/deserialization
183-
Random r1(862973);
183+
const UInt SEED = 862973u;
184+
Random r1(SEED);
185+
ASSERT_EQ(r1.getSeed(), SEED) << "RNG seed not set properly";
186+
187+
//burn-in
184188
for (int i = 0; i < 100; i++)
185189
r1.getUInt32();
186190

@@ -196,14 +200,14 @@ TEST(RandomTest, testSerialization_ar) {
196200
// r1 and r2 should be identical
197201
EXPECT_EQ(r1, r2) << "load from serialization";
198202
EXPECT_EQ(r2.getUInt32(), 3537119063u) << "Deserialized is not deterministic";
199-
r1.getUInt32(); //move the same number of steps
203+
EXPECT_EQ(r1.getUInt32(), 3537119063u); //move the same number of steps
200204

201-
UInt32 v1, v2;
202205
for (int i = 0; i < 100; i++) {
203-
v1 = r1.getUInt32();
204-
v2 = r2.getUInt32();
205-
EXPECT_EQ(v1, v2) << "serialization";
206+
EXPECT_EQ(r1.getUInt32(), r2.getUInt32()) << "serialization";
206207
}
208+
209+
EXPECT_EQ(r2.getSeed(), SEED) << "Rng deserialized seed is not the same!";
210+
207211
}
208212

209213

0 commit comments

Comments
 (0)