tests: improve test coverage of FaceManager

And misc cleanups in various mgmt test suites.

Refs: #3377
Change-Id: I189f8891559dae6e2329338e7707991ca476db0e
diff --git a/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp b/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
index 2f1e27a..e6d9988 100644
--- a/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
+++ b/tests/daemon/rib/readvertise/nfd-rib-readvertise-destination.t.cpp
@@ -42,46 +42,32 @@
 class NfdRibReadvertiseDestinationFixture : public GlobalIoTimeFixture, public KeyChainFixture
 {
 protected:
-  NfdRibReadvertiseDestinationFixture()
-    : nSuccessCallbacks(0)
-    , nFailureCallbacks(0)
-    , face(g_io, m_keyChain, {true, false})
-    , controller(face, m_keyChain)
-    , dest(controller, rib, ndn::nfd::CommandOptions().setPrefix("/localhost/nlsr"))
-    , successCallback([this] { nSuccessCallbacks++; })
-    , failureCallback([this] (const std::string&) { nFailureCallbacks++; })
-  {
-  }
-
-public:
-  uint32_t nSuccessCallbacks;
-  uint32_t nFailureCallbacks;
-
-protected:
   static inline const Name RIB_REGISTER_COMMAND_PREFIX = Name("/localhost/nlsr")
                                                          .append(ndn::nfd::RibRegisterCommand::getName());
   static inline const Name RIB_UNREGISTER_COMMAND_PREFIX = Name("/localhost/nlsr")
                                                            .append(ndn::nfd::RibUnregisterCommand::getName());
 
-  ndn::DummyClientFace face;
-  ndn::nfd::Controller controller;
+  ndn::DummyClientFace face{g_io, m_keyChain, {true, false}};
+  ndn::nfd::Controller controller{face, m_keyChain};
   Rib rib;
-  NfdRibReadvertiseDestination dest;
-  std::function<void()> successCallback;
-  std::function<void(const std::string&)> failureCallback;
+  NfdRibReadvertiseDestination dest{controller, rib, ndn::nfd::CommandOptions().setPrefix("/localhost/nlsr")};
+
+  std::function<void()> successCallback = [this] { nSuccessCallbacks++; };
+  std::function<void(const std::string&)> failureCallback = [this] (auto&&) { nFailureCallbacks++; };
+
+  int nSuccessCallbacks = 0;
+  int nFailureCallbacks = 0;
 };
 
 BOOST_AUTO_TEST_SUITE(Rib)
 BOOST_FIXTURE_TEST_SUITE(TestNfdRibReadvertiseDestination, NfdRibReadvertiseDestinationFixture)
 
-class AdvertiseSuccessScenario
+struct AdvertiseSuccessScenario
 {
-public:
-  ndn::nfd::ControlResponse
+  static ndn::nfd::ControlResponse
   makeResponse(const ControlParameters& sentCp)
   {
     ControlParameters response;
-
     response.setFaceId(1)
       .setName(sentCp.getName())
       .setOrigin(ndn::nfd::ROUTE_ORIGIN_CLIENT)
@@ -92,40 +78,30 @@
     responsePayload.setCode(200)
       .setText("Successfully registered.")
       .setBody(response.wireEncode());
+
     return responsePayload;
   }
 
-  void
-  checkCommandOutcome(NfdRibReadvertiseDestinationFixture* fixture)
-  {
-    BOOST_CHECK_EQUAL(fixture->nSuccessCallbacks, 1);
-    BOOST_CHECK_EQUAL(fixture->nFailureCallbacks, 0);
-  }
+  static constexpr int nExpectedSuccessCalls = 1;
+  static constexpr int nExpectedFailureCalls = 0;
 };
 
-class AdvertiseFailureScenario
+struct AdvertiseFailureScenario
 {
-public:
-  ndn::nfd::ControlResponse
-  makeResponse(ControlParameters sentCp)
+  static ndn::nfd::ControlResponse
+  makeResponse(const ControlParameters& sentCp)
   {
-    ndn::nfd::ControlResponse responsePayload(403, "Not Authenticated");
-    return responsePayload;
+    return ndn::nfd::ControlResponse(403, "Not Authenticated");
   }
 
-  void
-  checkCommandOutcome(NfdRibReadvertiseDestinationFixture* fixture)
-  {
-    BOOST_CHECK_EQUAL(fixture->nFailureCallbacks, 1);
-    BOOST_CHECK_EQUAL(fixture->nSuccessCallbacks, 0);
-  }
+  static constexpr int nExpectedSuccessCalls = 0;
+  static constexpr int nExpectedFailureCalls = 1;
 };
 
 using AdvertiseScenarios = boost::mp11::mp_list<AdvertiseSuccessScenario, AdvertiseFailureScenario>;
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(Advertise, Scenario, AdvertiseScenarios)
 {
-  Scenario scenario;
   Name prefix("/ndn/memphis/test");
   ReadvertisedRoute rr(prefix);
 
@@ -139,27 +115,27 @@
 
   // Parse the sent command Interest to check correctness.
   ControlParameters sentCp;
-  BOOST_CHECK_NO_THROW(sentCp.wireDecode(sentInterest.getName().get(RIB_REGISTER_COMMAND_PREFIX.size()).blockFromValue()));
+  BOOST_CHECK_NO_THROW(sentCp.wireDecode(sentInterest.getName().get(RIB_REGISTER_COMMAND_PREFIX.size())
+                                         .blockFromValue()));
   BOOST_CHECK_EQUAL(sentCp.getOrigin(), ndn::nfd::ROUTE_ORIGIN_CLIENT);
   BOOST_CHECK_EQUAL(sentCp.getName(), prefix);
 
-  ndn::nfd::ControlResponse responsePayload = scenario.makeResponse(sentCp);
+  ndn::nfd::ControlResponse responsePayload = Scenario::makeResponse(sentCp);
   auto responseData = makeData(sentInterest.getName());
   responseData->setContent(responsePayload.wireEncode());
   face.receive(*responseData);
   this->advanceClocks(10_ms);
 
-  scenario.checkCommandOutcome(this);
+  BOOST_TEST(nSuccessCallbacks == Scenario::nExpectedSuccessCalls);
+  BOOST_TEST(nFailureCallbacks == Scenario::nExpectedFailureCalls);
 }
 
