25 #ifndef WMODULECONNECTOR_TEST_H
26 #define WMODULECONNECTOR_TEST_H
31 #include <boost/shared_ptr.hpp>
33 #include <cxxtest/TestSuite.h>
35 #include "../WModuleConnector.h"
36 #include "../WModuleInputData.h"
37 #include "../WModuleOutputData.h"
38 #include "../WModuleInputConnector.h"
39 #include "../WModuleOutputConnector.h"
40 #include "../WModule.h"
41 #include "../../common/WSegmentationFault.h"
42 #include "../../common/WTransferable.h"
43 #include "../../common/WPrototyped.h"
44 #include "../../common/WLogger.h"
45 #include "../exceptions/WModuleConnectorInitFailed.h"
46 #include "../exceptions/WModuleConnectionFailed.h"
47 #include "../exceptions/WModuleConnectorsIncompatible.h"
48 #include "../exceptions/WModuleException.h"
49 #include "../exceptions/WModuleConnectorUnconnected.h"
75 return "WTestTransferableBase";
85 return "Test class for testing transfer of data.";
149 return "WTestTransferableDerived";
159 return "Test class for testing transfer of data.";
207 virtual boost::shared_ptr< WModule >
factory()
const
209 return boost::shared_ptr< WModule >(
new WModuleImpl() );
237 m_input = boost::shared_ptr< WModuleInputData< WTestTransferableBase > >(
243 m_output = boost::shared_ptr< WModuleOutputData< WTestTransferableBase > >(
250 m_inputDerived = boost::shared_ptr< WModuleInputData< WTestTransferableDerived > >(
256 m_outputDerived = boost::shared_ptr< WModuleOutputData< WTestTransferableDerived > >(
284 boost::shared_ptr< WModuleConnector > )
294 boost::shared_ptr< WModuleConnector > )
307 boost::shared_ptr< WModuleConnector > output )
310 boost::shared_ptr< WModuleOutputData< WTestTransferableBase > > o =
317 boost::shared_ptr< WTestTransferableBase > ds = o->
getData();
320 data = ds->get() + 1;
336 boost::shared_ptr< WModuleInputData< WTestTransferableBase > >
m_input;
341 boost::shared_ptr< WModuleInputData< WTestTransferableDerived > >
m_inputDerived;
346 boost::shared_ptr< WModuleOutputData< WTestTransferableBase > >
m_output;
373 boost::shared_ptr< WModuleImpl >
m1;
378 boost::shared_ptr< WModuleImpl >
m2;
383 boost::shared_ptr< WModuleImpl >
m3;
391 m1 = boost::shared_ptr< WModuleImpl >(
new WModuleImpl(
"m1" ) );
392 m2 = boost::shared_ptr< WModuleImpl >(
new WModuleImpl(
"m2" ) );
393 m3 = boost::shared_ptr< WModuleImpl >(
new WModuleImpl(
"m3" ) );
412 m1->m_output->connect(
m2->m_input );
413 m1->m_input->connect(
m2->m_output );
426 TS_ASSERT(
m1->m_inputConnectors.size() == 0 );
427 TS_ASSERT(
m1->m_outputConnectors.size() == 0 );
440 TS_ASSERT(
m1->m_inputConnectors.size() == 2 );
441 TS_ASSERT(
m1->m_outputConnectors.size() == 2 );
442 TS_ASSERT(
m2->m_inputConnectors.size() == 2 );
443 TS_ASSERT(
m2->m_outputConnectors.size() == 2 );
444 TS_ASSERT(
m3->m_inputConnectors.size() == 2 );
445 TS_ASSERT(
m3->m_outputConnectors.size() == 2 );
448 TS_ASSERT(
m1->isInitialized()() );
449 TS_ASSERT(
m2->isInitialized()() );
450 TS_ASSERT(
m3->isInitialized()() );
465 TS_ASSERT(
m1->isInitialized()() );
483 TS_ASSERT(
m1->m_output->m_connected.size() == 0 );
484 TS_ASSERT(
m1->m_input->m_connected.size() == 0 );
485 TS_ASSERT(
m2->m_output->m_connected.size() == 0 );
486 TS_ASSERT(
m2->m_input->m_connected.size() == 0 );
499 TS_ASSERT(
m1->m_input->m_connected.size() == 0 );
500 TS_ASSERT(
m1->m_output->m_connected.size() == 0 );
501 TS_ASSERT(
m1->m_inputDerived->m_connected.size() == 0 );
502 TS_ASSERT(
m1->m_outputDerived->m_connected.size() == 0 );
505 TS_ASSERT_THROWS_NOTHING(
m1->m_input->connect(
m2->m_outputDerived ) );
506 TS_ASSERT(
m1->m_input->m_connected.size() == 1 );
507 TS_ASSERT(
m2->m_outputDerived->m_connected.size() == 1 );
511 TS_ASSERT(
m1->m_output->m_connected.size() == 0 );
512 TS_ASSERT(
m1->m_inputDerived->m_connected.size() == 0 );
526 TS_ASSERT(
m1->m_output->m_connected.size() == 1 );
527 TS_ASSERT(
m1->m_input->m_connected.size() == 1 );
528 TS_ASSERT(
m2->m_output->m_connected.size() == 1 );
529 TS_ASSERT(
m2->m_input->m_connected.size() == 1 );
542 TS_ASSERT_THROWS_NOTHING(
m1->m_output->connect(
m2->m_input ) );
543 TS_ASSERT_THROWS_NOTHING(
m1->m_input->connect(
m2->m_output ) );
544 TS_ASSERT(
m1->m_output->m_connected.size() == 1 );
545 TS_ASSERT(
m1->m_input->m_connected.size() == 1 );
546 TS_ASSERT(
m2->m_output->m_connected.size() == 1 );
547 TS_ASSERT(
m2->m_input->m_connected.size() == 1 );
560 TS_ASSERT_THROWS_NOTHING(
m1->m_output->disconnect(
m1->m_input ) );
561 TS_ASSERT(
m1->m_output->m_connected.size() == 1 );
562 TS_ASSERT(
m1->m_input->m_connected.size() == 1 );
565 TS_ASSERT_THROWS_NOTHING(
m1->m_output->disconnect(
m2->m_input ) );
566 TS_ASSERT(
m1->m_output->m_connected.size() == 0 );
567 TS_ASSERT(
m1->m_input->m_connected.size() == 1 );
568 TS_ASSERT(
m2->m_output->m_connected.size() == 1 );
569 TS_ASSERT(
m2->m_input->m_connected.size() == 0 );
582 TS_ASSERT_THROWS_NOTHING(
m3->m_input->connect(
m2->m_output ) );
585 TS_ASSERT(
m2->m_output->m_connected.size() == 2 );
586 TS_ASSERT(
m3->m_input->m_connected.size() == 1 );
589 m2->m_output->disconnectAll();
590 TS_ASSERT(
m2->m_output->m_connected.size() == 0 );
591 TS_ASSERT(
m1->m_input->m_connected.size() == 0 );
592 TS_ASSERT(
m3->m_input->m_connected.size() == 0 );
604 TS_ASSERT_THROWS_NOTHING(
m1->cleanup() );
605 TS_ASSERT(
m1->m_inputConnectors.size() == 0 );
606 TS_ASSERT(
m1->m_outputConnectors.size() == 0 );
622 TS_ASSERT_THROWS_NOTHING(
m1->m_output->updateData( data ) );
625 TS_ASSERT(
m1->m_output->getData()->get() == d );
626 TS_ASSERT(
m2->m_input->getData()->get() == d );
627 TS_ASSERT(
m2->data == d + 1 );
642 TS_ASSERT( !
m3->m_input->getData().get() );
645 TS_ASSERT(
m2->m_input->getData() == boost::shared_ptr< WTestTransferableBase >() );
649 #endif // WMODULECONNECTOR_TEST_H