PPI: Rename all 'Reader's to 'Source's and 'Writer's to 'Sink's
[senf.git] / PPI / DebugModules.test.cc
index 3f19899..e04fb70 100644 (file)
 //#include "DebubgModules.test.hh"
 //#include "DebubgModules.test.ih"
 
+
 // Custom includes
 #include <algorithm>
-#include "Packets/Packets.hh"
+#include <sstream>
+
+#define _senf_LOG_STREAM logstream
+namespace {
+    std::stringstream logstream;
+}
+
+#include "../Packets/Packets.hh"
 #include "DebugModules.hh"
 #include "Setup.hh"
 
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
+namespace debug = senf::ppi::module::debug;
+namespace ppi = senf::ppi;
+
 BOOST_AUTO_UNIT_TEST(debugModules)
 {
-    namespace debug = senf::ppi::module::debug;
-    namespace ppi = senf::ppi;
-
     {
-        debug::ActivePacketSource source;
-        debug::PassivePacketSink sink;
+        debug::ActiveSource source;
+        debug::PassiveSink sink;
 
-        ppi::connect(source.output, sink.input);
+        ppi::connect(source, sink);
         ppi::init();
     
         senf::PacketData::byte data[] = { 0x13u, 0x24u, 0x35u };
@@ -61,22 +69,22 @@ BOOST_AUTO_UNIT_TEST(debugModules)
         BOOST_CHECK_EQUAL( sink.size(), 1u );
         BOOST_CHECK( ! sink.empty() );
         BOOST_CHECK_EQUAL( 
-            debug::PassivePacketSink::size_type(std::distance(sink.begin(),sink.end())),
+            debug::PassiveSink::size_type(std::distance(sink.begin(),sink.end())),
             sink.size() );
         BOOST_CHECK( *sink.begin() == p );
-        BOOST_CHECK( sink.back() == p );
+        BOOST_CHECK( sink.front() == p );
 
         sink.clear();
 
-        BOOST_CHECK( ! sink.back() );
+        BOOST_CHECK( ! sink.front() );
         BOOST_CHECK( sink.empty() );
     }
 
     {
-        debug::PassivePacketSource source;
-        debug::ActivePacketSink sink;
+        debug::PassiveSource source;
+        debug::ActiveSink sink;
 
-        ppi::connect(source.output, sink.input);
+        ppi::connect(source, sink);
         ppi::init();
 
         senf::PacketData::byte data[] = { 0x13u, 0x24u, 0x35u };
@@ -91,6 +99,53 @@ BOOST_AUTO_UNIT_TEST(debugModules)
     }
 }
 
+BOOST_AUTO_UNIT_TEST(activeFeederSource)
+{
+    debug::ActiveFeederSource source;
+    debug::PassiveSink sink;
+
+    ppi::connect(source,sink);
+    source.submit(senf::DataPacket::create());
+    ppi::run();
+
+    BOOST_CHECK( source.empty() );
+    BOOST_CHECK_EQUAL( source.size(), 0u );
+    BOOST_CHECK_EQUAL( sink.size(), 1u );
+}
+
+BOOST_AUTO_UNIT_TEST(activeFeederSink)
+{
+    debug::PassiveSource source;
+    debug::ActiveFeederSink sink;
+
+    ppi::connect(source,sink);
+    source.submit(senf::DataPacket::create());
+    ppi::run();
+
+    BOOST_CHECK( ! sink.empty() );
+    BOOST_CHECK_EQUAL( sink.size(), 1u );
+    BOOST_CHECK_EQUAL( debug::ActiveFeederSink::size_type(std::distance(sink.begin(), sink.end())),
+                       sink.size() );
+    BOOST_CHECK( sink.front().data().empty() );
+    BOOST_CHECK( sink.pop_front().data().empty() );
+    BOOST_CHECK( sink.empty() );
+    BOOST_CHECK( source.empty() );
+}
+
+BOOST_AUTO_UNIT_TEST(logSink)
+{
+    debug::ActiveFeederSource source;
+    debug::LogSink<> sink;
+
+    ppi::connect(source,sink);
+    senf::PacketData::byte data[] = { 0x13u, 0x24u, 0x35u };
+    source.submit( senf::DataPacket::create(data) );
+    senf::ppi::run();
+    
+    BOOST_CHECK_EQUAL( logstream.str(), 
+                       "  0000  13 24 35                                          .$5\n\n" );
+}
+
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_