/* Generated by YAKINDU Statechart Tools code generator. */ #include "gtest/gtest.h" #include "EventDrivenTriggeredByTimeEvent.h" #include "EventDrivenTriggeredByTimeEventRequired.h" #include "sc_timer_service.h" //! The timers are managed by a timer service. */ static sc_unit_timer_service_t timer_service; static EventDrivenTriggeredByTimeEvent statechart; class EventDrivenTriggeredByTimeEventTest : public ::testing::Test{ protected: virtual void SetUp() { eventDrivenTriggeredByTimeEvent_init(&statechart); sc_timer_service_init( &timer_service, (sc_raise_time_event_fp) &eventDrivenTriggeredByTimeEvent_raiseTimeEvent, (sc_run_cycle_fp) &eventDrivenTriggeredByTimeEvent_runCycle, true, 200, &statechart ); } }; TEST_F(EventDrivenTriggeredByTimeEventTest, timeEventTriggersRunCycle) { eventDrivenTriggeredByTimeEvent_enter(&statechart); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_A)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); sc_timer_service_proceed_time(&timer_service, 999); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_A)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); sc_timer_service_proceed_time(&timer_service, 1); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_B)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_transition_count(&statechart)== 1l); sc_timer_service_proceed_time(&timer_service, 1000); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_A)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_transition_count(&statechart)== 2l); sc_timer_service_proceed_time(&timer_service, 999000); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_B)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_transition_count(&statechart)== 1001l); sc_timer_service_proceed_time(&timer_service, 999000); EXPECT_TRUE(eventDrivenTriggeredByTimeEvent_isStateActive(&statechart, EventDrivenTriggeredByTimeEvent_EventDrivenTriggeredByTimeEvent_r_A)); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_x(&statechart)== 0l); EXPECT_TRUE(eventDrivenTriggeredByTimeEventIface_get_transition_count(&statechart)== 2000l); eventDrivenTriggeredByTimeEvent_exit(&statechart); } void eventDrivenTriggeredByTimeEvent_setTimer(EventDrivenTriggeredByTimeEvent* statechart, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic){ sc_timer_t timer; sc_timer_init(&timer, time_ms, periodic, evid); insert_timer(&timer_service, timer); } void eventDrivenTriggeredByTimeEvent_unsetTimer(EventDrivenTriggeredByTimeEvent* handle, const sc_eventid evid){ delete_task(&timer_service, find_time_event(&timer_service, evid)); }