summaryrefslogtreecommitdiffstats
path: root/test/w3c/promela/test403a.scxml
blob: 7042e7b5b56c129dc95962c6f0050b71591e59f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="UTF-8"?>
<!-- we test one part of 'optimal enablement' meaning that of all transitions that are enabled, we chose the ones
in child states over parent states, and use document order to break ties. We have
a parent state s0 with two children, s01 and s02. In s01, we test that a) if
a transition in the child matches, we don't consider matches in the parent and b)
that if two transitions match in any state, we take the first in document order.
In s02 we test that we take a transition in the parent if there is no
matching transition in the child. -->
<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="promela">
  <state id="s0" initial="s01">
    <onentry>
      <!-- catch the failure case -->
      <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/>
    </onentry>
    <transition event="timeout" target="fail"/>
    <transition event="event1" target="fail"/>
    <transition event="event2" target="pass"/>
    <state id="s01">
      <onentry>
        <!-- this should be caught by the first transition in this state, taking us to S02 -->
        <raise event="event1"/>
      </onentry>
      <transition event="event1" target="s02"/>
      <transition event="*" target="fail"/>
    </state>
    <state id="s02">
      <onentry>
        <!-- since the local transition has a cond that evaluates to false this should be caught by a 
    transition in the parent state, taking us to pass -->
        <raise event="event2"/>
      </onentry>
      <transition event="event1" target="fail"/>
      <transition event="event2" cond="false" target="fail"/>
    </state>
  </state>
  <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="pass">
    <onentry>
      <log label="Outcome" expr="'pass'"/>
    </onentry>
  </final>
  <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail">
    <onentry>
      <log label="Outcome" expr="'fail'"/>
    </onentry>
  </final>
</scxml>