// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
#include "DebugModules.hh"
#include "Setup.hh"
-#include <boost/test/auto_unit_test.hpp>
+#include "../Utils/auto_unit_test.hh"
#include <boost/test/test_tools.hpp>
#define prefix_
// It doesn't matter, which type of connectors we use here since they are all based on
// Connector.
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
ppi::connect(source.output,target.input);
ppi::init();
BOOST_AUTO_UNIT_TEST(passiveConnector)
{
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
ppi::connect(source.output,target.input);
ppi::init();
- // onRequest is implicitly tested within the PassivePacketSink implementation which is tested
+ // onRequest is implicitly tested within the PassiveSink implementation which is tested
// in DebugModules.test.cc
target.input.throttle();
BOOST_AUTO_UNIT_TEST(activeConnector)
{
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
ppi::connect(source.output,target.input);
ppi::init();
BOOST_AUTO_UNIT_TEST(inputConnector)
{
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
ppi::connect(source.output,target.input);
ppi::init();
- // operator() is implicitly tested within the Active/PassivePacketSink implementation which is
+ // operator() is implicitly tested within the Active/PassiveSink implementation which is
// tested in DebugModules.test.cc
- // peek() is implicitly tested within the Active/PassivePacketSink implementation
+ // peek() is implicitly tested within the Active/PassiveSink implementation
BOOST_CHECK_EQUAL ( & target.input.peer(), & source.output );
BOOST_AUTO_UNIT_TEST(outputConnector)
{
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
ppi::connect(source.output,target.input);
ppi::init();
- // operator() is implicitly tested within the Active/PassivePacketSource implementation which is
+ // operator() is implicitly tested within the Active/PassiveSource implementation which is
// tested in DebugModules.test.cc
BOOST_CHECK_EQUAL( & source.output.peer(), & target.input );
SENF_PPI_MODULE(PassiveInputTest);
public:
- ppi::connector::PassiveInput input;
+ ppi::connector::PassiveInput<> input;
PassiveInputTest() : counter() {
noroute(input);
BOOST_AUTO_UNIT_TEST(passiveInput)
{
- debug::ActivePacketSource source;
+ debug::ActiveSource source;
PassiveInputTest target;
- ppi::connect(source.output,target.input);
+ ppi::connect(source,target);
ppi::init();
BOOST_CHECK_EQUAL( & target.input.peer(), & source.output );
BOOST_AUTO_UNIT_TEST(passiveOutput)
{
- debug::PassivePacketSource source;
- debug::ActivePacketSink target;
+ debug::PassiveSource source;
+ debug::ActiveSink target;
- ppi::connect(source.output,target.input);
+ ppi::connect(source,target);
ppi::init();
senf::Packet p (senf::DataPacket::create());
BOOST_AUTO_UNIT_TEST(activeInput)
{
- debug::PassivePacketSource source;
- debug::ActivePacketSink target;
+ debug::PassiveSource source;
+ debug::ActiveSink target;
- ppi::connect(source.output,target.input);
+ ppi::connect(source,target);
ppi::init();
BOOST_CHECK_EQUAL( & target.input.peer(), & source.output );
BOOST_AUTO_UNIT_TEST(activeOutput)
{
- debug::ActivePacketSource source;
- debug::PassivePacketSink target;
+ debug::ActiveSource source;
+ debug::PassiveSink target;
- ppi::connect(source.output,target.input);
+ ppi::connect(source,target);
ppi::init();
BOOST_CHECK_EQUAL( & source.output.peer(), & target.input );
// connect() is tested indirectly via ppi::connect
}
+namespace {
+
+ class TypedInputTest
+ : public ppi::module::Module
+ {
+ SENF_PPI_MODULE(TypedInputTest);
+
+ public:
+ ppi::connector::PassiveInput<senf::DataPacket> input;
+
+ TypedInputTest() {
+ noroute(input);
+ input.onRequest(&TypedInputTest::request);
+ }
+
+ void request() {
+ (void) input();
+ (void) input.read();
+ }
+ };
+
+ class TypedOutputTest
+ : public ppi::module::Module
+ {
+ SENF_PPI_MODULE(TypedOutputTest);
+
+ public:
+ ppi::connector::PassiveOutput<senf::DataPacket> output;
+
+ TypedOutputTest() {
+ noroute(output);
+ output.onRequest(&TypedOutputTest::request);
+ }
+
+ void request() {
+ senf::DataPacket pkg (senf::DataPacket::create());
+ output(pkg);
+ output.write(pkg);
+ }
+ };
+
+}
+
+BOOST_AUTO_UNIT_TEST(typedInput)
+{
+ debug::ActiveSource source;
+ TypedInputTest target;
+
+ ppi::connect(source,target);
+ ppi::init();
+
+ senf::Packet p (senf::DataPacket::create());
+ source.submit(p);
+}
+
+BOOST_AUTO_UNIT_TEST(tyepdOutput)
+{
+ TypedOutputTest source;
+ debug::ActiveSink target;
+
+ ppi::connect(source,target);
+ ppi::init();
+
+ (void) target.request();
+}
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_