-class WithdrawSuccessScenario
+struct WithdrawSuccessScenario
 {
-public:
-  ndn::nfd::ControlResponse
+  static ndn::nfd::ControlResponse
   makeResponse(const ControlParameters& sentCp)
   {
     ControlParameters response;
-
     response.setFaceId(1)
       .setName(sentCp.getName())
       .setOrigin(ndn::nfd::ROUTE_ORIGIN_CLIENT);
@@ -172,37 +148,26 @@
     return responsePayload;
   }
 
-  void
-  checkCommandOutcome(NfdRibReadvertiseDestinationFixture* fixture)
-  {
-    BOOST_CHECK_EQUAL(fixture->nSuccessCallbacks, 1);
-    BOOST_CHECK_EQUAL(fixture->nFailureCallbacks, 0);
-  }
+  static constexpr int nExpectedSuccessCalls = 1;
+  static constexpr int nExpectedFailureCalls = 0;
 };
 
-class WithdrawFailureScenario
+struct WithdrawFailureScenario
 {
-public:
-  ndn::nfd::ControlResponse
-  makeResponse(ControlParameters sentCp)
+  static ndn::nfd::ControlResponse
+  makeResponse(const ControlParameters& sentCp)
   {
-    ndn::nfd::ControlResponse responsePayload(403, "Not authenticated");
-    return responsePayload;
+    return ndn::nfd::ControlResponse(403, "Not authenticated");
   }
 
-  void
-  checkCommandOutcome(NfdRibReadvertiseDestinationFixture* fixture)
-  {
-    BOOST_CHECK_EQUAL(fixture->nFailureCallbacks, 1);
-    BOOST_CHECK_EQUAL(fixture->nSuccessCallbacks, 0);
-  }
+  static constexpr int nExpectedSuccessCalls = 0;
+  static constexpr int nExpectedFailureCalls = 1;
 };
 
 using WithdrawScenarios = boost::mp11::mp_list<WithdrawSuccessScenario, WithdrawFailureScenario>;
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(Withdraw, Scenario, WithdrawScenarios)
 {
-  Scenario scenario;
   Name prefix("/ndn/memphis/test");
   ReadvertisedRoute rr(prefix);
 
@@ -215,18 +180,20 @@
   BOOST_CHECK(RIB_UNREGISTER_COMMAND_PREFIX.isPrefixOf(sentInterest.getName()));
 
   ControlParameters sentCp;
-  BOOST_CHECK_NO_THROW(sentCp.wireDecode(sentInterest.getName().get(RIB_UNREGISTER_COMMAND_PREFIX.size()).blockFromValue()));
+  BOOST_CHECK_NO_THROW(sentCp.wireDecode(sentInterest.getName().get(RIB_UNREGISTER_COMMAND_PREFIX.size())
+                                         .blockFromValue()));
   BOOST_CHECK_EQUAL(sentCp.getOrigin(), ndn::nfd::ROUTE_ORIGIN_CLIENT);
   BOOST_CHECK_EQUAL(sentCp.getName(), prefix);
 
-  ndn::nfd::ControlResponse responsePayload = scenario.makeResponse(sentCp);
+  ndn::nfd::ControlResponse responsePayload = Scenario::makeResponse(sentCp);
   auto responseData = makeData(sentInterest.getName());
   responseData->setContent(responsePayload.wireEncode());
 
   face.receive(*responseData);
   this->advanceClocks(1_ms);
 
-  scenario.checkCommandOutcome(this);
+  BOOST_TEST(nSuccessCallbacks == Scenario::nExpectedSuccessCalls);
+  BOOST_TEST(nFailureCallbacks == Scenario::nExpectedFailureCalls);
 }
 
 BOOST_AUTO_TEST_CASE(DestinationAvailability)
@@ -235,8 +202,7 @@
   Name commandPrefix("/localhost/nlsr");
   Route route;
 
-  dest.afterAvailabilityChange.connect(
-    std::bind(&std::vector<bool>::push_back, &availabilityChangeHistory, _1));
+  dest.afterAvailabilityChange.connect([&] (bool val) { availabilityChangeHistory.push_back(val); });
   BOOST_CHECK_EQUAL(dest.isAvailable(), false);
 
   rib.insert(commandPrefix, route);