Move include files in debian packge into 'senf' subdirectory
[senf.git] / PPI / SocketWriter.test.cc
index a6f6055..09a2450 100644 (file)
 //#include "SocketWriter.test.ih"
 
 // Custom includes
+#include "../Socket/Protocols/INet/UDPSocketHandle.hh"
+#include "../Socket/Protocols/INet/ConnectedUDPSocketHandle.hh"
+#include "SocketReader.hh"
+#include "DebugModules.hh"
 #include "SocketWriter.hh"
+#include "Setup.hh"
 
 #include <boost/test/auto_unit_test.hpp>
 #include <boost/test/test_tools.hpp>
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
-BOOST_AUTO_UNIT_TEST(socketWriter)
-{}
+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(passiveSocketWriter)
+{
+    senf::ConnectedUDPv4ClientSocketHandle outputSocket (
+        senf::INet4SocketAddress("localhost:44344"));
+    module::PassiveSocketWriter<> udpWriter(outputSocket);
+    debug::ActiveSource source;
+    ppi::connect(source, udpWriter);
+
+    std::string data ("TEST");
+    senf::Packet p (senf::DataPacket::create(data));
+
+    senf::UDPv4ClientSocketHandle inputSocket;
+    inputSocket.bind(senf::INet4SocketAddress("localhost:44344"));
+    senf::ppi::init();
+    source.submit(p);
+
+    std::string input (inputSocket.read());
+    BOOST_CHECK_EQUAL( data, input );
+}
+
+BOOST_AUTO_UNIT_TEST(activeSocketWriter)
+{
+    senf::ConnectedUDPv4ClientSocketHandle outputSocket (
+        senf::INet4SocketAddress("localhost:44344"));
+    module::ActiveSocketWriter<> udpWriter(outputSocket);
+    debug::PassiveSource source;
+    ppi::connect(source, udpWriter);
+
+    std::string data ("TEST");
+    senf::Packet p (senf::DataPacket::create(data));
+
+    senf::UDPv4ClientSocketHandle inputSocket;
+    inputSocket.bind(senf::INet4SocketAddress("localhost:44344"));
+    senf::Scheduler::instance().timeout(
+        senf::ClockService::now() + senf::ClockService::milliseconds(100), &timeout);
+    source.submit(p);
+    senf::ppi::run();
+
+    std::string input (inputSocket.read());
+    BOOST_CHECK_EQUAL( data, input );
+}
 
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_