SyncJoinTest.cc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /* Generated by YAKINDU Statechart Tools code generator. */
  2. #include "gtest/gtest.h"
  3. #include "SyncJoin.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 SyncJoin statechart;
  8. class SyncJoinTest : public ::testing::Test{
  9. protected:
  10. virtual void SetUp() {
  11. syncJoin_init(&statechart);
  12. sc_timer_service_init(
  13. &timer_service,
  14. 0,
  15. (sc_run_cycle_fp) &syncJoin_runCycle,
  16. false,
  17. 200,
  18. &statechart
  19. );
  20. }
  21. };
  22. TEST_F(SyncJoinTest, syncJoin_C2_Waits) {
  23. syncJoin_enter(&statechart);
  24. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B));
  25. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  26. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  27. syncJoinIface_raise_e(&statechart);
  28. sc_timer_service_proceed_cycles(&timer_service, 1);
  29. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  30. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  31. syncJoinIface_raise_jc(&statechart);
  32. sc_timer_service_proceed_cycles(&timer_service, 1);
  33. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  34. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  35. syncJoinIface_raise_jd(&statechart);
  36. sc_timer_service_proceed_cycles(&timer_service, 1);
  37. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  38. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  39. syncJoinIface_raise_jc(&statechart);
  40. syncJoinIface_raise_jd(&statechart);
  41. sc_timer_service_proceed_cycles(&timer_service, 1);
  42. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  43. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  44. syncJoinIface_raise_f(&statechart);
  45. sc_timer_service_proceed_cycles(&timer_service, 1);
  46. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  47. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  48. syncJoinIface_raise_jc(&statechart);
  49. sc_timer_service_proceed_cycles(&timer_service, 1);
  50. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  51. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  52. syncJoinIface_raise_jd(&statechart);
  53. sc_timer_service_proceed_cycles(&timer_service, 1);
  54. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  55. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  56. syncJoinIface_raise_jc(&statechart);
  57. syncJoinIface_raise_jd(&statechart);
  58. sc_timer_service_proceed_cycles(&timer_service, 1);
  59. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_A));
  60. }
  61. TEST_F(SyncJoinTest, syncJoin_D2_Waits) {
  62. syncJoin_enter(&statechart);
  63. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B));
  64. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  65. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D1));
  66. syncJoinIface_raise_f(&statechart);
  67. sc_timer_service_proceed_cycles(&timer_service, 1);
  68. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  69. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  70. syncJoinIface_raise_jc(&statechart);
  71. sc_timer_service_proceed_cycles(&timer_service, 1);
  72. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  73. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  74. syncJoinIface_raise_jd(&statechart);
  75. sc_timer_service_proceed_cycles(&timer_service, 1);
  76. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  77. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  78. syncJoinIface_raise_jc(&statechart);
  79. syncJoinIface_raise_jd(&statechart);
  80. sc_timer_service_proceed_cycles(&timer_service, 1);
  81. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C1));
  82. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  83. syncJoinIface_raise_e(&statechart);
  84. sc_timer_service_proceed_cycles(&timer_service, 1);
  85. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r1_C2));
  86. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_B_r2_D2));
  87. }
  88. TEST_F(SyncJoinTest, doubleEntryActionBug) {
  89. syncJoin_enter(&statechart);
  90. syncJoinIface_raise_e(&statechart);
  91. syncJoinIface_raise_f(&statechart);
  92. sc_timer_service_proceed_cycles(&timer_service, 1);
  93. syncJoinIface_raise_jc(&statechart);
  94. syncJoinIface_raise_jd(&statechart);
  95. sc_timer_service_proceed_cycles(&timer_service, 1);
  96. EXPECT_TRUE(syncJoin_isStateActive(&statechart, SyncJoin_main_region_A));
  97. EXPECT_TRUE(syncJoinIface_get_x(&statechart)== 1l);
  98. }