Move include files in debian packge into 'senf' subdirectory
[senf.git] / PPI / SocketReader.test.cc
index 7738e6f..dcd410d 100644 (file)
 //#include "SocketReader.test.ih"
 
 // Custom includes
+#include <algorithm>
+#include "../Socket/Protocols/INet/UDPSocketHandle.hh"
+#include "../Scheduler/Scheduler.hh"
 #include "SocketReader.hh"
+#include "DebugModules.hh"
+#include "Setup.hh"
 
 #include <boost/test/auto_unit_test.hpp>
 #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 {
+    void timeout() {
+        senf::Scheduler::instance().terminate();
+    }
+}
+
 BOOST_AUTO_UNIT_TEST(socketReader)
-{}
+{
+    senf::UDPv4ClientSocketHandle inputSocket;
+    inputSocket.bind(senf::INet4SocketAddress("localhost:44344"));
+    inputSocket.blocking(false);
+    module::ActiveSocketReader<> udpReader(inputSocket);
+    debug::PassiveSink sink;
+    ppi::connect(udpReader, sink);
+
+    std::string data ("TEST");
+
+    senf::UDPv4ClientSocketHandle outputSocket;
+    outputSocket.writeto(senf::INet4SocketAddress("localhost:44344"),data);
+    senf::Scheduler::instance().timeout(
+        senf::ClockService::now() + senf::ClockService::milliseconds(100), &timeout);
+    senf::ppi::run();
+
+    BOOST_REQUIRE( ! sink.empty() );
+    BOOST_CHECK_EQUAL( sink.front().data().size(), data.size() );
+    BOOST_CHECK( std::equal( sink.front().data().begin(), sink.front().data().end(), 
+                             data.begin()) );
+}
 
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_