X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FJoins.test.cc;h=1968ffb9374f71ad0daebf17de1579e8f66b3297;hb=8a6697d11e9a6557d9a5c42b4052666fce32bc10;hp=44e975933247f7ebf87da8ce17cd35ca7dd5e2a8;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Joins.test.cc b/senf/PPI/Joins.test.cc index 44e9759..1968ffb 100644 --- a/senf/PPI/Joins.test.cc +++ b/senf/PPI/Joins.test.cc @@ -2,23 +2,28 @@ // // Copyright (C) 2007 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief Joins unit tests */ @@ -30,24 +35,33 @@ #include "Joins.hh" #include "DebugModules.hh" #include "Setup.hh" -#include "../Packets/Packets.hh" +#include -#include "../Utils/auto_unit_test.hh" +#include #include #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace ppi = senf::ppi; namespace connector = ppi::connector; namespace module = ppi::module; namespace debug = module::debug; -BOOST_AUTO_UNIT_TEST(passiveJoin) +namespace { + + struct PassiveJoin : public module::PassiveJoin + { + using module::PassiveJoin::connectors; + }; + +} + +SENF_AUTO_UNIT_TEST(passiveJoin) { debug::ActiveSource source1; debug::ActiveSource source2; - module::PassiveJoin join; + PassiveJoin join; debug::PassiveSink sink; ppi::connect(source1, join); @@ -65,15 +79,22 @@ BOOST_AUTO_UNIT_TEST(passiveJoin) sink.input.throttle(); BOOST_CHECK( ! source1 ); BOOST_CHECK( ! source2 ); - + source1.submit(p); source2.submit(p); BOOST_CHECK_EQUAL( sink.size(), 2u ); sink.input.unthrottle(); BOOST_CHECK_EQUAL( sink.size(), 4u ); + + BOOST_CHECK_EQUAL( join.connectors().size(), 2u); + source1.output.disconnect(); + BOOST_CHECK_EQUAL( join.connectors().size(), 1u); + ppi::connect(source1, join); + ppi::init(); + BOOST_CHECK_EQUAL( join.connectors().size(), 2u); } -BOOST_AUTO_UNIT_TEST(priorityJoin) +SENF_AUTO_UNIT_TEST(priorityJoin) { debug::PassiveSource source1; debug::PassiveSource source2; @@ -89,7 +110,7 @@ BOOST_AUTO_UNIT_TEST(priorityJoin) senf::Packet p1 (senf::DataPacket::create()); senf::Packet p2 (senf::DataPacket::create()); - + source1.submit(p1); BOOST_CHECK( sink ); source2.submit(p2); @@ -112,10 +133,10 @@ BOOST_AUTO_UNIT_TEST(priorityJoin) ppi::connect(source3, join, 0); ppi::connect(source4, join, -2); // Ordering now: source3, source1, source4, source2 - + senf::Packet p3 (senf::DataPacket::create()); senf::Packet p4 (senf::DataPacket::create()); - + source4.submit(p4); source3.submit(p3); source2.submit(p2); @@ -127,7 +148,46 @@ BOOST_AUTO_UNIT_TEST(priorityJoin) BOOST_CHECK( ! sink ); } -///////////////////////////////cc.e//////////////////////////////////////// +namespace { + struct ActiveJackSource + { + senf::ppi::connector::ActiveOutputJack<> output; + + debug::ActiveSource source1; + debug::ActiveSource source2; + + ActiveJackSource() + : output (source1.output) {} + + void flip() { + output.reset( source2.output); + } + }; +} + +//SENF_AUTO_UNIT_TEST(jack_passiveJoin) +//{ +// ActiveJackSource jackSource; +// PassiveJoin join; +// debug::PassiveSink sink; +// +// ppi::connect(jackSource, join); +// ppi::connect(join, sink); +// ppi::init(); +// +// senf::Packet p1 (senf::DataPacket::create()); +// senf::Packet p2 (senf::DataPacket::create()); +// +// jackSource.source1.submit( p1); +// BOOST_CHECK_EQUAL( sink.pop_front(), p1); +// +// jackSource.flip(); +// +// jackSource.source2.submit( p2); +// BOOST_CHECK_EQUAL( sink.pop_front(), p2); +//} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_