SyncJoin.sctunit 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. testgroup SyncJoin for statechart SyncJoin {
  2. // test syncJoin_C2_Waits 'test intention' {
  3. test syncJoin_C2_Waits {
  4. enter
  5. assert active (SyncJoin.main_region.B)
  6. assert active (SyncJoin.main_region.B.r1.C1)
  7. assert active (SyncJoin.main_region.B.r2.D1)
  8. // state configuration assertion: assert active (SyncJoin.main_region.B, SyncJoin.main_region.B.r1.C1, SyncJoin.main_region.B.r2.D1)
  9. raise e
  10. cycle
  11. assert active (SyncJoin.main_region.B.r1.C2)
  12. assert active (SyncJoin.main_region.B.r2.D1)
  13. // require configuration C2Waits
  14. raise jc
  15. cycle
  16. assert active (SyncJoin.main_region.B.r1.C2)
  17. assert active (SyncJoin.main_region.B.r2.D1)
  18. raise jd
  19. cycle
  20. assert active (SyncJoin.main_region.B.r1.C2)
  21. assert active (SyncJoin.main_region.B.r2.D1)
  22. // 'If all required triggers exist' 'but the lower priority state is not active no join transition must be taken.'
  23. raise jc
  24. raise jd
  25. cycle
  26. assert active (SyncJoin.main_region.B.r1.C2)
  27. assert active (SyncJoin.main_region.B.r2.D1)
  28. raise f
  29. cycle
  30. assert active (SyncJoin.main_region.B.r1.C2)
  31. assert active (SyncJoin.main_region.B.r2.D2)
  32. raise jc
  33. cycle
  34. assert active (SyncJoin.main_region.B.r1.C2)
  35. assert active (SyncJoin.main_region.B.r2.D2)
  36. raise jd
  37. cycle
  38. assert active (SyncJoin.main_region.B.r1.C2)
  39. assert active (SyncJoin.main_region.B.r2.D2)
  40. raise jc
  41. raise jd
  42. cycle
  43. assert active (SyncJoin.main_region.A)
  44. }
  45. test syncJoin_D2_Waits {
  46. enter
  47. assert active (SyncJoin.main_region.B)
  48. assert active (SyncJoin.main_region.B.r1.C1)
  49. assert active (SyncJoin.main_region.B.r2.D1)
  50. raise f
  51. cycle
  52. assert active (SyncJoin.main_region.B.r1.C1)
  53. assert active (SyncJoin.main_region.B.r2.D2)
  54. raise jc
  55. cycle
  56. assert active (SyncJoin.main_region.B.r1.C1)
  57. assert active (SyncJoin.main_region.B.r2.D2)
  58. raise jd
  59. cycle
  60. assert active (SyncJoin.main_region.B.r1.C1)
  61. assert active (SyncJoin.main_region.B.r2.D2)
  62. // 'If all required triggers exist' 'but the lower priority state is not active no join transition must be taken.'
  63. raise jc
  64. raise jd
  65. cycle
  66. assert active (SyncJoin.main_region.B.r1.C1)
  67. assert active (SyncJoin.main_region.B.r2.D2)
  68. raise e
  69. cycle
  70. assert active (SyncJoin.main_region.B.r1.C2)
  71. assert active (SyncJoin.main_region.B.r2.D2)
  72. }
  73. /* Entry actions of a join target should only be called once.
  74. *
  75. * There was a bug that lead to a multiple entry action call depending on the number of joined transitions.
  76. */
  77. test doubleEntryActionBug {
  78. enter
  79. raise e
  80. raise f
  81. cycle
  82. raise jc
  83. raise jd
  84. cycle
  85. assert active (SyncJoin.main_region.A)
  86. assert x == 1
  87. }
  88. }