X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FMultiConnectorMixin.test.cc;fp=senf%2FPPI%2FMultiConnectorMixin.test.cc;h=498ce0002a272f4136490866898514528b5f4a9a;hb=45b346fa3a120720280b67b0f405b1954c0885d4;hp=84fcbafe1455e1c33f3ed812f32e1bb438206cfd;hpb=bea7cfcf3d02688ece159d76890acfe2d0051d71;p=senf.git diff --git a/senf/PPI/MultiConnectorMixin.test.cc b/senf/PPI/MultiConnectorMixin.test.cc index 84fcbaf..498ce00 100644 --- a/senf/PPI/MultiConnectorMixin.test.cc +++ b/senf/PPI/MultiConnectorMixin.test.cc @@ -50,6 +50,7 @@ namespace { public module::MultiConnectorMixin, void, void> { SENF_PPI_MODULE(MyModule); + typedef std::vector< boost::shared_ptr > Connectors; public: connector::PassiveInput<> input; @@ -59,6 +60,9 @@ namespace { input.onRequest(&MyModule::request); } + Connectors const & connectors() const + { return connectors_; } + private: void connectorSetup(std::auto_ptr c) { @@ -66,6 +70,15 @@ namespace { connectors_.push_back(boost::shared_ptr(c)); } + void connectorDestroy(ConnectorType const * c) + { + Connectors::iterator i ( + std::find_if(connectors_.begin(), connectors_.end(), + boost::bind(&Connectors::value_type::get,_1) == c)); + if (i != connectors_.end()) + connectors_.erase(i); + } + void request() { senf::Packet p (input()); @@ -74,7 +87,6 @@ namespace { (**i)(p); } - typedef std::vector< boost::shared_ptr > Connectors; Connectors connectors_; friend class module::MultiConnectorMixin, void, void>; @@ -110,6 +122,10 @@ BOOST_AUTO_UNIT_TEST(multiConnectorMixin_userContainer) BOOST_CHECK_EQUAL( sink2.size(), 1u ); BOOST_CHECK( sink1.pop_front() == p ); BOOST_CHECK( sink2.pop_front() == p ); + + BOOST_CHECK_EQUAL( module.connectors().size(), 2u ); + sink1.input.disconnect(); + BOOST_CHECK_EQUAL( module.connectors().size(), 1u ); } BOOST_AUTO_UNIT_TEST(multiConnectorMixin_multipleModules)