ParentFirstExecutionHierarchyTest.cc 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /* Generated by YAKINDU Statechart Tools code generator. */
  2. #include "gtest/gtest.h"
  3. #include "ParentFirstExecutionHierarchy.h"
  4. #include "sc_timer_service.h"
  5. //! The timers are managed by a timer service. */
  6. static sc_unit_timer_service_t timer_service;
  7. static ParentFirstExecutionHierarchy statechart;
  8. class ParentFirstExecutionHierarchyTest : public ::testing::Test{
  9. protected:
  10. virtual void SetUp() {
  11. parentFirstExecutionHierarchy_init(&statechart);
  12. sc_timer_service_init(
  13. &timer_service,
  14. 0,
  15. (sc_run_cycle_fp) &parentFirstExecutionHierarchy_runCycle,
  16. false,
  17. 200,
  18. &statechart
  19. );
  20. }
  21. };
  22. void assertNoLocalReaction(){
  23. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_a_local(&statechart));
  24. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aa_local(&statechart));
  25. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aaa_local(&statechart));
  26. }
  27. TEST_F(ParentFirstExecutionHierarchyTest, childShouldTakeTransition) {
  28. parentFirstExecutionHierarchy_enter(&statechart);
  29. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_A_r_AA_r_AAA));
  30. parentFirstExecutionHierarchyIface_set_disable_a(&statechart,true);
  31. parentFirstExecutionHierarchyIface_set_disable_aa(&statechart,true);
  32. parentFirstExecutionHierarchyIface_raise_e(&statechart);
  33. sc_timer_service_proceed_cycles(&timer_service, 1);
  34. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_B));
  35. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_a_reacted(&statechart));
  36. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aa_reacted(&statechart));
  37. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_aaa_reacted(&statechart));
  38. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_a_local(&statechart));
  39. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_aa_local(&statechart));
  40. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aaa_local(&statechart));
  41. }
  42. TEST_F(ParentFirstExecutionHierarchyTest, parentShouldTakeTransition) {
  43. parentFirstExecutionHierarchy_enter(&statechart);
  44. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_A_r_AA_r_AAA));
  45. parentFirstExecutionHierarchyIface_set_disable_a(&statechart,true);
  46. parentFirstExecutionHierarchyIface_raise_e(&statechart);
  47. sc_timer_service_proceed_cycles(&timer_service, 1);
  48. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_B));
  49. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_a_reacted(&statechart));
  50. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_aa_reacted(&statechart));
  51. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aaa_reacted(&statechart));
  52. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_a_local(&statechart));
  53. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aa_local(&statechart));
  54. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aaa_local(&statechart));
  55. }
  56. TEST_F(ParentFirstExecutionHierarchyTest, grandparentShouldTakeTransition) {
  57. parentFirstExecutionHierarchy_enter(&statechart);
  58. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_A_r_AA_r_AAA));
  59. parentFirstExecutionHierarchyIface_raise_e(&statechart);
  60. sc_timer_service_proceed_cycles(&timer_service, 1);
  61. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_B));
  62. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_a_reacted(&statechart));
  63. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aa_reacted(&statechart));
  64. EXPECT_TRUE(!parentFirstExecutionHierarchyIface_get_aaa_reacted(&statechart));
  65. assertNoLocalReaction();
  66. }
  67. TEST_F(ParentFirstExecutionHierarchyTest, expectLocalReactrionsExecuteWithNoTransition) {
  68. parentFirstExecutionHierarchy_enter(&statechart);
  69. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_A_r_AA_r_AAA));
  70. sc_timer_service_proceed_cycles(&timer_service, 1);
  71. EXPECT_TRUE(parentFirstExecutionHierarchy_isStateActive(&statechart, ParentFirstExecutionHierarchy_ParentFirstExecutionHierarchy_r_A_r_AA_r_AAA));
  72. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_a_local(&statechart));
  73. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_aa_local(&statechart));
  74. EXPECT_TRUE(parentFirstExecutionHierarchyIface_get_aaa_local(&statechart));
  75. }