X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FJoins.test.cc;h=671844862402581e145f6765a0d74475671ff2ea;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=433e2cbc2c4b1562a26b3905ccc5df39c56b06bf;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/PPI/Joins.test.cc b/senf/PPI/Joins.test.cc index 433e2cb..6718448 100644 --- a/senf/PPI/Joins.test.cc +++ b/senf/PPI/Joins.test.cc @@ -36,18 +36,27 @@ #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 +74,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 +105,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 +128,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 +143,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_