Fix documentation build under maverick (doxygen 1.7.1)
[senf.git] / senf / PPI / AnnotationRouter.test.cc
index 670d929..651d70e 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2008 
+// Copyright (C) 2008
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
 // Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 #include <boost/test/test_tools.hpp>
 
 #define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
+namespace ppi = senf::ppi;
+namespace connector = ppi::connector;
+namespace module = ppi::module;
+namespace debug = module::debug;
 
 namespace {
     struct IntAnnotation {
@@ -49,24 +53,29 @@ namespace {
 
     std::ostream & operator<<(std::ostream & os, IntAnnotation const & value)
     { os << value.value; return os; }
+
+    struct AnnotationRouter : public module::AnnotationRouter<IntAnnotation>
+    {
+        using module::AnnotationRouter<IntAnnotation>::connectors;
+    };
 }
 
-BOOST_AUTO_UNIT_TEST(annotationRouter)
+SENF_AUTO_UNIT_TEST(annotationRouter)
 {
-    senf::ppi::module::debug::ActiveSource source;
-    senf::ppi::module::debug::PassiveSink sink1;
-    senf::ppi::module::debug::PassiveSink sink2;
-
-    senf::ppi::module::AnnotationRouter<IntAnnotation> router;
-    
-    senf::ppi::connect(source, router);
-    senf::ppi::connect(router, sink1, 1);
-    senf::ppi::connect(router, sink2, 2);
-    
-    BOOST_CHECK_THROW( senf::ppi::connect(router, sink2, 2), 
-            senf::ppi::module::AnnotationRouter<IntAnnotation>::DuplicateKeyException);
+    debug::ActiveSource source;
+    debug::PassiveSink sink1;
+    debug::PassiveSink sink2;
 
-    senf::ppi::init();
+    AnnotationRouter router;
+
+    ppi::connect(source, router);
+    ppi::connect(router, 1, sink1);
+    ppi::connect(router, 2, sink2);
+
+    BOOST_CHECK_THROW( connect(router, 2, sink2),
+            module::AnnotationRouter<IntAnnotation>::DuplicateKeyException);
+
+    ppi::init();
 
     senf::Packet p1 (senf::DataPacket::create());
     p1.annotation<IntAnnotation>() = 1;
@@ -81,9 +90,20 @@ BOOST_AUTO_UNIT_TEST(annotationRouter)
     BOOST_CHECK_EQUAL( sink2.size(), 1u );
     BOOST_CHECK( sink1.front() == p1 );
     BOOST_CHECK( sink2.front() == p2 );
+    BOOST_CHECK_EQUAL(router.connectors().size(), 2u);
+
+    sink1.input.disconnect();
+    BOOST_CHECK_EQUAL(router.connectors().size(), 1u);
+
+    senf::ppi::connect(router, 1, sink1);
+    senf::ppi::init();
+    source.submit(p1);
+
+    BOOST_CHECK_EQUAL( sink1.size(), 2u );
+    BOOST_CHECK_EQUAL( sink2.size(), 1u );
 }
 
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 
 \f