00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef WFLAGFORWARDER_TEST_H
00026 #define WFLAGFORWARDER_TEST_H
00027
00028 #include <cxxtest/TestSuite.h>
00029
00030 #include "../WFlagForwarder.h"
00031 #include "../WFlag.h"
00032 #include "../WConditionOneShot.h"
00033
00034
00035
00036
00037 class WFlagForwarderTest : public CxxTest::TestSuite
00038 {
00039 public:
00040
00041
00042
00043
00044 void testPropagation( void )
00045 {
00046
00047 boost::shared_ptr< WFlag< int > > flagSource = boost::shared_ptr< WFlag< int > >( new WFlag< int >( new WConditionOneShot(), 5 ) );
00048 boost::shared_ptr< WFlag< int > > flagTarget1 = boost::shared_ptr< WFlag< int > >( new WFlag< int >( new WConditionOneShot(), 10 ) );
00049 boost::shared_ptr< WFlag< int > > flagTarget2 = boost::shared_ptr< WFlag< int > >( new WFlag< int >( new WConditionOneShot(), 15 ) );
00050
00051
00052 WFlagForwarder< int >* f = new WFlagForwarder< int >( flagSource );
00053 f->forward( flagTarget1 );
00054 f->forward( flagTarget2 );
00055
00056
00057 TS_ASSERT( flagSource->get() == 5 );
00058 TS_ASSERT( flagTarget1->get() == 5 );
00059 TS_ASSERT( flagTarget2->get() == 5 );
00060
00061
00062 flagSource->set( 50 );
00063
00064
00065 TS_ASSERT( flagSource->get() == 50 );
00066 TS_ASSERT( flagTarget1->get() == 50 );
00067 TS_ASSERT( flagTarget2->get() == 50 );
00068
00069
00070 flagTarget2->set( 100 );
00071 TS_ASSERT( flagSource->get() == 50 );
00072 TS_ASSERT( flagTarget1->get() == 50 );
00073 TS_ASSERT( flagTarget2->get() == 100 );
00074 }
00075 };
00076
00077 #endif // WFLAGFORWARDER_TEST_H
00078
00079