enter_exit_hierarchy.xml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?xml version="1.0" ?>
  2. <diagram author="Glenn De Jonghe" name="TestEnterExitHierarchy">
  3. <description>
  4. Testing the enter and exit hierarchy.
  5. </description>
  6. <inport name="test_input" />
  7. <outport name="test_output" />
  8. <class name="Class1" default="true">
  9. <scxml initial="outside">
  10. <state id="outside">
  11. <transition port="test_input" event="to_composite" target="/composite"/>
  12. <transition port="test_input" event="to_inner3" target="/composite/state2/inner3"/>
  13. <transition port="test_input" event="to_inner4" target="/composite/state2/inner4"/>
  14. </state>
  15. <state id="composite" initial="state1">
  16. <state id="state1" initial="inner1">
  17. <onentry>
  18. <raise port="test_output" event="enter_state1" />
  19. </onentry>
  20. <onexit>
  21. <raise port="test_output" event="exit_state1" />
  22. </onexit>
  23. <state id="inner1">
  24. <onentry>
  25. <raise port="test_output" event="enter_inner1" />
  26. </onentry>
  27. <onexit>
  28. <raise port="test_output" event="exit_inner1" />
  29. </onexit>
  30. <transition port="test_input" event="to_inner2" target="../inner2"/>
  31. </state>
  32. <state id="inner2">
  33. <onentry>
  34. <raise port="test_output" event="enter_inner2" />
  35. </onentry>
  36. <onexit>
  37. <raise port="test_output" event="exit_inner2" />
  38. </onexit>
  39. </state>
  40. </state>
  41. <state id="state2" initial="inner3">
  42. <onentry>
  43. <raise port="test_output" event="enter_state2" />
  44. </onentry>
  45. <onexit>
  46. <raise port="test_output" event="exit_state2" />
  47. </onexit>
  48. <state id="inner3">
  49. <onentry>
  50. <raise port="test_output" event="enter_inner3" />
  51. </onentry>
  52. <onexit>
  53. <raise port="test_output" event="exit_inner3" />
  54. </onexit>
  55. </state>
  56. <state id="inner4">
  57. <onentry>
  58. <raise port="test_output" event="enter_inner4" />
  59. </onentry>
  60. <onexit>
  61. <raise port="test_output" event="exit_inner4" />
  62. </onexit>
  63. </state>
  64. </state>
  65. <transition port="test_input" event="to_outside" target="/outside"/>
  66. </state>
  67. </scxml>
  68. </class>
  69. <test>
  70. <input>
  71. <event name="to_composite" port="test_input" time="0.0"/>
  72. <event name="to_inner2" port="test_input" time="0.0"/>
  73. <event name="to_outside" port="test_input" time="0.0"/>
  74. <event name="to_inner3" port="test_input" time="0.0"/>
  75. <event name="to_outside" port="test_input" time="0.0"/>
  76. <event name="to_inner4" port="test_input" time="0.0"/>
  77. </input>
  78. <expected>
  79. <slot>
  80. <event name="enter_state1" port="test_output"/>
  81. </slot>
  82. <slot>
  83. <event name="enter_inner1" port="test_output"/>
  84. </slot>
  85. <slot>
  86. <event name="exit_inner1" port="test_output"/>
  87. </slot>
  88. <slot>
  89. <event name="enter_inner2" port="test_output"/>
  90. </slot>
  91. <slot>
  92. <event name="exit_inner2" port="test_output"/>
  93. </slot>
  94. <slot>
  95. <event name="exit_state1" port="test_output"/>
  96. </slot>
  97. <slot>
  98. <event name="enter_state2" port="test_output"/>
  99. </slot>
  100. <slot>
  101. <event name="enter_inner3" port="test_output"/>
  102. </slot>
  103. <slot>
  104. <event name="exit_inner3" port="test_output"/>
  105. </slot>
  106. <slot>
  107. <event name="exit_state2" port="test_output"/>
  108. </slot>
  109. <slot>
  110. <event name="enter_state2" port="test_output"/>
  111. </slot>
  112. <slot>
  113. <event name="enter_inner4" port="test_output"/>
  114. </slot>
  115. </expected>
  116. </test>
  117. </diagram>