SyncJoin.cc 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * Copyright (c) 2013 committers of YAKINDU and others.
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution, and is available at
  6. * http://www.eclipse.org/legal/epl-v10.html
  7. *
  8. * Contributors:
  9. * committers of YAKINDU - initial API and implementation
  10. */
  11. #include <string>
  12. #include "gtest/gtest.h"
  13. #include "SyncJoin.h"
  14. TEST(StatemachineTest, syncJoin_C2_Waits) {
  15. SyncJoin handle;
  16. syncJoin_init(&handle);
  17. syncJoin_enter(&handle);
  18. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B));
  19. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  20. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  21. syncJoinIface_raise_e(&handle);
  22. syncJoin_runCycle(&handle);
  23. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  24. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  25. syncJoinIface_raise_jc(&handle);
  26. syncJoin_runCycle(&handle);
  27. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  28. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  29. syncJoinIface_raise_jd(&handle);
  30. syncJoin_runCycle(&handle);
  31. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  32. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  33. syncJoinIface_raise_jc(&handle);
  34. syncJoinIface_raise_jd(&handle);
  35. syncJoin_runCycle(&handle);
  36. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  37. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  38. syncJoinIface_raise_f(&handle);
  39. syncJoin_runCycle(&handle);
  40. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  41. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  42. syncJoinIface_raise_jc(&handle);
  43. syncJoin_runCycle(&handle);
  44. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  45. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  46. syncJoinIface_raise_jd(&handle);
  47. syncJoin_runCycle(&handle);
  48. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  49. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  50. syncJoinIface_raise_jc(&handle);
  51. syncJoinIface_raise_jd(&handle);
  52. syncJoin_runCycle(&handle);
  53. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_A));
  54. }
  55. TEST(StatemachineTest, syncJoin_D2_Waits) {
  56. SyncJoin handle;
  57. syncJoin_init(&handle);
  58. syncJoin_enter(&handle);
  59. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B));
  60. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  61. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D1));
  62. syncJoinIface_raise_f(&handle);
  63. syncJoin_runCycle(&handle);
  64. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  65. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  66. syncJoinIface_raise_jc(&handle);
  67. syncJoin_runCycle(&handle);
  68. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  69. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  70. syncJoinIface_raise_jd(&handle);
  71. syncJoin_runCycle(&handle);
  72. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  73. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  74. syncJoinIface_raise_jc(&handle);
  75. syncJoinIface_raise_jd(&handle);
  76. syncJoin_runCycle(&handle);
  77. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C1));
  78. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  79. syncJoinIface_raise_e(&handle);
  80. syncJoin_runCycle(&handle);
  81. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r1_C2));
  82. EXPECT_TRUE(syncJoin_isActive(&handle, SyncJoin_main_region_B_r2_D2));
  83. }