brewcycle_test.cpp
来自「含有uml的多个实例及实例的java源码。」· C++ 代码 · 共 854 行 · 第 1/2 页
CPP
854 行
// {{{RME classifier 'Logical View::TestHarnesses::MarkI_Tests::Scenarios_MarkI::BrewCycle_Test'#if defined( PRAGMA ) && ! defined( PRAGMA_IMPLEMENTED )#pragma implementation "rtg/BrewCycle_Test.h"#endif#include <RTSystem/AutoTestMarkI_x86VisualCpp60.h>#include <rtg/BrewCycle_Test.h>#include <rtg/Boiler.h>#include <rtg/BrewButton.h>#include <rtg/IndicatorLight.h>#include <rtg/ReliefValve.h>#include <rtg/Warmer.h>// {{{RME tool 'OT::Cpp' property 'ImplementationPreface'// {{{USR// }}}USR// }}}RMEstatic const RTRelayDescriptor rtg_relays[] ={ { "reliefValve" , &ReliefValve::Base::rt_class , 1 // cardinality } , { "boiler" , &Boiler::Base::rt_class , 1 // cardinality } , { "brewButton" , &BrewButton::Base::rt_class , 1 // cardinality } , { "warmer" , &Warmer::Base::rt_class , 1 // cardinality } , { "indicatorLight" , &IndicatorLight::Base::rt_class , 1 // cardinality } , { "testResults" , &TestResults::Base::rt_class , 1 // cardinality }};static RTActor * new_BrewCycle_Test_Actor( RTController * _rts, RTActorRef * _ref ){ return new BrewCycle_Test_Actor( _rts, _ref );}const RTActorClass BrewCycle_Test ={ &MarkI_TestContainer , "BrewCycle_Test" , (RTVersionId)0 , 6 , rtg_relays , new_BrewCycle_Test_Actor};static const char * const rtg_state_names[] ={ "TOP" , "Waiting" , "Light" , "Check" , "BoilerValveOn" , "CheckWarmerGoesOn" , "boilerEmpty" , "BoilerOff" , "ValveOff" , "Done"};#define SUPER MarkI_TestContainer_ActorBrewCycle_Test_Actor::BrewCycle_Test_Actor( RTController * rtg_rts, RTActorRef * rtg_ref ) : MarkI_TestContainer_Actor( rtg_rts, rtg_ref ){}BrewCycle_Test_Actor::~BrewCycle_Test_Actor( void ){}int BrewCycle_Test_Actor::_followInV( RTBindingEnd & rtg_end, int rtg_portId, int rtg_repIndex ){ switch( rtg_portId ) { case 0: // reliefValve if( rtg_repIndex < 1 ) { // t_reliefValve rtg_end.port = &t_reliefValve; rtg_end.index = rtg_repIndex; return 1; } break; case 1: // boiler if( rtg_repIndex < 1 ) { // t_boiler rtg_end.port = &t_boiler; rtg_end.index = rtg_repIndex; return 1; } break; case 2: // brewButton if( rtg_repIndex < 1 ) { // t_brewButton rtg_end.port = &t_brewButton; rtg_end.index = rtg_repIndex; return 1; } break; case 3: // warmer if( rtg_repIndex < 1 ) { // t_warmer rtg_end.port = &t_warmer; rtg_end.index = rtg_repIndex; return 1; } break; case 4: // indicatorLight if( rtg_repIndex < 1 ) { // t_indicatorLight rtg_end.port = &t_indicatorLight; rtg_end.index = rtg_repIndex; return 1; } break; case 5: // testResults if( rtg_repIndex < 1 ) { rtg_end.port = &testResults; rtg_end.index = rtg_repIndex; return 1; } break; default: break; } return MarkI_TestContainer_Actor::_followInV( rtg_end, rtg_portId, rtg_repIndex );}// {{{RME enter ':TOP:Done'#define CALLSUPER MarkI_TestContainer_Actor::enter10_Done()INLINE_METHODS void BrewCycle_Test_Actor::enter10_Done( void ){ // {{{USR testResults.success().send(); // }}}USR}#undef CALLSUPER// }}}RMEvoid BrewCycle_Test_Actor::enterStateV( void ){ switch( getCurrentState() ) { case 10: enter10_Done(); break; default: MarkI_TestContainer_Actor::enterStateV(); break; }}// {{{RME transition ':TOP:Waiting:Junction2:Prepare'#define SUPERMETHOD MarkI_TestContainer_Actor::transition3_Prepare#define CALLSUPER MarkI_TestContainer_Actor::transition3_Prepare( rtdata, rtport )INLINE_METHODS void BrewCycle_Test_Actor::transition3_Prepare( const void * rtdata, TestResults::Base * rtport ){ // {{{USR // start test timer timer.informIn( RTTimespec( 4,0 ) ); // put empty pot // fill boiler with water // press brew button t_warmer.potEmpty().send(); t_boiler.boilerNotEmpty().send(); t_brewButton.brewButtonPushed().send(); // }}}USR}#undef SUPERMETHOD#undef CALLSUPER// }}}RME// {{{RME transition ':TOP:BoilerValveOn:Junction2:waterStartToFill'#define SUPERMETHOD MarkI_TestContainer_Actor::transition6_waterStartToFill#define CALLSUPER MarkI_TestContainer_Actor::transition6_waterStartToFill( rtdata, rtport )INLINE_METHODS void BrewCycle_Test_Actor::transition6_waterStartToFill( const void * rtdata, RTProtocol * rtport ){ // {{{USR t_warmer.potNotEmpty().send(); // }}}USR}#undef SUPERMETHOD#undef CALLSUPER// }}}RME// {{{RME transition ':TOP:CheckWarmerGoesOn:Junction2:warmer_on'#define SUPERMETHOD MarkI_TestContainer_Actor::transition7_warmer_on#define CALLSUPER MarkI_TestContainer_Actor::transition7_warmer_on( rtdata, rtport )INLINE_METHODS void BrewCycle_Test_Actor::transition7_warmer_on( const void * rtdata, Warmer::Base * rtport ){ // {{{USR t_boiler.boilerEmpty().send(); // }}}USR}#undef SUPERMETHOD#undef CALLSUPER// }}}RMEINLINE_CHAINS void BrewCycle_Test_Actor::chain2_Initial( void ){ // transition ':TOP:Initial:Initial' rtgChainBegin( 1, "Initial" ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 2 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain1_timeout( void ){ // classifier 'Logical View::TestHarnesses::MarkI_Tests::MarkI_TestContainer' transition ':TOP:Junction1:timeout' rtgChainBegin( 1, "timeout" ); exitToChainState( 1, rtg_parent_state ); rtgTransitionBegin(); transition1_timeout( msg->data, (Timing::Base *)msg->sap() ); rtgTransitionEnd(); processHistory();}INLINE_CHAINS void BrewCycle_Test_Actor::chain3_Prepare( void ){ // transition ':TOP:Waiting:Junction2:Prepare' rtgChainBegin( 2, "Prepare" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition3_Prepare( msg->data, (TestResults::Base *)msg->sap() ); rtgTransitionEnd(); enterState( 3 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain4_indicatorOff( void ){ // transition ':TOP:Light:Junction2:indicatorOff' rtgChainBegin( 3, "indicatorOff" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 4 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain5_heat_boiler( void ){ // transition ':TOP:Check:Junction2:heat_boiler' rtgChainBegin( 4, "heat_boiler" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 5 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain6_waterStartToFill( void ){ // transition ':TOP:BoilerValveOn:Junction2:waterStartToFill' rtgChainBegin( 5, "waterStartToFill" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition6_waterStartToFill( msg->data, msg->sap() ); rtgTransitionEnd(); enterState( 6 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain7_warmer_on( void ){ // transition ':TOP:CheckWarmerGoesOn:Junction2:warmer_on' rtgChainBegin( 6, "warmer_on" ); exitState( rtg_parent_state ); rtgTransitionBegin(); transition7_warmer_on( msg->data, (Warmer::Base *)msg->sap() ); rtgTransitionEnd(); enterState( 7 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain8_turnOnLight( void ){ // transition ':TOP:boilerEmpty:Junction2:turnOnLight' rtgChainBegin( 7, "turnOnLight" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 8 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain9_boiler( void ){ // transition ':TOP:BoilerOff:Junction2:boiler' rtgChainBegin( 8, "boiler" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 9 );}INLINE_CHAINS void BrewCycle_Test_Actor::chain10_valve( void ){ // transition ':TOP:ValveOff:Junction2:valve' rtgChainBegin( 9, "valve" ); exitState( rtg_parent_state ); rtgTransitionBegin(); rtgTransitionEnd(); enterState( 10 );}void BrewCycle_Test_Actor::rtsBehavior( int signalIndex, int portIndex ){ for( int stateIndex = getCurrentState(); ; stateIndex = rtg_parent_state[ stateIndex - 1 ] ) switch( stateIndex ) { case 1: // {{{RME state ':TOP' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: chain2_Initial(); return; default: break; } break; case 12: // {{{RME classifier 'Logical View::TestHarnesses::MarkI_Tests::MarkI_TestContainer' port 'timer' switch( signalIndex ) { case Timing::Base::rti_timeout: chain1_timeout(); return; default: break; } break; // }}}RME default: break; } unexpectedMessage(); return; // }}}RME case 2: // {{{RME state ':TOP:Waiting' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 6: // {{{RME classifier 'Logical View::TestHarnesses::MarkI_Tests::MarkI_TestContainer' port 'testResults' switch( signalIndex ) { case TestResults::Base::rti_start: chain3_Prepare(); return; default: break; } break; // }}}RME default: break; } break; // }}}RME case 3: // {{{RME state ':TOP:Light' switch( portIndex ) { case 0: switch( signalIndex ) { case 1: return; default: break; } break; case 8: // {{{RME classifier 'Logical View::TestHarnesses::MarkI_Tests::MarkI_TestContainer' port 't_indicatorLight'
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?