ParentFirstOrthogonalReactions.sctunit 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. testclass ParentFirstOrthogonalReactions for statechart executionorder.ParentFirstOrthogonalReactions{
  2. var counter : integer = 0
  3. const checkFail : integer = -1
  4. operation setUp() {
  5. counter = 0
  6. }
  7. @Test operation executionOrder() {
  8. setUp
  9. mock check("A") returns ( (a_check = (counter+=1)) == checkFail )
  10. mock check("AA") returns ( (aa_check = (counter+=1)) == checkFail )
  11. mock check("AAA") returns ( (aaa_check = (counter+=1)) == checkFail )
  12. mock check("AAC") returns ( (aac_check = (counter+=1)) == checkFail )
  13. mock check("AC") returns ( (ac_check = (counter+=1)) == checkFail )
  14. mock check("C") returns ( (c_check = (counter+=1)) == checkFail )
  15. mock next() returns (counter+=1)
  16. enter
  17. proceed 1 cycle
  18. assert sm_local == 1
  19. assert a_check == 2
  20. assert a_local == 3
  21. assert aa_check == 4
  22. assert aa_local == 5
  23. assert aaa_check == 6
  24. assert aaa_local == 7
  25. assert aac_check == 8
  26. assert aac_local == 9
  27. assert ac_check == 10
  28. assert ac_local == 11
  29. assert c_check == 12
  30. assert c_local == 13
  31. }
  32. @Test operation executionOrderWIthFirstLeafTransition() {
  33. setUp
  34. mock check("A") returns ( (a_check = (counter+=1)) == checkFail )
  35. mock check("AA") returns ( (aa_check = (counter+=1)) == checkFail )
  36. mock check("AAA") returns ( (aaa_check = (counter+=1)) == aaa_check)
  37. mock check("AAC") returns ( (aac_check = (counter+=1)) == checkFail )
  38. mock check("AC") returns ( (ac_check = (counter+=1)) == checkFail )
  39. mock check("C") returns ( (c_check = (counter+=1)) == checkFail )
  40. mock next() returns (counter+=1)
  41. enter
  42. proceed 1 cycle
  43. assert sm_local == 1
  44. assert a_check == 2
  45. assert a_local == 3
  46. assert aa_check == 4
  47. assert aa_local == 5
  48. assert aaa_check == 6
  49. assert aaa_local == 0
  50. assert aac_check == 0
  51. assert aac_local == 0
  52. assert ac_check == 0
  53. assert ac_local == 0
  54. assert c_check == 7
  55. assert c_local == 8
  56. }
  57. @Test operation executionOrderWIthFirstParentTransition() {
  58. setUp
  59. mock check("A") returns ( (a_check = (counter+=1)) == checkFail )
  60. mock check("AA") returns ( (aa_check = (counter+=1)) == aa_check )
  61. mock check("AAA") returns ( (aaa_check = (counter+=1)) == checkFail)
  62. mock check("AAC") returns ( (aac_check = (counter+=1)) == checkFail )
  63. mock check("AC") returns ( (ac_check = (counter+=1)) == checkFail )
  64. mock check("C") returns ( (c_check = (counter+=1)) == checkFail )
  65. mock next() returns (counter+=1)
  66. enter
  67. proceed 1 cycle
  68. assert sm_local == 1
  69. assert a_check == 2
  70. assert a_local == 3
  71. assert aa_check == 4
  72. assert aa_local == 0
  73. assert aaa_check == 0
  74. assert aaa_local == 0
  75. assert aac_check == 0
  76. assert aac_local == 0
  77. assert ac_check == 0
  78. assert ac_local == 0
  79. assert c_check == 5
  80. assert c_local == 6
  81. }
  82. @Test operation executionOrderWIthFirstGrandParentTransition() {
  83. setUp
  84. mock check("A") returns ( (a_check = (counter+=1)) == a_check )
  85. mock check("AA") returns ( (aa_check = (counter+=1)) == checkFail )
  86. mock check("AAA") returns ( (aaa_check = (counter+=1)) == checkFail)
  87. mock check("AAC") returns ( (aac_check = (counter+=1)) == checkFail )
  88. mock check("AC") returns ( (ac_check = (counter+=1)) == checkFail )
  89. mock check("C") returns ( (c_check = (counter+=1)) == checkFail )
  90. mock next() returns (counter+=1)
  91. enter
  92. proceed 1 cycle
  93. assert sm_local == 1
  94. assert a_check == 2
  95. assert a_local == 0
  96. assert aa_check == 0
  97. assert aa_local == 0
  98. assert aaa_check == 0
  99. assert aaa_local == 0
  100. assert aac_check == 0
  101. assert aac_local == 0
  102. assert ac_check == 0
  103. assert ac_local == 0
  104. assert c_check == 3
  105. assert c_local == 4
  106. }
  107. @Test operation executionOrderWithLastLeafTransition() {
  108. setUp
  109. mock check("A") returns ( (a_check = (counter+=1)) == checkFail )
  110. mock check("AA") returns ( (aa_check = (counter+=1)) == checkFail )
  111. mock check("AAA") returns ( (aaa_check = (counter+=1)) == checkFail)
  112. mock check("AAC") returns ( (aac_check = (counter+=1)) == checkFail )
  113. mock check("AC") returns ( (ac_check = (counter+=1)) == checkFail )
  114. mock check("C") returns ( (c_check = (counter+=1)) == c_check )
  115. mock next() returns (counter+=1)
  116. enter
  117. proceed 1 cycle
  118. assert sm_local == 1
  119. assert a_check == 2
  120. assert a_local == 3
  121. assert aa_check == 4
  122. assert aa_local == 5
  123. assert aaa_check == 6
  124. assert aaa_local == 7
  125. assert aac_check == 8
  126. assert aac_local == 9
  127. assert ac_check == 10
  128. assert ac_local == 11
  129. assert c_check == 12
  130. assert c_local == 0
  131. }
  132. }