utils+helper+tests: Fix an issue with RandomPolicy

This commit also extends ndn::ScenarioHelper to expose the underlying
StackHelper for customization, as well as adds a basic test case for the
RandomPolicy.

Change-Id: Ieb948996497fd282f1afe4e7c102ec224299ac7f
diff --git a/tests/unit-tests/model/ndn-old-content-store.t.cpp b/tests/unit-tests/model/ndn-old-content-store.t.cpp
new file mode 100644
index 0000000..362988c
--- /dev/null
+++ b/tests/unit-tests/model/ndn-old-content-store.t.cpp
@@ -0,0 +1,73 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2011-2016  Regents of the University of California.
+ *
+ * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
+ * contributors.
+ *
+ * ndnSIM is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * ndnSIM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "../tests-common.hpp"
+
+namespace ns3 {
+namespace ndn {
+
+BOOST_FIXTURE_TEST_SUITE(ModelNdnOldContentStore, ScenarioHelperWithCleanupFixture)
+
+BOOST_AUTO_TEST_CASE(RandomPolicy)
+{
+  Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("10Mbps"));
+  Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms"));
+  Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20"));
+
+  getStackHelper().SetOldContentStore("ns3::ndn::cs::Random", "MaxSize", "10");
+
+  createTopology({
+      {"1", "2"},
+    });
+
+  addRoutes({
+      {"1", "2", "/prefix", 1},
+    });
+
+  addApps({
+      {"1", "ns3::ndn::ConsumerCbr",
+          {{"Prefix", "/prefix"}, {"Frequency", "10"}},
+          "0s", "9.99s"},
+      {"2", "ns3::ndn::Producer",
+          {{"Prefix", "/prefix"}, {"PayloadSize", "1024"}},
+          "0s", "100s"}
+    });
+
+  Simulator::Stop(Seconds(20.001));
+  Simulator::Run();
+
+  std::map<std::string, std::vector<Name>> entries;
+  for (const std::string& node : {"1", "2"}) {
+    auto cs = getNode(node)->GetObject<ContentStore>();
+    auto& nodeCs = entries[node];
+    for (auto it = cs->Begin(); it != cs->End(); it = cs->Next(it)) {
+      nodeCs.push_back(it->GetName());
+    }
+  }
+
+  BOOST_CHECK_EQUAL(entries["1"].size(), 10);
+  BOOST_CHECK_EQUAL(entries["2"].size(), 10);
+  BOOST_CHECK(entries["1"] != entries["2"]); // this test has a small chance of failing
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace ndn
+} // namespace ns3