diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
commit | b62e7979600feee23dc7cdb61042a8fc7673122b (patch) | |
tree | f7351372f37979dd2d048e0b68a16a4cd3b2aadb /test/w3c | |
parent | 1b11b310be61e51b3ac5ebb83f7c8a33aef3d6e8 (diff) | |
download | uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.zip uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.gz uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.bz2 |
Major Refactoring v2.0
Diffstat (limited to 'test/w3c')
1067 files changed, 13797 insertions, 26070 deletions
diff --git a/test/w3c/TEST-MATRIX.md b/test/w3c/TEST-MATRIX.md new file mode 100644 index 0000000..7c8abf0 --- /dev/null +++ b/test/w3c/TEST-MATRIX.md @@ -0,0 +1,2453 @@ +<table> +<thead> + <tr> + <th colspan="3">Test (Req. / Man.)</th> + <th>NameSpace</th> + <th>ECMA</th> + <th>Lua</th> + <th>PROMELA</th> + <th>Prolog</th> + </tr> +</thead> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#history">§3.10</a>**</td> + <td colspan="7"><sub> </sub>**The History Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test387.txml" alt="Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML processor MUST behave as if the transition had taken the default stored state configuration as its target.">`387`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test388.txml" alt="After the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML processor MUST behave as if the transition had taken the stored state configuration as its target.">`388`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test579.txml" alt="Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML processor MUST execute any executable content in the transition after the parent state's onentry content and any content in a possible initial transition.">`579`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test580.txml" alt="It follows from the semantics of history states that they never end up in the state configuration">`580`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#events">§3.12</a>**</td> + <td colspan="7"><sub> </sub>**SCXML Events**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test396.txml" alt="The SCXML processor MUST use this same name value (the one reflected in the event variable) to match against the `event` attribute of transitions.">`396`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test399.txml" alt="(Definition: A transition matches an event if at least one of its event descriptors matches the event's name. ) (Definition: An event descriptor matches an event name if its string of tokens is an exact match or a prefix of the set of tokens in the event's name. In all cases, the token matching is case sensitive. )">`399`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test401.txml" alt="The processor MUST place these (error) events in the internal event queue.">`401`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test402.txml" alt="The processor MUST process them (error events) like any other event.">`402`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#SelectingTransitions">§3.13</a>**</td> + <td colspan="7"><sub> </sub>**Selecting and Executing Transitions**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test403b.txml" alt="To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal transition set enabled by event E in state configuration C is the largest set of transitions such that a) each transition in the set is optimally enabled by E in an atomic state in C b) no transition conflicts with another transition in the set c) there is no optimally enabled transition outside the set that has a higher priority than some member of the set.">`403b`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test403a.txml" alt="To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal transition set enabled by event E in state configuration C is the largest set of transitions such that a) each transition in the set is optimally enabled by E in an atomic state in C b) no transition conflicts with another transition in the set c) there is no optimally enabled transition outside the set that has a higher priority than some member of the set.">`403a`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test403c.txml" alt="To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal transition set enabled by event E in state configuration C is the largest set of transitions such that a) each transition in the set is optimally enabled by E in an atomic state in C b) no transition conflicts with another transition in the set c) there is no optimally enabled transition outside the set that has a higher priority than some member of the set.">`403c`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test404.txml" alt="To execute a set of transitions, the SCXML Processor MUST first exit all the states in the transitions' exit set in exit order.">`404`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test405.txml" alt="(the SCXML Processor executing a set of transitions) MUST then (after the onexits) execute the executable content contained in the transitions in document order.">`405`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test406.txml" alt="(the SCXML Processor executing a set of transitions) MUST then (after the exits and the transitions) enter the states in the transitions' entry set in entry order.">`406`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test407.txml" alt="To exit a state, the SCXML Processor MUST execute the executable content in the state's onexit handler.">`407`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test409.txml" alt="Finally (after the onexits and canceling the invocations), the Processor MUST remove the state from the active state's list.">`409`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test411.txml" alt="To enter a state, the SCXML Processor MUST add the state to the active state's list. Then it MUST execute the executable content in the state's onentry handler.">`411`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test412.txml" alt="If the state is a default entry state and has an initial child, the SCXML Processor MUST then (after doing the active state add and the onentry handlers) execute the executable content in the initial child's transition.">`412`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test413.txml" alt="At startup, the SCXML Processor MUST place the state machine in the configuration specified by the `initial` attribute of the scxml element.">`413`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test415.txml" alt="If it (the SCXML Processor) has entered a final state that is a child of scxml (during the last microstep), it MUST halt processing.">`415`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test416.txml" alt="If it (the SCXML processor) has entered a final state that is a child of a compound state (during the last microstep), it MUST generate the event done.state.id, where id is the id of the compound state.">`416`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test417.txml" alt="If the compound state (which has the final element that we entered this microstep) is itself the child of a parallel element, and all the parallel element's other children are in final states, the Processor MUST generate the event done.state.id, where id is the id of the parallel element.">`417`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test419.txml" alt="After checking the state configuration, the Processor MUST select the optimal transition set enabled by NULL in the current configuration. If the (optimal transition) set (enabled by NULL in the current configuration) is not empty, it (the SCXML Processor) MUST execute it (the set) as a microstep.">`419`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test421.txml" alt="If the set (of eventless transitions) is empty, the Processor MUST remove events from the internal event queue until the queue is empty or it finds an event that enables a non-empty optimal transition set in the current configuration. If it finds such a set (a non-empty optimal transition set), the processor MUST then execute it as a microstep.">`421`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test422.txml" alt="After completing a macrostep, the SCXML Processor MUST execute in document order the invoke handlers in all states that have been entered (and not exited) since the completion of the last macrostep.">`422`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test423.txml" alt="Then (after invoking the new invoke handlers since the last macrostep) the Processor MUST remove events from the external event queue, waiting till events appear if necessary, until it finds one that enables a non-empty optimal transition set in the current configuration. The Processor MUST then execute that set (the enabled non-empty optimal transition set in the current configuration triggered by an external event) as a microstep.">`423`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test503.txml" alt="If the transition does not contain a `target`, its exit set is empty.">`503`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test504.txml" alt="if (a transition's) `type` is "external", its exit set consists of all active states that are proper descendents of the Least Common Compound Ancestor (LCCA) of the source and target states.">`504`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test505.txml" alt="Otherwise, if the transition has `type` "internal", its source state is a compound state and all its target states are proper descendents of its source state, the target set consists of all active states that are proper descendents of its source state.">`505`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test506.txml" alt="If a transition has `type` of "internal", but its source state is not a compound state or its target states are not all proper descendents of its source state, its exit set is defined as if it had `type` of "external".">`506`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test533.txml" alt="If a transition has `type` of "internal", but its source state is not a compound state, its exit set is defined as if it had `type` of "external".">`533`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#scxml">§3.2</a>**</td> + <td colspan="7"><sub> </sub>**The SCXML Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test355.txml" alt="At system initialization time, if the `initial` attribute is not present, the Processor MUST enter the first state in document order.">`355`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test576.txml" alt="At system initialization time, the SCXML Processor MUST enter the states specified by the `initial` attribute, if it is present.">`576`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#state">§3.3</a>**</td> + <td colspan="7"><sub> </sub>**The State Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test364.txml" alt="Definition: The default initial state(s) of a compound state are those specified by the `initial` attribute or initial element, if either is present. Otherwise it is the state's first child state in document order. If a compound state is entered either as an initial state or as the target of a transition (i.e. and no descendent of it is specified), then the SCXML Processor MUST enter the default initial state(s) after it enters the parent state.">`364`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#final">§3.7</a>**</td> + <td colspan="7"><sub> </sub>**The Final Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test372.txml" alt="When the state machine enters the final child of a state element, the SCXML processor MUST generate the event done.state.id after completion of the onentry elements, where id is the id of the parent state.">`372`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test570.txml" alt="Immediately after generating done.state.id upon entering a final child of state, if the parent state is a child of a parallel element, and all of the parallel's other children are also in final states, the Processor MUST generate the event done.state.id where id is the id of the parallel element.">`570`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#onentry">§3.8</a>**</td> + <td colspan="7"><sub> </sub>**The Onentry Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test375.txml" alt="The SCXML processor MUST execute the onentry handlers of a state in document order when the state is entered.">`375`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test376.txml" alt="The SCXML processor MUST treat each (onentry) handler as a separate block of executable content.">`376`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#onexit">§3.9</a>**</td> + <td colspan="7"><sub> </sub>**The Onexit Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test377.txml" alt="The SCXML processor MUST execute the onexit handlers of a state in document order when the state is exited.">`377`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test378.txml" alt="The SCXML processor MUST treat each (onexit) handler as a separate block of executable content.">`378`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#raise">§4.2</a>**</td> + <td colspan="7"><sub> </sub>**The Raise Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test144.txml" alt="The SCXML processor MUST place the event that is generated by the raise element at the rear of the session's internal event queue.">`144`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#if">§4.3</a>**</td> + <td colspan="7"><sub> </sub>**The If Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test147.txml" alt="When the if element is executed, the SCXML processor MUST execute the first partition in document order that is defined by a tag whose `cond` attribute evaluates to true, if there is one.">`147`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test148.txml" alt="When the if element is executed, if no `cond`attribute evaluates to true, the SCXML Processor must execute the partition defined by the else tag, if there is one.">`148`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test149.txml" alt="When it executes an if element, if no `cond` attribute evaluates to true and there is no else element, the SCXML processor must not evaluate any executable content within the element.">`149`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#foreach">§4.6</a>**</td> + <td colspan="7"><sub> </sub>**The Foreach Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test150.txml" alt="In the foreach element, the SCXML processor MUST declare a new variable if the one specified by `item` is not already defined.">`150`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test151.txml" alt="In the foreach element, if `index` is present, the SCXML processor MUST declare a new variable if the one specified by `index` is not already defined.">`151`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test152.txml" alt="In the foreach element, if `array` does not evaluate to a legal iterable collection, or if `item` does not specify a legal variable name, the SCXML processor MUST terminate execution of the foreach element and the block that contains it, and place the error error.execution on the internal event queue.">`152`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test153.txml" alt="When evaluating foreach, the SCXML processor MUST start with the first item in the collection and proceed to the last item in the iteration order that is defined for the collection. For each item in the collection in turn, the processor MUST assign it to the item variable.">`153`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test155.txml" alt="when evaluating foreach, for each item, after making the assignment, the SCXML processor MUST evaluate its child executable content. It MUST then proceed to the next item in iteration order.">`155`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test156.txml" alt="If the evaluation of any child element of foreach causes an error, the processor MUST cease execution of the foreach element and the block that contains it.">`156`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test525.txml" alt="The SCXML processor MUST act as if it has made a shallow copy of the collection produced by the evaluation of `array`. Specifically, modifications to the collection during the execution of foreach MUST NOT affect the iteration behavior.">`525`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#EvaluationofExecutableContent">§4.9</a>**</td> + <td colspan="7"><sub> </sub>**Evaluation of Executable Content**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test158.txml" alt="The SCXML processor MUST execute the elements of a block of executable contentin document order.">`158`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test159.txml" alt="If the processing of an element of executable content causes an error to be raised, the processor MUST NOT process the remaining elements of the block.">`159`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#SystemVariables">§5.10</a>**</td> + <td colspan="7"><sub> </sub>**System Variables**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test318.txml" alt="The SCXML Processor MUST bind the \_event variable when an event is pulled off the internal or external event queue to be processed, and MUST keep the variable bound to that event until another event is processed.">`318`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test319.txml" alt="The SCXML Processor MUST NOT bind \_event at initialization time until the first event is processed.">`319`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test321.txml" alt="The Processor MUST bind the variable \_sessionid at load time to the system-generated id for the current SCXML session.">`321`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test322.txml" alt="The Processor MUST keep the \_sessionid variable bound to the system-generated id until the session terminates.">`322`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test323.txml" alt="The Processor MUST bind the variable \_name at load time to the value of the `name` attribute of the scxml element. a">`323`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test324.txml" alt="The Processor MUST keep the \_name variable bound to the value of the `name` attribute of the scxml element until the session terminates.">`324`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test325.txml" alt="The Processor MUST bind the variable \_ioprocessors to a set of values, one for each Event I/O Processor that it supports.">`325`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test326.txml" alt="The Processor MUST keep the \_ioprocessors variable bound to its set of values until the session terminates.">`326`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test329.txml" alt="The Processor MUST cause any attempt to change the value of a system variable to fail.">`329`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test330.txml" alt="The SCXML Processor MUST insure that the following fields (name, type, sendid, origin, origintype, invokeid, data) are present in all events (\_event variable), whether internal or external.">`330`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test331.txml" alt="The SCXML Processor MUST set the type property of \_event to: "platform" (for events raised by the platform itself, such as error events), "internal" (for events raised by raise and send with target `\_internal`) or "external" (for all other events).">`331`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test332.txml" alt="If the sending entity has specified a value for this, the Processor MUST set this field to that value. Otherwise, in the case of error events triggered by a failed attempt to send an event, the Processor MUST set the sendid field to the send id of the triggering send element.">`332`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test333.txml" alt="For events other than error events triggered by a failed attempt to send an event, if the sending entity did not specify a value for the sendid field, the Processor MUST leave the sendid field (of \_event) blank.">`333`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test335.txml" alt="If an event was not received from an external entity, the Processor MUST leave the origin field blank.">`335`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test336.txml" alt="For external events, the SCXML Processor SHOULD set the origintype field to a value which, in combination with the `origin` field, will allow the receiver of the event to send a response back to the originating entity.">`336`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test337.txml" alt="For internal and platform events, the Processor MUST leave the origintype field blank.">`337`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test338.txml" alt="If an event is generated from an invoked child process, the Processor MUST set the invokeid field to the invoke id of the invocation that triggered the child process.">`338`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test339.txml" alt="If an event is not generated from an invoked child process, the Processor MUST leave the invokeid field blank.">`339`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test342.txml" alt="The SCXML Processor MUST set the name field (of the \_event variable) to the name of the event.">`342`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test346.txml" alt="The Processor MUST place the error error.execution on the internal event queue when any attempt to change the value of a system variable is made.">`346`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#data">§5.3</a>**</td> + <td colspan="7"><sub> </sub>**The Data Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test276.txml" alt="The SCXML Processor MUST allow the environment to provide values for top-level data elements at instantiation time. (Top-level data elements are those that are children of the datamodel element that is a child of scxml). Specifically, the Processor MUST use the values provided at instantiation time instead of those contained in these data elements.">`276`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test277.txml" alt="If the value specified for a data element (by `src`, children, or the environment) is not a legal data value, the SCXML Processor MUST raise place error.execution in the internal event queue and MUST create an empty data element in the data model with the specified id.">`277`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test279.txml" alt="When `binding` attribute on the scxml element is assigned the value "early" (the default), the SCXML Processor MUST create all data elements and assign their initial values at document initialization time.">`279`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test280.txml" alt="When `binding` attribute on the scxml element is assigned the value "late", the SCXML Processor MUST create the data elements at document initialization time, but MUST assign the specified initial value to a given data element only when the state that contains it is entered for the first time, before any onentry markup.">`280`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test550.txml" alt="If the `expr` attribute is present, the Platform MUST evaluate the corresponding expression at the time specified by the `binding` attribute of scxml and MUST assign the resulting value as the value of the data element">`550`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test551.txml" alt="f child content is specified, the Platform MUST assign it as the value of the data element at the time specified by the `binding` attribute of scxml.">`551`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test552.txml" alt="If the `src` attribute is present, the Platform MUST fetch the specified object at the time specified by the `binding` attribute of scxml and MUST assign it as the value of the data element.">`552`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#assign">§5.4</a>**</td> + <td colspan="7"><sub> </sub>**The Assign Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test286.txml" alt="If the location expression of an assign does not denote a valid location in the datamodel the processor MUST place the error error.execution in the internal event queue.">`286`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test287.txml" alt="If the location expression of an assign denotes a valid location in the datamodel and if the value specified by `expr` is a legal value for the location specified, the processor MUST place the specified value at the specified location.">`287`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test288.txml" alt="If the location expression of an assign denotes a valid location in the datamodel and if the value specified children is a legal value for the location specified, the processor MUST place the specified value at the specified location.">`288`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test487.txml" alt="If the value specified (by `expr` or children) is not a legal value for the location specified, the processor MUST place the error error.execution in the internal event queue.">`487`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#donedata">§5.5</a>**</td> + <td colspan="7"><sub> </sub>**The Donedata Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test294.txml" alt="In cases where the SCXML Processor generates a `done` event upon entry into the final state, it MUST evaluate the donedata elements param or content children and place the resulting data in the \_event.data field. The exact format of that data will be determined by the datamodel">`294`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#content">§5.6</a>**</td> + <td colspan="7"><sub> </sub>**The Content Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test527.txml" alt="When the SCXML Processor evaluates the content element, if the `expr` value expression is present, the Processor MUST evaluate it and use the result as the output of the content element.">`527`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test528.txml" alt="f the evaluation of `expr` produces an error, the Processor MUST place error.execution in the internal event queue and use the empty string as the output of the content element.">`528`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test529.txml" alt="If the `expr` attribute is not present, the Processor MUST use the children of content as the output.">`529`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#param">§5.7</a>**</td> + <td colspan="7"><sub> </sub>**The Param Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test298.txml" alt="If the `location` attribute on a param element does not refer to a valid location in the data model, the processor MUST place the error error.execution on the internal event queue.">`298`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test343.txml" alt="If the `location` attribute on a param element does not refer to a valid location in the data model, or if the evaluation of the `expr` produces an error, the processor MUST ignore the name and value.">`343`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test488.txml" alt="if the evaluation of the `expr` produces an error, the processor MUST place the error error.execution on the internal event queue.">`488`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#script">§5.8</a>**</td> + <td colspan="7"><sub> </sub>**The Script Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test301.txml" alt="If the script specified by the `src` attribute of a script element cannot be downloaded within a platform-specific timeout interval, the document is considered non-conformant, and the platform MUST reject it. N.B. This test is valid only for datamodels that support scripting.">`301`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test302.txml" alt="The SCXML Processor MUST evaluate any script element that is a child of scxml at document load time. N.B. This test is valid only for datamodels that support scripting.">`302`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test303.txml" alt="The SCXML Processor MUST evaluate all script elements not children of scxml as part of normal executable content evaluation. N.B. This test is valid only for datamodels that support scripting.">`303`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test304.txml" alt="In a conformant SCXML document, the name of any script variable MAY be used as a location expression. N.B. This test is valid only for datamodels that support scripting.">`304`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#Expressions">§5.9</a>**</td> + <td colspan="7"><sub> </sub>**Expressions**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test307.txml" alt="When "late" data binding is used, accessing data substructure in expressions before the corresponding data element is loaded MUST yield the same execution-time behavior as accessing non-existent data substructure in a loaded data instance.">`307`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test309.txml" alt="If a conditional expression cannot be evaluated as a boolean value (`true` or `false`) or if its evaluation causes an error, the SCXML processor MUST treat the expression as if it evaluated to `false`.">`309`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test310.txml" alt="All datamodels MUST support the `In()` predicate, which takes a stateID as its argument and returns true if the state machine is in that state.">`310`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test311.txml" alt="If a location expression cannot be evaluated to yield a valid location, the SCXML processor MUST place the error error.execution in the internal event queue.">`311`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test312.txml" alt="If a value expression does not return a legal data value, the SCXML processor MUST place the error error.execution in the internal event queue.">`312`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test313.txml" alt="The SCXML processor MAY reject documents containing syntactically ill-formed expressions at document load time, or it MAY wait and place error.execution in the internal event queue at runtime when the expressions are evaluated.">`313`</a>**</td> + <td>X</td> + <td>X</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test314.txml" alt="If the SCXML processor waits until it evaluates the expressions at runtime to raise errors, it MUST raise errors caused by expressions returning illegal values at the points at which Appendix A Algorithm for SCXML Interpretation indicates that the expressions are to be evaluated.">`314`</a>**</td> + <td>X</td> + <td>X</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test344.txml" alt="If a conditional expression cannot be evaluated as a boolean value (`true` or `false`) or if its evaluation causes an error, the SCXML processor MUST place the error `error.execution` in the internal event queue.">`344`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#send">§6.2</a>**</td> + <td colspan="7"><sub> </sub>**The Send Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test172.txml" alt="If `eventexpr` is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entered as the value of `event`.">`172`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test173.txml" alt="If `targetexpr` is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entered as the value of `target`.">`173`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test174.txml" alt="If `typexpr` is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entered as the value of `type`.">`174`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test175.txml" alt="If `delayexpr` is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entered as the value of `delay`.">`175`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test176.txml" alt="The SCXML Processor MUST evaluate param when the parent send element is evaluated and pass the resulting data unmodified to the external service when the message is delivered">`176`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test178.txml" alt="The SCXML Processor MUST include all attributes and values provided by param and/or `namelist` even if duplicates occur.">`178`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test179.txml" alt="The SCXML Processor MUST evaluate the content element when the parent send element is evaluated and pass the resulting data unmodified to the external service when the message is delivered.">`179`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test183.txml" alt="If `idlocation` is present, the SCXML Processor MUST generate an id when the parent send element is evaluated and store it in this location">`183`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test185.txml" alt="If a delay is specified via `delay` or `delayexpr`, the SCXML Processor MUST interpret the character string as a time interval. the SCXML Processor MUST dispatch the message only when the delay interval elapses.">`185`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test186.txml" alt="The Processor MUST evaluate all arguments to send when the send element is evaluated, and not when the message is actually dispatched.">`186`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test187.txml" alt="If the SCXML session terminates before the delay interval has elapsed, the SCXML Processor MUST discard the message without attempting to deliver it.">`187`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test194.txml" alt="If the value of the `target` or `targetexpr` attribute is not supported or invalid, the Processor MUST place the error error.execution on the internal event queue">`194`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test198.txml" alt="If neither the `type` nor the `typeexpr` is defined, the SCXML Processor MUST assume the default value of http://www.w3.org/TR/scxml/#SCXMLEventProcessor.">`198`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test199.txml" alt="f the SCXML Processor does not support the type that is specified, it MUST place the event error.execution on the internal event queue.">`199`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test200.txml" alt="SCXML Processors MUST support the type http://www.w3.org/TR/scxml/#SCXMLEventProcessor">`200`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test201.txml" alt="Processors that support HTTP POST must use the value http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor for the "type" attribute">`201`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test205.txml" alt="The sending SCXML Interpreter MUST not alter the content of the send and include it in the message that it sends to the destination specified in the target attribute of send.">`205`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test521.txml" alt="f the Processor cannot dispatch the event, it MUST place the error error.communication on the internal event queue of the session that attempted to send the event.">`521`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test553.txml" alt="If the evaluation of send's arguments produces an error, If the evaluation of send's arguments produces an error, the Processor MUST discard the message without attempting to deliver it.">`553`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#cancel">§6.3</a>**</td> + <td colspan="7"><sub> </sub>**The Cancel Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test207.txml" alt="The SCXML Processor MUST NOT allow cancel to affect events that were not raised in the same session.">`207`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test208.txml" alt="The Processor SHOULD make its best attempt to cancel all delayed events with the specified id.">`208`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test210.txml" alt="If the `sendidexpr` attribute is present, the SCXML Processor MUST evaluate it when the parent cancel element is evaluated and treat the result as if it had been entered as the value of `sendid`.">`210`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#invoke">§6.4</a>**</td> + <td colspan="7"><sub> </sub>**The Invoke Element**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test215.txml" alt="If the typeexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it had been entered as the value of `type`.">`215`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test216.txml" alt="If the srcexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it had been entered as the value of `src`.">`216`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test220.txml" alt="Platforms MUST support http://www.w3.org/TR/scxml/, as a value for the `type` attribute">`220`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test223.txml" alt="If the `idlocation` attribute is present, the SCXML Processor MUST generate an id automatically when the invoke element is evaluated and store it in the location specified by `idlocation`.">`223`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test224.txml" alt="When the platform generates an identifier for `idlocation`, the identifier MUST have the form stateid.platformid, where stateid is the id of the state containing this element and platformid is automatically generated.">`224`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test225.txml" alt="n the automatically generated invoke identifier, platformid MUST be unique within the current session">`225`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test226.txml" alt="When the invoke element is executed, the SCXML Processor MUST start a new logical instance of the external service specified in `type` or `typexpr`, passing it the URL specified by `src` or the data specified by content, or param.">`226`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test228.txml" alt="the Processor MUST keep track of the unique invokeid and insure that it is included in all events that the invoked service returns to the invoking session.">`228`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test229.txml" alt="When the `autoforward` attribute is set to true, the SCXML Processor MUST send an exact copy of every external event it receives to the invoked process.">`229`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test230.txml" alt="When the SCXML Processor autoforwards an event to the invoked process, all the fields specified in 5.11.1 The Internal Structure of Events MUST have the same values in the forwarded copy of the event">`230`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test232.txml" alt="he invoked external service MAY return multiple events while it is processing">`232`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test233.txml" alt="If there is a finalize handler in the instance of invoke that created the service that generated the event, the SCXML Processor MUST execute the code in that finalize handler right before it removes the event from the event queue for processing.">`233`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test234.txml" alt="t MUST NOT execute the finalize handler in any other instance of invoke besides the one in the instance of invoke that created the service that generated the event.">`234`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test235.txml" alt="Once the invoked external service has finished processing it MUST return a special event `done.invoke.id` to the external event queue of the invoking process, where id is the invokeid for the corresponding invoke element.">`235`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test236.txml" alt="The external service MUST NOT generate any other events after the invoke.done.invokeid event.">`236`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test237.txml" alt="If the invoking session takes a transition out of the state containing the invoke before it receives the `done.invoke.id` event, the SCXML Processor MUST automatically cancel the invoked component and stop its processing.">`237`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test239.txml" alt="Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml21 MUST interpret values specified by the content element or `src` attribute as markup to be executed">`239`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test240.txml" alt="Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml21 MUST interpret values specified by param element or `namelist` attribute as values that are to be injected into their data models">`240`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test241.txml" alt="Invoked services MUST treat values specified by param and namelist identically.">`241`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test242.txml" alt="Invoked services MUST also treat values specified by `src` and content identically.">`242`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test243.txml" alt="If the invoked process is of type http://www.w3.org/TR/scxml/ and `name` of a param element in the invoke matches the `id` of a data element in the top-level data declarations of the invoked session, the SCXML Processor MUST use the value of the param element as the initial value of the corresponding data element.">`243`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test244.txml" alt="If the invoked process is of type http://www.w3.org/TR/scxml/ and the key of namelist item in the invoke matches the `id` of a data element in the top-level data declarations of the invoked session, the SCXML Processor MUST use the corresponding value as the initial value of the corresponding data element.">`244`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test245.txml" alt="If the invoked process is of type http://www.w3.org/TR/scxml/, and the name of a param element or the key of of a namelis item do not match the name of a data element in the invoked process, the Processor MUST NOT add the value of the param element or namelist key/value pair to the invoked session's data model.">`245`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test247.txml" alt="If the invoked state machine is of type http://www.w3.org/TR/scxml/ and it reaches a top-level final state, the Processor MUST place the event done.invoke.id on the external event queue of the invoking machine, where id is the invokeid for this invocation">`247`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test250.txml" alt="When an invoked process of type http://www.w3.org/TR/scxml/is cancelled by the invoking process, the Processor MUST execute the onexit handlers for all active states in the invoked session">`250`</a>**</td> + <td>X</td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test252.txml" alt="Once it cancels an invoked session, the Processor MUST NOT insert any events it receives from the invoked session into the external event queue of the invoking session.">`252`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test253.txml" alt="When the invoked session is of type http://www.w3.org/TR/scxml/, The SCXML Processor MUST support the use of SCXML Event/IO processor (E.1 SCXML Event I/O Processor) to communicate between the invoking and the invoked sessions.">`253`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test530.txml" alt="The SCXML Processor MUST evaluate a child content element when the parent invoke element is evaluated and pass the resulting data to the invoked service.">`530`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test554.txml" alt="if the evaluation of the invoke element's arguments arguments produces an error, the SCXML Processor MUST terminate the processing of the element without further action.">`554`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#minimal-profile">§C.1</a>**</td> + <td colspan="7"><sub> </sub>**The Null Data Model**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test436.txml" alt="When the "datamodel" attribute of the scxml element has the value "null", the In() predicate must return `true` if and only if that state is in the current state configuration.">`436`</a>**</td> + <td>X</td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#ecma-profile">§C.2</a>**</td> + <td colspan="7"><sub> </sub>**The ECMAScript Data Model**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test278.txml" alt="In the ECMAScript data model, the SCXML processor MUST allow any data element to be accessed from any state.">`278`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test444.txml" alt="In the ECMAScript datamodel, for each data element in the document, the SCXML Processor must create an ECMAScript variable object whose name is the value of the id attribute of the data element.">`444`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test445.txml" alt="In the ECMAScript datamodel for each data element in the document, if the variable object associated with the element is not assigned at the time indicated by the `binding` attribute on the scxml element, then the SCXML Processor must assign the variable the default value ECMAScript undefined.">`445`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test446.txml" alt="In the ECMAScript data model, if either the `src` attribute or in-line content is provided in the data elemenet, then if the content (whether fetched or provided in-line) is JSON and the processor supports JSON, the SCXML Processor MUST create the corresponding ECMAScript structure and assign it as the value of the data element.">`446`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test448.txml" alt="In the ECMAScript datamodel, the SCXML Processor must place all variables in a single global ECMAScript scope.">`448`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test449.txml" alt="In the ECMAScript datamodel, the SCXML Processor must convert ECMAScript expressions used in conditional expressions into their effective boolean value using the ToBoolean operator as described in Section 9.2 of (ECMASCRIPT-262).">`449`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test451.txml" alt="In the ECMAScript datamodel, the SCXML Processor must add an ECMAScript function `In()` to the SCXML namespace that takes a stateID as its argument and returns `true` if and only if that state is in the current state configuration, as described in 5.10.1 Conditional Expressions.">`451`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test452.txml" alt="In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript left-hand-side expression as a location expression.">`452`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test453.txml" alt="In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript expression as a value expression.">`453`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test456.txml" alt="the SCXML Processor must accept any ECMAScript program as defined in Section 14 of (ECMASCRIPT-262) as the content of a script element.">`456`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test457.txml" alt="In the ECMAScript data model, the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. The legal values for the `item` attribute on foreach are legal ECMAScript variable names.">`457`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test459.txml" alt="In the ECMAScript data model, the iteration order for the foreach element is the order of the underlying ECMAScript array, and goes from an index of 0 by increments of one to an index of array\_name.length - 1.">`459`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test460.txml" alt="In the ECMAScript data model, since shallow copy is required for the foreach element, foreach assignment is equivalent to item = array\_name(index) in ECMAScript.">`460`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test557.txml" alt="In the ECMAScript data model, if either the `src` attribute or in-line content is provided in the data element, then if the content (whether fetched or provided in-line) is an XML document, the SCXML Processor MUST create the corresponding DOM structure and assign it as the value of the data element.">`557`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test558.txml" alt="In the ECMAScript datamodel, if either the `src` attribute or in-line content is provided in the data element, and the content (whether fetched or provided in-line) is not an XML document or JSON (or the processor does not support JSON), then the Processor MUST treat the content as a space-normalized string literal and assign it as the value of the variable">`558`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test560.txml" alt="In the ECMAScript data model, if the content provided to populate \_event.data can be interpeted as key-value pairs, then for each unique key, the SCXML Processor MUST create a property of \_event.data whose name is the name of the key-value pair and whose value is the value of the key-value pair.">`560`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test561.txml" alt="In the ECMAScript data model, if the content provided to populate \_event.data can be interpreted as a valid XML document (and cannot be interpreted as key-value pairs or JSON), the Processor MUST create the corresponding DOM structure and assign it as the value \_event.data.">`561`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test562.txml" alt="In the ECMAScript data model, if the content provided to populate \_event.data is neither key-value pairs nor JSON nor a valid XML document, the Processor MUST treat the content treat the content as a space-normalized string literal and assign it as the value of \_event.data.">`562`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test569.txml" alt="For the \_ioprocessors system variable in the ECMAScript datamodel the Processor MUST create an array with an object for each Event I/O processor that it supports, where the name of the object is the same as that of the I/O processor. For the SCXML and BasicHTTP Event I/O processors, the Processor MUST create a location property under the object, assigning the access URI as its String value.">`569`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test578.txml" alt="In the ECMAScript data model, if the content provided to populate \_event.data cannot be interpreted as key value pairs and can be interpeted as JSON and the processor supports JSON, then the Processor MUST create the corresponding ECMAScript structure(s) as properties of \_event.data.">`578`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#xpath-profile">§C.3</a>**</td> + <td colspan="7"><sub> </sub>**The XPath Data Model**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test463.txml" alt="In the XPath datamodel, for each data element in the document, the SCXML Processor MUST create a child of datamodel called <data> with an `id` attribute whose value is the same as that of the `id` attribute of the document data element. The Processor MUST bind an XPath variable of the same name to that datamodel data element.">`463`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test464.txml" alt="In the XPath datamodel, for each data element in the document, if a value is not assigned at the time indicated by the `binding` attribute on the scxml element, then the SCXML Processor must leave the datamodel data element empty, as follows: <data xmlns=""></data>">`464`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test465.txml" alt="In the XPath datamodel, the SCXML Processor must place all variables in a single global XPath scope, such that they are subsequently available to all expressions within the document.">`465`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test466.txml" alt="In the XPath datamodel, the SCXML Processor must accept any XPath 2.0 expression as a conditional expression and must convert it into its effective boolean value as described in section 2.4.3 of the (XPath 2.0) specification.">`466`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test467.txml" alt="In the XPath datamodel, the SCXML Processor must add an XPath function to the SCXML namespace that takes a stateID as its argument and returns `true` if and only if that state is in the current state configuration, as described in 5.10.1 Conditional Expressions.">`467`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test468.txml" alt="In the XPath datamodel, the SCXML Processor must accept any XPath 2.0 expression as a location expression.">`468`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test469.txml" alt="In the XPath datamodel,the SCXML Processor must allow any XPath expression to be used as a value expression.">`469`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test470.txml" alt="In the XPath datamodel, if the result of a value expression is a node-set, the Processor must make a deep copy of the subtree rooted at each node.">`470`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test473.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `replacechildren`, the SCXML Processor must either replace all the children at `location` with the value specified by `expr` or place the error error.execution on the internal event queue.">`473`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test474.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `firstchild`, the SCXML Processor must either insert the value specified by `expr` before all of the children at `location` or place the error error.execution on the internal event queue.">`474`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test475.txml" alt="In the XPath datamodel,if the `type` attribute of the assign element is specified with a value of `lastchild`, the SCXML Processor must either insert the value specified by `expr` after all of the children at `location` or place the error error.execution on the internal event queue.">`475`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test476.txml" alt="In the XPath datamodel,if the `type` attribute of the assign element is specified with a value of `previoussibling`, the SCXML Processor must either insert the value specified by `expr` before the node specified by `location`, keeping the same parent, or place the error error.execution on the internal event queue.">`476`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test477.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `nextsibling`, the SCXML Processor must either insert the value specified by `expr` after the node specified by `location`, keeping the same parent, or place the error error.execution on the internal event queue.">`477`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test478.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `replace`, the SCXML Processor must either replace the node specified by `location` with the value specified by `expr` or place the error error.execution on the internal event queue.">`478`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test479.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `delete`, the SCXML Processor must either delete the node specified by `location` or place the error error.execution on the internal event queue.">`479`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test480.txml" alt="In the XPath datamodel, if the `type` attribute of the assign element is specified with a value of `addattribute`, the SCXML Processor must either add an attribute with the name specified by `attr` and value specified by `expr` to the node specified by `location` or place the error error.execution on the internal event queue.">`480`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test481.txml" alt="In the XPath datamodel, if the evaluation of any of the expressions in an assign element causes an error to be raised, evaluation of the element terminates immediately and the assign has no effect. Similarly, if the processor is unable to place the specified value at the node specified by `location` it must terminate immediately, placing the error error.execution on the internal event queue, and the assign has no effect.">`481`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test482.txml" alt="In the XPath datamodel, for each system variable defined in 5.11 System Variables, the SCXML Processor MUST create a datamodel <data> element with an `id` attribue whose value is the name of the system variable. The Processor also MUST bind an XPath variable whose name is the name of the system variable to this element.">`482`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test483.txml" alt="In the XPath datamodel, In the XPath data model, the legal iterable collections are Node-Sets, and the legal values for the `item` attribute on foreach are legal XPath variable names. The iteration order is the order of the underlying Node-set, and goes from an index of 1 by increments of one to an index of count(node-set).">`483`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test537.txml" alt="In the XPath datamodel,the SCXML Processor MUST maintain the XPath data model as an XML structure with a root element called <datamodel>. For each datamodel <data> element, the Processor MUST insert the value of the document data element as the child(ren) of the datamodel <data> element.">`537`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test539.txml" alt="In the XPath datamodel, for each data element, ff either the `src` attribute or in-line content is provided in the document data element, then if the content (whether fetched or provided in-line) is XML, the SCXML Processor MUST insert the XML as the child(ren) of the datamodel <data> element">`539`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test540.txml" alt="In the XPath datamodel, for each data element, if either the `src` attribute or in-line content is provided in the document data element, then if the content (whether fetched or provided in-line) is not XML, the Processor MUST treat the content as a space-normalized string literal and insert it as the child of the datamodel <data> element.">`540`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test542.txml" alt="In the XPath datamodel, when content is a child of donedata, the Processor MUST interpret its value as defined in D.3.7.1 \_event.data">`542`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test543.txml" alt="In the XPath datamodel, for the \_event system variable (i.e., the <data id="\_event"> child of <datamodel>), for each of the fields defined in 5.11.1 The Internal Structure of Events, the Processor MUST create an child element whose name is the name of the field.">`543`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test544.txml" alt="In the XPath datamodel, if the content provided to populate \_event.data can be interpreted as key-value pairs, then for each unique key, the SCXML Processor MUST create a <data> element as a child of \_event's data child with an `id` attribute whose value is the name of the key. The Processor MUST insert the value of the key-value pair as the content of this element.">`544`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test545.txml" alt="In the XPath datamodel,if the content provided to populate \_event.data can be interpreted as a valid XML document (and not as key-value pairs), the Processor MUST insert the XML structure as the content of \_event's <data> child.">`545`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test546.txml" alt="In the XPath datamodel, if the content provided to populate \_event.data cannot be interpreted as either key-value pairs or as a vaild XML document, the Processor MUST treat the content as a space-normalized string literal and insert it as the content of \_event's <data> child.">`546`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test547.txml" alt="In the XPath datamodel, (when evaluating assign If the specified location contains a node set, the Processor MUST perform the assignment to each node in the set.">`547`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test555.txml" alt="In the XPath datamodel, In contexts where a string is expected, the Processor MAY convert the expression result to a string using string().">`555`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test568.txml" alt="In the XPath datamodel, For the \_ioprocessors system variable the Processor MUST create an child element for each Event I/O processor that it supports, where the name of the child element is the same as that of the I/O processor. For the SCXML and BasicHTTP Event I/O processors, the Processor MUST create a <location>child under the child element, assigning the access URI as its text child.">`568`</a>**</td> + <td></td> + <td></td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#SCXMLEventProcessor">§D.1</a>**</td> + <td colspan="7"><sub> </sub>**SCXML Event I/O Processor**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test189.txml" alt="When using the scxml event i/o processor) If the target is the special term `#\_internal`, the Processor MUST add the event to the internal event queue of the sending session">`189`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test190.txml" alt="(When using the scxml event i/o processor) If the target is the special term `#\_scxml\_sessionid`, where sessionid is the id of an SCXML session that is accessible to the Processor, the Processor MUST add the event to the external queue of that session.">`190`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test191.txml" alt="(When using the scxml event i/o processor) If the target is the special term `#\_parent`, the Processor MUST add the event to the external event queue of the SCXML session that invoked the sending session, if there is one.">`191`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test192.txml" alt="(When using the scxml event i/o processor) If the target is the special term `#\_invokeid`, where invokeid is the invokeid of an SCXML session that the sending session has created by invoke, the Processor MUST must add the event to the external queue of that session.">`192`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test193.txml" alt="(When using the scxml event i/o processor) If neither the `target` nor the `targetexpr` attribute is specified, the SCXML Processor MUST add the event to the external event queue of the sending session.">`193`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test347.txml" alt="SCXML Processors MUST support sending messages to and receiving messages from other SCXML sessions using the SCXML Event I/O Processor.">`347`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test348.txml" alt="name'. The sending SCXML Processor MUST take the value of this attribute from the `event` attribute of the send element. The receiving SCXML Processor MUST use it as the value the `name` field in the event that it generates.">`348`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test349.txml" alt="source'. The sending SCXML Processor MUST populate this attribute with a URI that the receiving processor can use to reply to the sending processor. The receiving SCXML Processor MUST use this URI as the value of the `origin` field in the event that it generates.">`349`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test350.txml" alt="target'. The sending SCXML Processor MUST take the value of this attribute from the `target` attribute of the send element. The receiving SCXML Processor MUST use this value to determine which session to deliver the message to.">`350`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test351.txml" alt="sendid'. the sending SCXML Processor MUST populate this attribute with the identifier specified in the `id` attribute or automatically generated by the platform when the send tag is executed in the sending session. (See 6.2 send.) The receiving SCXML Processor MUST use this value as the value of the `sendid` field in the event that it generates. If the author of the sending session did not specify either the `id` or `idlocation` attribute, the sending SCXML Processor MUST leave this attribute empty.">`351`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test352.txml" alt="`sourcetype`. The sending SCXML Processor MUST assign this attribute the value "scxml". (Note that other types of senders will assign different values.) The receiving Processor MUST use this value as the value of the `origintype` field of the event that it generates.">`352`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test354.txml" alt="The `data` field of the event raised in the receiving session MUST contain a copy of the data specified in the `namelist` attribute or in param or content elements in the sending session. The nature of the copy operation depends on the datamodel in question. However, the Processor MUST ensure that changes to the transmitted data in the receiving session do not affect the data in the sending session and vice-versa. The format of the `data` field will depend on the datamodel of the receiving session.">`354`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test495.txml" alt="If no errors occur, the receiving Processor MUST convert the message into an SCXML event, using the mapping defined above and insert it into the appropriate queue, as defined in Send Targets.">`495`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test496.txml" alt="If the sending SCXML session specifies a session that does not exist or is inaccessible, the SCXML Processor MUST place the error error.communication on the internal event queue of the sending session.">`496`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test500.txml" alt="SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a `scxml` entry in the \_ioprocessors system variable. The Processor MUST maintain a `location` field inside this entry whose value holds an address that external entities can use to communicate with this SCXML session using the SCXML Event I/O Processor.">`500`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test501.txml" alt="The `location` field inside the entry for the SCXML Event I/O Processor in the \_ioprocessors system variable MUST hold an address that external entities can use to communicate with this SCXML session using the SCXML Event I/O Processor.">`501`</a>**</td> + <td>X</td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td>**<a href="http://www.w3.org/TR/2015/REC-scxml-20150901/#BasicHTTPEventProcessor">§D.2</a>**</td> + <td colspan="7"><sub> </sub>**Basic HTTP Event I/O Processor**<sup> </sup></td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test509.txml" alt="An SCXML Processor that supports the Basic HTTP Event I/O Processor MUST accept messages at the access URI as HTTP POST requests">`509`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test510.txml" alt="The SCXML Processor MUST validate the message it receives (via the Basic HTTP Event I/O Processor) and then MUST build the appropriate SCXML event and MUST add it to the external event queue">`510`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test513.txml" alt="After it adds the received message to the appropriate event queue, the SCXML Processor MUST then indicate the result to the external component via a success response code 2XX.">`513`</a>**</td> + <td></td> + <td>X</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>**`FAIL`**</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test518.txml" alt="If the namelist attribute is defined (in send), the SCXML Processor MUST map its variable names and values to HTTP POST parameters">`518`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test519.txml" alt="If one or more param children are present (in send), the SCXML Processor MUST map their names (i.e. name attributes) and values to HTTP POST parameters">`519`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test520.txml" alt="If a content child is present, the SCXML Processor MUST use its value as the body of the message.">`520`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test522.txml" alt="SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a `basichttp` entry in the \_ioprocessors system variable. The Processor MUST maintain a in `location` field inside this entry whose value holds an address that external entities can use to communicate with this SCXML session using the Basic HTTP Event I/O Processor.">`522`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test531.txml" alt="If a single instance of the parameter `\_scxmleventname` is present, the SCXML Processor MUST use its value as the name of the SCXML event that it raises.">`531`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test532.txml" alt="If \_scxmleventname is not present, the Processor MUST the name of the HTTP method that was used to deliver the event as name of the SCXML event that it raises">`532`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test534.txml" alt="If the `event` parameter of send is defined, the SCXML Processor MUST use its value as the value of the HTTP POST parameter \_scxmleventname">`534`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test567.txml" alt="The processor MUST use any message content other than `\_scxmleventname` to populate \_event.data.">`567`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> + <tr> + <td> **<a href="https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test577.txml" alt="If neither the `target` nor the `targetexpr` attribute is specified, the SCXML Processor MUST add the event error.communication to the internal event queue of the sending session.">`577`</a>**</td> + <td></td> + <td></td> + <td>`pass`</td> + <td>`pass`</td> + <td>`pass`</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> diff --git a/test/w3c/compound/test-ecma-all.scxml b/test/w3c/compound/test-ecma-all.scxml index a6f36fb..ec5a3de 100644 --- a/test/w3c/compound/test-ecma-all.scxml +++ b/test/w3c/compound/test-ecma-all.scxml @@ -1,5 +1,5 @@ +<?xml version="1.0"?> <scxml datamodel="ecmascript"> - <!-- test that events are inserted into the queue in the order in which they are raised. If foo occurs before bar, success, otherwise failure --> <state id="144start" initial="144s0"> @@ -17,9 +17,9 @@ </state> <state id="144pass"> <onentry> - <send event="test.144.done" /> - </onentry> - <transition event="test.144.done" target="147start" /> + <send event="test.144.done"/> + </onentry> + <transition event="test.144.done" target="147start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -30,7 +30,6 @@ </onentry> </final> </state> - <!-- test that the first clause that evaluates to true - and only that clause - is executed. Only one event should be raised, and it should be bar --> <state id="147start" initial="147s0"> @@ -56,9 +55,9 @@ </state> <state id="147pass"> <onentry> - <send event="test.147.done" /> - </onentry> - <transition event="test.147.done" target="148start" /> + <send event="test.147.done"/> + </onentry> + <transition event="test.147.done" target="148start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -69,7 +68,6 @@ </onentry> </final> </state> - <!-- test that the else clause executes if <if> and <elseif> evaluate to false. Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> @@ -96,9 +94,9 @@ </state> <state id="148pass"> <onentry> - <send event="test.148.done" /> - </onentry> - <transition event="test.148.done" target="149start" /> + <send event="test.148.done"/> + </onentry> + <transition event="test.148.done" target="149start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -109,7 +107,6 @@ </onentry> </final> </state> - <!-- test that neither if clause executes, so that bat is the only event raised. --> <state id="149start" initial="149s0"> <datamodel> @@ -131,9 +128,9 @@ </state> <state id="149pass"> <onentry> - <send event="test.149.done" /> - </onentry> - <transition event="test.149.done" target="150start" /> + <send event="test.149.done"/> + </onentry> + <transition event="test.149.done" target="150start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -144,7 +141,6 @@ </onentry> </final> </state> - <!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also test that it will use an existing var if it does exist. --> <state id="150start" initial="150s0"> @@ -180,9 +176,9 @@ </state> <state id="150pass"> <onentry> - <send event="test.150.done" /> - </onentry> - <transition event="test.150.done" target="151start" /> + <send event="test.150.done"/> + </onentry> + <transition event="test.150.done" target="151start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -193,7 +189,6 @@ </onentry> </final> </state> - <!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also test that it will use an existing var if it does exist. --> <state id="151start" initial="151s0"> @@ -229,9 +224,9 @@ </state> <state id="151pass"> <onentry> - <send event="test.151.done" /> - </onentry> - <transition event="test.151.done" target="152start" /> + <send event="test.151.done"/> + </onentry> + <transition event="test.151.done" target="152start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -242,7 +237,6 @@ </onentry> </final> </state> - <!-- test that an illegal array or item value causes error.execution and results in executable content not being executed. --> <state id="152start" initial="152s0"> @@ -284,9 +278,9 @@ </state> <state id="152pass"> <onentry> - <send event="test.152.done" /> - </onentry> - <transition event="test.152.done" target="153start" /> + <send event="test.152.done"/> + </onentry> + <transition event="test.152.done" target="153start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -297,7 +291,6 @@ </onentry> </final> </state> - <!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current value with the previous value, which is stored in var1531. The current value should always be larger. If it ever isn't, set Var1534 to 0, indicating failure --> @@ -330,9 +323,9 @@ </state> <state id="153pass"> <onentry> - <send event="test.153.done" /> - </onentry> - <transition event="test.153.done" target="155start" /> + <send event="test.153.done"/> + </onentry> + <transition event="test.153.done" target="155start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -343,7 +336,6 @@ </onentry> </final> </state> - <!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable content sums the items into var1551 so it should be 6 at the end --> <state id="155start" initial="155s0"> @@ -365,9 +357,9 @@ </state> <state id="155pass"> <onentry> - <send event="test.155.done" /> - </onentry> - <transition event="test.155.done" target="158start" /> + <send event="test.155.done"/> + </onentry> + <transition event="test.155.done" target="158start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -378,7 +370,6 @@ </onentry> </final> </state> - <!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> <state id="158start" initial="158s0"> <datamodel> @@ -398,9 +389,9 @@ </state> <state id="158pass"> <onentry> - <send event="test.158.done" /> - </onentry> - <transition event="test.158.done" target="159start" /> + <send event="test.158.done"/> + </onentry> + <transition event="test.158.done" target="159start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -411,7 +402,6 @@ </onentry> </final> </state> - <!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. The send tag will raise an error so var1591 should not be incremented. If it is fail, otherwise succeed --> <state id="159start" initial="159s0"> @@ -428,9 +418,9 @@ </state> <state id="159pass"> <onentry> - <send event="test.159.done" /> - </onentry> - <transition event="test.159.done" target="172start" /> + <send event="test.159.done"/> + </onentry> + <transition event="test.159.done" target="172start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -441,7 +431,6 @@ </onentry> </final> </state> - <!-- we test that eventexpr uses the current value of var1721, not its initial value --> <state id="172start" initial="172s0"> <datamodel> @@ -457,9 +446,9 @@ </state> <state id="172pass"> <onentry> - <send event="test.172.done" /> - </onentry> - <transition event="test.172.done" target="173start" /> + <send event="test.172.done"/> + </onentry> + <transition event="test.172.done" target="173start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -470,7 +459,6 @@ </onentry> </final> </state> - <!-- we test that targetexpr uses the current value of var1731, not its initial value (If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> <state id="173start" initial="173s0"> @@ -487,9 +475,9 @@ </state> <state id="173pass"> <onentry> - <send event="test.173.done" /> - </onentry> - <transition event="test.173.done" target="174start" /> + <send event="test.173.done"/> + </onentry> + <transition event="test.173.done" target="174start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -500,7 +488,6 @@ </onentry> </final> </state> - <!-- we test that typeexpr uses the current value of var1741, not its initial value (If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> <state id="174start" initial="174s0"> @@ -517,9 +504,9 @@ </state> <state id="174pass"> <onentry> - <send event="test.174.done" /> - </onentry> - <transition event="test.174.done" target="176start" /> + <send event="test.174.done"/> + </onentry> + <transition event="test.174.done" target="176start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -530,7 +517,6 @@ </onentry> </final> </state> - <!-- we test that <param> uses the current value of var1761, not its initial value. If the value of aParam in event1 is 2 so that var1762 gets set to 2, success, otherwise failure --> <state id="176start" initial="176s0"> @@ -556,9 +542,9 @@ </state> <state id="176pass"> <onentry> - <send event="test.176.done" /> - </onentry> - <transition event="test.176.done" target="179start" /> + <send event="test.176.done"/> + </onentry> + <transition event="test.176.done" target="179start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -569,7 +555,6 @@ </onentry> </final> </state> - <!-- we test that <content> can be used to populate body of a message --> <state id="179start" initial="179s0"> <state id="179s0"> @@ -583,9 +568,9 @@ </state> <state id="179pass"> <onentry> - <send event="test.179.done" /> - </onentry> - <transition event="test.179.done" target="183start" /> + <send event="test.179.done"/> + </onentry> + <transition event="test.179.done" target="183start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -596,7 +581,6 @@ </onentry> </final> </state> - <!-- we test that <send> stores the value of the sendid in idlocation. If it does, var1831 has a value and we pass. Otherwise we fail --> <state id="183start" initial="183s0"> @@ -612,9 +596,9 @@ </state> <state id="183pass"> <onentry> - <send event="test.183.done" /> - </onentry> - <transition event="test.183.done" target="186start" /> + <send event="test.183.done"/> + </onentry> + <transition event="test.183.done" target="186start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -625,7 +609,6 @@ </onentry> </final> </state> - <!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the message is actually sent. If it does, aParam will have the value of 1 (even though var1861 has been incremented in the interval.) If var1862 ends up == 1, we pass. Otherwise we fail --> @@ -652,9 +635,9 @@ </state> <state id="186pass"> <onentry> - <send event="test.186.done" /> - </onentry> - <transition event="test.186.done" target="189start" /> + <send event="test.186.done"/> + </onentry> + <transition event="test.186.done" target="189start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -665,7 +648,6 @@ </onentry> </final> </state> - <!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, event1 will be processed before event2, because event1 is added to the internal queue while event2 is added to the external queue (event though event2 is generated first) --> @@ -683,9 +665,9 @@ </state> <state id="189pass"> <onentry> - <send event="test.189.done" /> - </onentry> - <transition event="test.189.done" target="190start" /> + <send event="test.189.done"/> + </onentry> + <transition event="test.189.done" target="190start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -696,7 +678,6 @@ </onentry> </final> </state> - <!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, event1 will be processed before event2, because event1 is added to the internal queue while event2 is added to the external queue (event though event2 is generated first). we have to make sure that event2 @@ -727,9 +708,9 @@ </state> <state id="190pass"> <onentry> - <send event="test.190.done" /> - </onentry> - <transition event="test.190.done" target="191start" /> + <send event="test.190.done"/> + </onentry> + <transition event="test.190.done" target="191start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -740,7 +721,6 @@ </onentry> </final> </state> - <!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> @@ -768,9 +748,9 @@ </state> <state id="191pass"> <onentry> - <send event="test.191.done" /> - </onentry> - <transition event="test.191.done" target="192start" /> + <send event="test.191.done"/> + </onentry> + <transition event="test.191.done" target="192start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -781,7 +761,6 @@ </onentry> </final> </state> - <!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. If it receives this event, it sends sends the event eventReceived to its parent session (ths session). @@ -800,7 +779,6 @@ <state id="192sub0"> <onentry> <send event="childToParent" target="#_parent"/> - </onentry> <transition event="parentToChild" target="192subFinal"> <send target="#_parent" event="eventReceived"/> @@ -824,9 +802,9 @@ </state> <state id="192pass"> <onentry> - <send event="test.192.done" /> - </onentry> - <transition event="test.192.done" target="193start" /> + <send event="test.192.done"/> + </onentry> + <transition event="test.192.done" target="193start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -837,7 +815,6 @@ </onentry> </final> </state> - <!-- we test that omitting target and targetexpr of <send> when using the SCXML event i/o processor puts the event on the external queue. --> <state id="193start" initial="193s0"> @@ -846,7 +823,6 @@ <send event="internal"/> <!-- this should put event1 in the external queue --> <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - </onentry> <transition event="event1" target="193fail"/> <transition event="internal" target="193s1"/> @@ -857,9 +833,9 @@ </state> <state id="193pass"> <onentry> - <send event="test.193.done" /> - </onentry> - <transition event="test.193.done" target="194start" /> + <send event="test.193.done"/> + </onentry> + <transition event="test.193.done" target="194start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -870,7 +846,6 @@ </onentry> </final> </state> - <!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, we succeed. Otherwise we eventually timeout and fail. --> <state id="194start" initial="194s0"> @@ -887,9 +862,9 @@ </state> <state id="194pass"> <onentry> - <send event="test.194.done" /> - </onentry> - <transition event="test.194.done" target="198start" /> + <send event="test.194.done"/> + </onentry> + <transition event="test.194.done" target="198start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -900,7 +875,6 @@ </onentry> </final> </state> - <!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell what processor was used is to look at the origintype of the resulting event --> <state id="198start" initial="198s0"> @@ -914,9 +888,9 @@ </state> <state id="198pass"> <onentry> - <send event="test.198.done" /> - </onentry> - <transition event="test.198.done" target="200start" /> + <send event="test.198.done"/> + </onentry> + <transition event="test.198.done" target="200start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -927,7 +901,6 @@ </onentry> </final> </state> - <!-- we test that the processor supports the scxml event i/o processor --> <state id="200start" initial="200s0"> <state id="200s0"> @@ -940,9 +913,9 @@ </state> <state id="200pass"> <onentry> - <send event="test.200.done" /> - </onentry> - <transition event="test.200.done" target="201start" /> + <send event="test.200.done"/> + </onentry> + <transition event="test.200.done" target="201start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -953,7 +926,6 @@ </onentry> </final> </state> - <!-- we test that the processor supports the basic http event i/o processor. This is an optional test since platforms are not required to support basic http event i/o --> <state id="201start" initial="201s0"> @@ -967,9 +939,9 @@ </state> <state id="201pass"> <onentry> - <send event="test.201.done" /> - </onentry> - <transition event="test.201.done" target="205start" /> + <send event="test.201.done"/> + </onentry> + <transition event="test.201.done" target="205start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -980,7 +952,6 @@ </onentry> </final> </state> - <!-- we test that the processor doesn't change the message. We can't test that it never does this, but at least we can check that the event name and included data are the same as we sent. --> <state id="205start" initial="205s0"> @@ -1005,9 +976,9 @@ </state> <state id="205pass"> <onentry> - <send event="test.205.done" /> - </onentry> - <transition event="test.205.done" target="207start" /> + <send event="test.205.done"/> + </onentry> + <transition event="test.205.done" target="207start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1018,7 +989,6 @@ </onentry> </final> </state> - <!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event @@ -1064,9 +1034,9 @@ </state> <state id="207pass"> <onentry> - <send event="test.207.done" /> - </onentry> - <transition event="test.207.done" target="215start" /> + <send event="test.207.done"/> + </onentry> + <transition event="test.207.done" target="215start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1077,7 +1047,6 @@ </onentry> </final> </state> - <!-- we test that typexpr is evaluated at runtime. If the original value of var2151 is used, the invocation will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If the runtime value is used, the invocation will succeed --> @@ -1087,7 +1056,6 @@ </datamodel> <state id="215s0"> <onentry> - <assign location="Var2151" expr="'http://www.w3.org/TR/scxml/'"/> </onentry> <invoke typeexpr="Var2151"> @@ -1103,9 +1071,9 @@ </state> <state id="215pass"> <onentry> - <send event="test.215.done" /> - </onentry> - <transition event="test.215.done" target="220start" /> + <send event="test.215.done"/> + </onentry> + <transition event="test.215.done" target="220start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1116,7 +1084,6 @@ </onentry> </final> </state> - <!-- we test that the scxml type is supported. --> <state id="220start" initial="220s0"> <state id="220s0"> @@ -1136,9 +1103,9 @@ </state> <state id="220pass"> <onentry> - <send event="test.220.done" /> - </onentry> - <transition event="test.220.done" target="223start" /> + <send event="test.220.done"/> + </onentry> + <transition event="test.220.done" target="223start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1149,7 +1116,6 @@ </onentry> </final> </state> - <!-- we test that idlocation is supported. --> <state id="223start" initial="223s0"> <datamodel> @@ -1175,9 +1141,9 @@ </state> <state id="223pass"> <onentry> - <send event="test.223.done" /> - </onentry> - <transition event="test.223.done" target="225start" /> + <send event="test.223.done"/> + </onentry> + <transition event="test.223.done" target="225start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1188,7 +1154,6 @@ </onentry> </final> </state> - <!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> <state id="225start" initial="225s0"> <datamodel> @@ -1221,9 +1186,9 @@ </state> <state id="225pass"> <onentry> - <send event="test.225.done" /> - </onentry> - <transition event="test.225.done" target="228start" /> + <send event="test.225.done"/> + </onentry> + <transition event="test.225.done" target="228start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1234,7 +1199,6 @@ </onentry> </final> </state> - <!-- test that the invokeid is included in events returned from the invoked process. --> <state id="228start" initial="228s0"> <datamodel> @@ -1262,9 +1226,9 @@ </state> <state id="228pass"> <onentry> - <send event="test.228.done" /> - </onentry> - <transition event="test.228.done" target="229start" /> + <send event="test.228.done"/> + </onentry> + <transition event="test.228.done" target="229start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1275,7 +1239,6 @@ </onentry> </final> </state> - <!-- test that autofoward works. If the child process receives back a copy of the childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise @@ -1295,7 +1258,6 @@ <state id="229sub0"> <onentry> <send target="#_parent" event="childToParent"/> - </onentry> <transition event="childToParent" target="229subFinal"> <send target="#_parent" event="eventReceived"/> @@ -1312,9 +1274,9 @@ </state> <state id="229pass"> <onentry> - <send event="test.229.done" /> - </onentry> - <transition event="test.229.done" target="232start" /> + <send event="test.229.done"/> + </onentry> + <transition event="test.229.done" target="232start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1325,7 +1287,6 @@ </onentry> </final> </state> - <!-- test that a parent process can receive multiple events from a child process --> <state id="232start" initial="232s0"> <state id="232s0" initial="232s01"> @@ -1357,9 +1318,9 @@ </state> <state id="232pass"> <onentry> - <send event="test.232.done" /> - </onentry> - <transition event="test.232.done" target="233start" /> + <send event="test.232.done"/> + </onentry> + <transition event="test.232.done" target="233start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1370,7 +1331,6 @@ </onentry> </final> </state> - <!-- test that finalize markup runs before the event is processed. The invoked process will return 2 in _event.data.aParam, so that new value should be in force when we select the transtitions. --> @@ -1403,9 +1363,9 @@ </state> <state id="233pass"> <onentry> - <send event="test.233.done" /> - </onentry> - <transition event="test.233.done" target="234start" /> + <send event="test.233.done"/> + </onentry> + <transition event="test.233.done" target="234start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1416,7 +1376,6 @@ </onentry> </final> </state> - <!-- test that only finalize markup in the invoking state runs. the first invoked process will return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. Only the first finalize should execute. So when we get to s1 var2341 should have value 2 but @@ -1476,9 +1435,9 @@ </state> <state id="234pass"> <onentry> - <send event="test.234.done" /> - </onentry> - <transition event="test.234.done" target="235start" /> + <send event="test.234.done"/> + </onentry> + <transition event="test.234.done" target="235start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1489,7 +1448,6 @@ </onentry> </final> </state> - <!-- test that done.invoke.id event has the right id. the invoked child terminates immediately and should generate done.invoke.foo --> <state id="235start" initial="235s0"> @@ -1509,9 +1467,9 @@ </state> <state id="235pass"> <onentry> - <send event="test.235.done" /> - </onentry> - <transition event="test.235.done" target="237start" /> + <send event="test.235.done"/> + </onentry> + <transition event="test.235.done" target="237start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1522,7 +1480,6 @@ </onentry> </final> </state> - <!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by @@ -1558,9 +1515,9 @@ </state> <state id="237pass"> <onentry> - <send event="test.237.done" /> - </onentry> - <transition event="test.237.done" target="240start" /> + <send event="test.237.done"/> + </onentry> + <transition event="test.237.done" target="240start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1571,7 +1528,6 @@ </onentry> </final> </state> - <!-- test that datamodel values can be specified both by 'namelist' and by <param>. invoked child will return success if its Var2401 is set to 1, failure otherwise. This test will fail schema validation because of the multiple occurences of Var2401, but @@ -1633,9 +1589,9 @@ </state> <state id="240pass"> <onentry> - <send event="test.240.done" /> - </onentry> - <transition event="test.240.done" target="241start" /> + <send event="test.240.done"/> + </onentry> + <transition event="test.240.done" target="241start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1646,7 +1602,6 @@ </onentry> </final> </state> - <!-- The child process will return success ifits Var2411 is set to 1, failure otherwise. For this test we try passing in Var2411 by param and by namelist and check that we either get two successes or two failures. This test will fail schema validation due to multiple declarations of @@ -1733,9 +1688,9 @@ </state> <state id="241pass"> <onentry> - <send event="test.241.done" /> - </onentry> - <transition event="test.241.done" target="242start" /> + <send event="test.241.done"/> + </onentry> + <transition event="test.241.done" target="242start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1746,7 +1701,6 @@ </onentry> </final> </state> - <!-- test that markup specified by 'src' and by <content> is treated the same way. That means that either we get done.invoke in both cases or in neither case (in which case we timeout) --> <state id="242start" initial="242s0"> @@ -1793,9 +1747,9 @@ </state> <state id="242pass"> <onentry> - <send event="test.242.done" /> - </onentry> - <transition event="test.242.done" target="243start" /> + <send event="test.242.done"/> + </onentry> + <transition event="test.242.done" target="243start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1806,7 +1760,6 @@ </onentry> </final> </state> - <!-- test that datamodel values can be specified by param. test240sub1 will return success ifits Var2431 is set to 1, failure otherwise. --> <state id="243start" initial="243s0"> @@ -1838,9 +1791,9 @@ </state> <state id="243pass"> <onentry> - <send event="test.243.done" /> - </onentry> - <transition event="test.243.done" target="244start" /> + <send event="test.243.done"/> + </onentry> + <transition event="test.243.done" target="244start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1851,7 +1804,6 @@ </onentry> </final> </state> - <!-- test that datamodel values can be specified by namelist. invoked child will return success ifits Var2441 is set to 1, failure otherwise. This test will fail schema validation due to multiple occurrences of Var2441, @@ -1887,9 +1839,9 @@ </state> <state id="244pass"> <onentry> - <send event="test.244.done" /> - </onentry> - <transition event="test.244.done" target="245start" /> + <send event="test.244.done"/> + </onentry> + <transition event="test.244.done" target="245start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1900,7 +1852,6 @@ </onentry> </final> </state> - <!-- test that non-existent datamodel values are not set. Var2452 is not defined in invoked child's datamodel. It will will return success if its Var2452 remains unbound, failure otherwise. --> <state id="245start" initial="245s0"> @@ -1931,9 +1882,9 @@ </state> <state id="245pass"> <onentry> - <send event="test.245.done" /> - </onentry> - <transition event="test.245.done" target="247start" /> + <send event="test.245.done"/> + </onentry> + <transition event="test.245.done" target="247start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1944,7 +1895,6 @@ </onentry> </final> </state> - <!-- test that we get done.invoke. timeout indicates failure --> <state id="247start" initial="247s0"> <state id="247s0"> @@ -1963,9 +1913,9 @@ </state> <state id="247pass"> <onentry> - <send event="test.247.done" /> - </onentry> - <transition event="test.247.done" target="253start" /> + <send event="test.247.done"/> + </onentry> + <transition event="test.247.done" target="253start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -1976,7 +1926,6 @@ </onentry> </final> </state> - <!-- test that the scxml event processor is used in both directions. If child process uses the scxml event i/o processor to communicate with us, send it an event. It will send back success if this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow @@ -2042,9 +1991,9 @@ </state> <state id="253pass"> <onentry> - <send event="test.253.done" /> - </onentry> - <transition event="test.253.done" target="278start" /> + <send event="test.253.done"/> + </onentry> + <transition event="test.253.done" target="278start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2055,7 +2004,6 @@ </onentry> </final> </state> - <state id="278start" initial="278s0"> <!-- test that a variable can be accessed from a state that is outside its lexical scope --> <state id="278s0"> @@ -2069,9 +2017,9 @@ </state> <state id="278pass"> <onentry> - <send event="test.278.done" /> - </onentry> - <transition event="test.278.done" target="279start" /> + <send event="test.278.done"/> + </onentry> + <transition event="test.278.done" target="279start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2082,7 +2030,6 @@ </onentry> </final> </state> - <!-- testing that in case of early binding variables are assigned values at init time, before the state containing them is visited --> <state id="279start" initial="279s0"> @@ -2097,9 +2044,9 @@ </state> <state id="279pass"> <onentry> - <send event="test.279.done" /> - </onentry> - <transition event="test.279.done" target="286start" /> + <send event="test.279.done"/> + </onentry> + <transition event="test.279.done" target="286start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2110,7 +2057,6 @@ </onentry> </final> </state> - <!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case where no error is raised --> <state id="286start" initial="286s0"> @@ -2124,9 +2070,9 @@ </state> <state id="286pass"> <onentry> - <send event="test.286.done" /> - </onentry> - <transition event="test.286.done" target="287start" /> + <send event="test.286.done"/> + </onentry> + <transition event="test.286.done" target="287start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2137,7 +2083,6 @@ </onentry> </final> </state> - <!-- a simple test that a legal value may be assigned to a valid data model location --> <state id="287start" initial="287s0"> <datamodel> @@ -2152,9 +2097,9 @@ </state> <state id="287pass"> <onentry> - <send event="test.287.done" /> - </onentry> - <transition event="test.287.done" target="288start" /> + <send event="test.287.done"/> + </onentry> + <transition event="test.287.done" target="288start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2165,7 +2110,6 @@ </onentry> </final> </state> - <!-- a simple test that a legal value may be assigned to a valid data model location using child content --> <state id="288start" initial="288s0"> @@ -2181,9 +2125,9 @@ </state> <state id="288pass"> <onentry> - <send event="test.288.done" /> - </onentry> - <transition event="test.288.done" target="294start" /> + <send event="test.288.done"/> + </onentry> + <transition event="test.288.done" target="294start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2194,7 +2138,6 @@ </onentry> </final> </state> - <!-- test that a param inside donedata ends up in the data field of the done event and that content inside donedata sets the full value of the event.data field --> <state id="294start" initial="294s0"> @@ -2231,9 +2174,9 @@ </state> <state id="294pass"> <onentry> - <send event="test.294.done" /> - </onentry> - <transition event="test.294.done" target="298start" /> + <send event="test.294.done"/> + </onentry> + <transition event="test.294.done" target="298start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2244,7 +2187,6 @@ </onentry> </final> </state> - <!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> <state id="298start" initial="298s0"> <datamodel> @@ -2267,9 +2209,9 @@ </state> <state id="298pass"> <onentry> - <send event="test.298.done" /> - </onentry> - <transition event="test.298.done" target="303start" /> + <send event="test.298.done"/> + </onentry> + <transition event="test.298.done" target="303start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2280,7 +2222,6 @@ </onentry> </final> </state> - <!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the right point. This test is valid only for datamodels that support scripting --> <state id="303start" initial="303s0"> @@ -2297,9 +2238,9 @@ </state> <state id="303pass"> <onentry> - <send event="test.303.done" /> - </onentry> - <transition event="test.303.done" target="310start" /> + <send event="test.303.done"/> + </onentry> + <transition event="test.303.done" target="310start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2310,7 +2251,6 @@ </onentry> </final> </state> - <!-- simple test of the in() predicate --> <state id="310start" initial="310p"> <parallel id="310p"> @@ -2322,9 +2262,9 @@ </parallel> <state id="310pass"> <onentry> - <send event="test.310.done" /> - </onentry> - <transition event="test.310.done" target="311start" /> + <send event="test.310.done"/> + </onentry> + <transition event="test.310.done" target="311start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2335,12 +2275,10 @@ </onentry> </final> </state> - <!-- test that assignment to a non-existent location yields an error --> <state id="311start" initial="311s0"> <state id="311s0"> <onentry> - <assign location="foo.bar.baz " expr="1"/> </onentry> <transition event="error.execution" target="311pass"/> @@ -2348,9 +2286,9 @@ </state> <state id="311pass"> <onentry> - <send event="test.311.done" /> - </onentry> - <transition event="test.311.done" target="318start" /> + <send event="test.311.done"/> + </onentry> + <transition event="test.311.done" target="318start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2361,7 +2299,6 @@ </onentry> </final> </state> - <!-- test that _event stays bound during the onexit and entry into the next state --> <state id="318start" initial="318s0" name="machineName"> <datamodel> @@ -2384,9 +2321,9 @@ </state> <state id="318pass"> <onentry> - <send event="test.318.done" /> - </onentry> - <transition event="test.318.done" target="321start" /> + <send event="test.318.done"/> + </onentry> + <transition event="test.318.done" target="321start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2397,7 +2334,6 @@ </onentry> </final> </state> - <!-- test that _sessionid is bound on startup --> <state id="321start" initial="321s0" name="machineName"> <datamodel> @@ -2409,9 +2345,9 @@ </state> <state id="321pass"> <onentry> - <send event="test.321.done" /> - </onentry> - <transition event="test.321.done" target="322start" /> + <send event="test.321.done"/> + </onentry> + <transition event="test.321.done" target="322start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2422,7 +2358,6 @@ </onentry> </final> </state> - <!-- test that _sessionid remains bound to the same value throught the session. this means that it can't be assigned to --> <state id="322start" initial="322s0" name="machineName"> @@ -2447,9 +2382,9 @@ </state> <state id="322pass"> <onentry> - <send event="test.322.done" /> - </onentry> - <transition event="test.322.done" target="323start" /> + <send event="test.322.done"/> + </onentry> + <transition event="test.322.done" target="323start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2460,7 +2395,6 @@ </onentry> </final> </state> - <!-- test that _name is bound on startup --> <state id="323start" initial="323s0" name="machineName"> <datamodel> @@ -2472,9 +2406,9 @@ </state> <state id="323pass"> <onentry> - <send event="test.323.done" /> - </onentry> - <transition event="test.323.done" target="325start" /> + <send event="test.323.done"/> + </onentry> + <transition event="test.323.done" target="325start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2485,7 +2419,6 @@ </onentry> </final> </state> - <!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or how to test that the entries in it do represent I/O processors, since the set that each implementation supports may be different. Suggestions welcome --> @@ -2499,9 +2432,9 @@ </state> <state id="325pass"> <onentry> - <send event="test.325.done" /> - </onentry> - <transition event="test.325.done" target="326start" /> + <send event="test.325.done"/> + </onentry> + <transition event="test.325.done" target="326start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2512,7 +2445,6 @@ </onentry> </final> </state> - <!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> <state id="326start" initial="326s0" name="machineName"> <datamodel> @@ -2540,9 +2472,9 @@ </state> <state id="326pass"> <onentry> - <send event="test.326.done" /> - </onentry> - <transition event="test.326.done" target="329start" /> + <send event="test.326.done"/> + </onentry> + <transition event="test.326.done" target="329start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2553,7 +2485,6 @@ </onentry> </final> </state> - <!-- test that none of the system variables can be modified --> <state id="329start" initial="329s0" name="machineName"> <datamodel> @@ -2598,9 +2529,9 @@ </state> <state id="329pass"> <onentry> - <send event="test.329.done" /> - </onentry> - <transition event="test.329.done" target="330start" /> + <send event="test.329.done"/> + </onentry> + <transition event="test.329.done" target="330start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2611,7 +2542,6 @@ </onentry> </final> </state> - <!-- check that the required fields are present in both internal and external events --> <state id="330start" initial="330s0" name="machineName"> <state id="330s0"> @@ -2630,9 +2560,9 @@ </state> <state id="330pass"> <onentry> - <send event="test.330.done" /> - </onentry> - <transition event="test.330.done" target="331start" /> + <send event="test.330.done"/> + </onentry> + <transition event="test.330.done" target="331start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2643,7 +2573,6 @@ </onentry> </final> </state> - <state id="331start" initial="331s0" name="machineName"> <!-- test that _event.type is set correctly for internal, platform, and external events --> <datamodel> @@ -2693,9 +2622,9 @@ </state> <state id="331pass"> <onentry> - <send event="test.331.done" /> - </onentry> - <transition event="test.331.done" target="332start" /> + <send event="test.331.done"/> + </onentry> + <transition event="test.331.done" target="332start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2706,7 +2635,6 @@ </onentry> </final> </state> - <!-- test that sendid is present in error events triggered by send errors --> <state id="332start" initial="332s0" name="machineName"> <datamodel> @@ -2731,9 +2659,9 @@ </state> <state id="332pass"> <onentry> - <send event="test.332.done" /> - </onentry> - <transition event="test.332.done" target="333start" /> + <send event="test.332.done"/> + </onentry> + <transition event="test.332.done" target="333start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2744,7 +2672,6 @@ </onentry> </final> </state> - <!-- make sure sendid is blank in a non-error event --> <state id="333start" initial="333s0" name="machineName"> <state id="333s0"> @@ -2756,9 +2683,9 @@ </state> <state id="333pass"> <onentry> - <send event="test.333.done" /> - </onentry> - <transition event="test.333.done" target="335start" /> + <send event="test.333.done"/> + </onentry> + <transition event="test.333.done" target="335start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2769,7 +2696,6 @@ </onentry> </final> </state> - <!-- test that origin field is blank for internal events --> <state id="335start" initial="335s0" name="machineName"> <state id="335s0"> @@ -2781,9 +2707,9 @@ </state> <state id="335pass"> <onentry> - <send event="test.335.done" /> - </onentry> - <transition event="test.335.done" target="336start" /> + <send event="test.335.done"/> + </onentry> + <transition event="test.335.done" target="336start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2794,7 +2720,6 @@ </onentry> </final> </state> - <!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In this case it's the same session, so if we get bar we succeed --> <state id="336start" initial="336s0" name="machineName"> @@ -2816,9 +2741,9 @@ </state> <state id="336pass"> <onentry> - <send event="test.336.done" /> - </onentry> - <transition event="test.336.done" target="337start" /> + <send event="test.336.done"/> + </onentry> + <transition event="test.336.done" target="337start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2829,7 +2754,6 @@ </onentry> </final> </state> - <!-- test that origintype is blank on internal events --> <state id="337start" initial="337s0" name="machineName"> <state id="337s0"> @@ -2841,9 +2765,9 @@ </state> <state id="337pass"> <onentry> - <send event="test.337.done" /> - </onentry> - <transition event="test.337.done" target="338start" /> + <send event="test.337.done"/> + </onentry> + <transition event="test.337.done" target="338start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2854,7 +2778,6 @@ </onentry> </final> </state> - <!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the case where the invoke doesn't work correctly --> <state id="338start" initial="338s0"> @@ -2888,9 +2811,9 @@ </state> <state id="338pass"> <onentry> - <send event="test.338.done" /> - </onentry> - <transition event="test.338.done" target="339start" /> + <send event="test.338.done"/> + </onentry> + <transition event="test.338.done" target="339start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2901,7 +2824,6 @@ </onentry> </final> </state> - <!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> <state id="339start" initial="339s0" name="machineName"> <state id="339s0"> @@ -2913,9 +2835,9 @@ </state> <state id="339pass"> <onentry> - <send event="test.339.done" /> - </onentry> - <transition event="test.339.done" target="342start" /> + <send event="test.339.done"/> + </onentry> + <transition event="test.339.done" target="342start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2926,7 +2848,6 @@ </onentry> </final> </state> - <!-- test that eventexpr works and sets the name field of the resulting event --> <state id="342start" initial="342s0" name="machineName"> <datamodel> @@ -2948,9 +2869,9 @@ </state> <state id="342pass"> <onentry> - <send event="test.342.done" /> - </onentry> - <transition event="test.342.done" target="343start" /> + <send event="test.342.done"/> + </onentry> + <transition event="test.342.done" target="343start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -2961,7 +2882,6 @@ </onentry> </final> </state> - <!-- test that illegal <param> produces error.execution and empty event.data --> <state id="343start" initial="343s0"> <state id="343s0" initial="343s01"> @@ -2987,9 +2907,9 @@ </state> <state id="343pass"> <onentry> - <send event="test.343.done" /> - </onentry> - <transition event="test.343.done" target="346start" /> + <send event="test.343.done"/> + </onentry> + <transition event="test.343.done" target="346start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3000,7 +2920,6 @@ </onentry> </final> </state> - <!-- test that any attempt to change the value of a system variable causes error.execution to be raised. Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> @@ -3045,9 +2964,9 @@ </state> <state id="346pass"> <onentry> - <send event="test.346.done" /> - </onentry> - <transition event="test.346.done" target="348start" /> + <send event="test.346.done"/> + </onentry> + <transition event="test.346.done" target="348start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3058,7 +2977,6 @@ </onentry> </final> </state> - <state id="348start" initial="348s0"> <!-- test that event param of send sets the name of the event --> <state id="348s0"> @@ -3070,9 +2988,9 @@ </state> <state id="348pass"> <onentry> - <send event="test.348.done" /> - </onentry> - <transition event="test.348.done" target="349start" /> + <send event="test.348.done"/> + </onentry> + <transition event="test.348.done" target="349start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3083,7 +3001,6 @@ </onentry> </final> </state> - <!-- test that value in origin field can be used to send an event back to the sender --> <state id="349start" initial="349s0"> <datamodel> @@ -3107,9 +3024,9 @@ </state> <state id="349pass"> <onentry> - <send event="test.349.done" /> - </onentry> - <transition event="test.349.done" target="355start" /> + <send event="test.349.done"/> + </onentry> + <transition event="test.349.done" target="355start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3120,7 +3037,6 @@ </onentry> </final> </state> - <!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> <state id="355start"> <state id="355s0"> @@ -3131,9 +3047,9 @@ </state> <state id="355pass"> <onentry> - <send event="test.355.done" /> - </onentry> - <transition event="test.355.done" target="364start" /> + <send event="test.355.done"/> + </onentry> + <transition event="test.355.done" target="364start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3144,7 +3060,6 @@ </onentry> </final> </state> - <!-- test that default initial states are entered when a compound state is entered. First we test the 'initial' attribute, then the initial element, then default to the first child in document order. If we get to s01111 we succeed, if any other state, failure. --> @@ -3214,9 +3129,9 @@ </state> <state id="364pass"> <onentry> - <send event="test.364.done" /> - </onentry> - <transition event="test.364.done" target="372start" /> + <send event="test.364.done"/> + </onentry> + <transition event="test.364.done" target="372start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3227,7 +3142,6 @@ </onentry> </final> </state> - <!-- test that entering a final state generates done.state.parentid after executing the onentry elements. Var3721 should be set to 2 (but not 3) by the time the event is raised --> <state id="372start"> @@ -3251,9 +3165,9 @@ </state> <state id="372pass"> <onentry> - <send event="test.372.done" /> - </onentry> - <transition event="test.372.done" target="375start" /> + <send event="test.372.done"/> + </onentry> + <transition event="test.372.done" target="375start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3264,7 +3178,6 @@ </onentry> </final> </state> - <!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> <state id="375start"> <state id="375s0"> @@ -3283,9 +3196,9 @@ </state> <state id="375pass"> <onentry> - <send event="test.375.done" /> - </onentry> - <transition event="test.375.done" target="376start" /> + <send event="test.375.done"/> + </onentry> + <transition event="test.375.done" target="376start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3296,7 +3209,6 @@ </onentry> </final> </state> - <!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but the increment to var3761 should happen anyways --> <state id="376start"> @@ -3315,9 +3227,9 @@ </state> <state id="376pass"> <onentry> - <send event="test.376.done" /> - </onentry> - <transition event="test.376.done" target="377start" /> + <send event="test.376.done"/> + </onentry> + <transition event="test.376.done" target="377start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3328,7 +3240,6 @@ </onentry> </final> </state> - <!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> <state id="377start"> <state id="377s0"> @@ -3350,9 +3261,9 @@ </state> <state id="377pass"> <onentry> - <send event="test.377.done" /> - </onentry> - <transition event="test.377.done" target="378start" /> + <send event="test.377.done"/> + </onentry> + <transition event="test.377.done" target="378start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3363,7 +3274,6 @@ </onentry> </final> </state> - <!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but the increment to var3781 should happen anyways --> <state id="378start"> @@ -3385,9 +3295,9 @@ </state> <state id="378pass"> <onentry> - <send event="test.378.done" /> - </onentry> - <transition event="test.378.done" target="387start" /> + <send event="test.378.done"/> + </onentry> + <transition event="test.378.done" target="387start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3398,7 +3308,6 @@ </onentry> </final> </state> - <!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> @@ -3482,9 +3391,9 @@ </state> <state id="387pass"> <onentry> - <send event="test.387.done" /> - </onentry> - <transition event="test.387.done" target="388start" /> + <send event="test.387.done"/> + </onentry> + <transition event="test.387.done" target="388start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3495,7 +3404,6 @@ </onentry> </final> </state> - <!-- test that history states works correctly. The counter Var3881 counts how many times we have entered s0. The initial state is s012. We then transition to s1, which transitions to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition @@ -3560,9 +3468,9 @@ </state> <state id="388pass"> <onentry> - <send event="test.388.done" /> - </onentry> - <transition event="test.388.done" target="396start" /> + <send event="test.388.done"/> + </onentry> + <transition event="test.388.done" target="396start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3573,7 +3481,6 @@ </onentry> </final> </state> - <!-- test that the value in _event.name matches the event name used to match against transitions --> <state id="396start"> <state id="396s0"> @@ -3585,9 +3492,9 @@ </state> <state id="396pass"> <onentry> - <send event="test.396.done" /> - </onentry> - <transition event="test.396.done" target="399start" /> + <send event="test.396.done"/> + </onentry> + <transition event="test.396.done" target="399start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3598,7 +3505,6 @@ </onentry> </final> </state> - <!-- test that the event name matching works correctly, including prefix matching and the fact that the event attribute of transition may contain multiple event designators. --> <state id="399start" initial="399s0"> @@ -3654,9 +3560,9 @@ </state> <state id="399pass"> <onentry> - <send event="test.399.done" /> - </onentry> - <transition event="test.399.done" target="401start" /> + <send event="test.399.done"/> + </onentry> + <transition event="test.399.done" target="401start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3667,7 +3573,6 @@ </onentry> </final> </state> - <!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform and operation that raises an error. Then check that the error event is processed first, even though it was raised second --> @@ -3683,9 +3588,9 @@ </state> <state id="401pass"> <onentry> - <send event="test.401.done" /> - </onentry> - <transition event="test.401.done" target="402start" /> + <send event="test.401.done"/> + </onentry> + <transition event="test.401.done" target="402start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3696,14 +3601,12 @@ </onentry> </final> </state> - <!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they are pulled off the internal queue in order, and that prefix matching works on them. --> <state id="402start" initial="402s0"> <state id="402s0" initial="402s01"> <onentry> <!-- catch the failure case --> - </onentry> <transition event="timeout" target="402fail"/> <state id="402s01"> @@ -3729,9 +3632,9 @@ </state> <state id="402pass"> <onentry> - <send event="test.402.done" /> - </onentry> - <transition event="test.402.done" target="404start" /> + <send event="test.402.done"/> + </onentry> + <transition event="test.402.done" target="404start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3742,7 +3645,6 @@ </onentry> </final> </state> - <!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties before the executable content in the transitions. event1, event2, event3, event4 should be raised in that order when s01p is exited --> @@ -3789,9 +3691,9 @@ </state> <state id="404pass"> <onentry> - <send event="test.404.done" /> - </onentry> - <transition event="test.404.done" target="405start" /> + <send event="test.404.done"/> + </onentry> + <transition event="test.404.done" target="405start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3802,7 +3704,6 @@ </onentry> </final> </state> - <!-- test that the executable content in the transitions is executed in document order after the states are exited. event1, event2, event3, event4 should be raised in that order when the state machine is entered --> @@ -3859,9 +3760,9 @@ <!-- end s01 --> <state id="405pass"> <onentry> - <send event="test.405.done" /> - </onentry> - <transition event="test.405.done" target="406start" /> + <send event="test.405.done"/> + </onentry> + <transition event="test.405.done" target="406start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3872,7 +3773,6 @@ </onentry> </final> </state> - <!-- Test that states are entered in entry order (parents before children with document order used to break ties) after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that order when the transition in s01 is taken --> @@ -3923,9 +3823,9 @@ <!-- end s0 --> <state id="406pass"> <onentry> - <send event="test.406.done" /> - </onentry> - <transition event="test.406.done" target="407start" /> + <send event="test.406.done"/> + </onentry> + <transition event="test.406.done" target="407start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3936,7 +3836,6 @@ </onentry> </final> </state> - <!-- a simple test that onexit handlers work. var4071 should be incremented when we leave s0 --> <state id="407start" initial="407s0"> <datamodel> @@ -3954,9 +3853,9 @@ </state> <state id="407pass"> <onentry> - <send event="test.407.done" /> - </onentry> - <transition event="test.407.done" target="411start" /> + <send event="test.407.done"/> + </onentry> + <transition event="test.407.done" target="411start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -3967,7 +3866,6 @@ </onentry> </final> </state> - <!-- we test that states are added to the active states list as they are entered and before onentry handlers are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or @@ -3975,7 +3873,6 @@ <state id="411start" initial="411s0"> <state id="411s0" initial="411s01"> <onentry> - <if cond="In('411s01')"> <raise event="event1"/> </if> @@ -3994,9 +3891,9 @@ <!-- end s0 --> <state id="411pass"> <onentry> - <send event="test.411.done" /> - </onentry> - <transition event="test.411.done" target="412start" /> + <send event="test.411.done"/> + </onentry> + <transition event="test.411.done" target="412start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4007,7 +3904,6 @@ </onentry> </final> </state> - <!-- test that executable content in the <initial> transition executes after the onentry handler on the state and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> <state id="412start" initial="412s0"> @@ -4050,9 +3946,9 @@ <!-- end s0 --> <state id="412pass"> <onentry> - <send event="test.412.done" /> - </onentry> - <transition event="test.412.done" target="413start" /> + <send event="test.412.done"/> + </onentry> + <transition event="test.412.done" target="413start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4063,7 +3959,6 @@ </onentry> </final> </state> - <!-- test that the state machine is put into the configuration specified by the initial element, without regard to any other defaults. we should start off in s2p111 and s2p122. the atomic states we should not enter all have immediate transitions to failure in them --> @@ -4098,9 +3993,9 @@ <!-- end s2 --> <state id="413pass"> <onentry> - <send event="test.413.done" /> - </onentry> - <transition event="test.413.done" target="416start" /> + <send event="test.413.done"/> + </onentry> + <transition event="test.413.done" target="416start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4111,7 +4006,6 @@ </onentry> </final> </state> - <!-- test that the done.state.id gets generated when we enter the final state of a compound state --> <state id="416start" initial="416s1"> <state id="416s1" initial="416s11"> @@ -4129,9 +4023,9 @@ </state> <state id="416pass"> <onentry> - <send event="test.416.done" /> - </onentry> - <transition event="test.416.done" target="417start" /> + <send event="test.416.done"/> + </onentry> + <transition event="test.416.done" target="417start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4142,7 +4036,6 @@ </onentry> </final> </state> - <!-- test that we get the done.state.id event when all of a parallel elements children enter final states. --> <state id="417start" initial="417s1"> @@ -4169,9 +4062,9 @@ </state> <state id="417pass"> <onentry> - <send event="test.417.done" /> - </onentry> - <transition event="test.417.done" target="419start" /> + <send event="test.417.done"/> + </onentry> + <transition event="test.417.done" target="419start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4182,7 +4075,6 @@ </onentry> </final> </state> - <!-- test that eventless transitions take precedence over event-driven ones --> <state id="419start" initial="419s1"> <state id="419s1"> @@ -4195,9 +4087,9 @@ </state> <state id="419pass"> <onentry> - <send event="test.419.done" /> - </onentry> - <transition event="test.419.done" target="421start" /> + <send event="test.419.done"/> + </onentry> + <transition event="test.419.done" target="421start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4208,7 +4100,6 @@ </onentry> </final> </state> - <!-- test that internal events take priority over external ones, and that the processor keeps pulling off internal events until it finds one that triggers a transition --> <state id="421start" initial="421s1"> @@ -4230,9 +4121,9 @@ </state> <state id="421pass"> <onentry> - <send event="test.421.done" /> - </onentry> - <transition event="test.421.done" target="423start" /> + <send event="test.421.done"/> + </onentry> + <transition event="test.421.done" target="423start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4243,7 +4134,6 @@ </onentry> </final> </state> - <!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> <state id="423start" initial="423s0"> <state id="423s0"> @@ -4263,9 +4153,9 @@ </state> <state id="423pass"> <onentry> - <send event="test.423.done" /> - </onentry> - <transition event="test.423.done" target="444start" /> + <send event="test.423.done"/> + </onentry> + <transition event="test.423.done" target="444start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4276,7 +4166,6 @@ </onentry> </final> </state> - <!-- test that <data> creates a new ecmascript variable. --> <state id="444start"> <datamodel> @@ -4289,9 +4178,9 @@ </state> <state id="444pass"> <onentry> - <send event="test.444.done" /> - </onentry> - <transition event="test.444.done" target="445start" /> + <send event="test.444.done"/> + </onentry> + <transition event="test.444.done" target="445start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4302,7 +4191,6 @@ </onentry> </final> </state> - <!-- test that ecmascript objects defined by <data> have value undefined if <data> does not assign a value --> <state id="445start"> <datamodel> @@ -4314,9 +4202,9 @@ </state> <state id="445pass"> <onentry> - <send event="test.445.done" /> - </onentry> - <transition event="test.445.done" target="448start" /> + <send event="test.445.done"/> + </onentry> + <transition event="test.445.done" target="448start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4327,7 +4215,6 @@ </onentry> </final> </state> - <!-- test that all ecmascript objects are placed in a single global scope --> <state id="448start"> <state id="448s0"> @@ -4356,9 +4243,9 @@ </state> <state id="448pass"> <onentry> - <send event="test.448.done" /> - </onentry> - <transition event="test.448.done" target="449start" /> + <send event="test.448.done"/> + </onentry> + <transition event="test.448.done" target="449start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4369,7 +4256,6 @@ </onentry> </final> </state> - <!-- test that ecmascript objects are converted to booleans inside cond --> <state id="449start"> <state id="449s0"> @@ -4378,9 +4264,9 @@ </state> <state id="449pass"> <onentry> - <send event="test.449.done" /> - </onentry> - <transition event="test.449.done" target="451start" /> + <send event="test.449.done"/> + </onentry> + <transition event="test.449.done" target="451start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4391,7 +4277,6 @@ </onentry> </final> </state> - <!-- simple test of the in() predicate --> <state id="451start" initial="451p"> <parallel id="451p"> @@ -4403,9 +4288,9 @@ </parallel> <state id="451pass"> <onentry> - <send event="test.451.done" /> - </onentry> - <transition event="test.451.done" target="453start" /> + <send event="test.451.done"/> + </onentry> + <transition event="test.451.done" target="453start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4416,7 +4301,6 @@ </onentry> </final> </state> - <!-- test that we can use any ecmascript expression as a value expression. In this case, we just test that we can assign a function to a variable and then call it. --> @@ -4434,9 +4318,9 @@ </state> <state id="453pass"> <onentry> - <send event="test.453.done" /> - </onentry> - <transition event="test.453.done" target="456start" /> + <send event="test.453.done"/> + </onentry> + <transition event="test.453.done" target="456start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4447,7 +4331,6 @@ </onentry> </final> </state> - <!-- we can't test that _any_ ecmascript is valid inside <script>, so we just run a simple one and check that it can update the data model. --> <state id="456start" initial="456s0"> @@ -4465,9 +4348,9 @@ </state> <state id="456pass"> <onentry> - <send event="test.456.done" /> - </onentry> - <transition event="test.456.done" target="457start" /> + <send event="test.456.done"/> + </onentry> + <transition event="test.456.done" target="457start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4478,7 +4361,6 @@ </onentry> </final> </state> - <!-- test that an the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. the legal values for the 'item' attribute on foreach are legal ECMAScript variable names.. --> <state id="457start" initial="457s0"> @@ -4530,9 +4412,9 @@ </state> <state id="457pass"> <onentry> - <send event="test.457.done" /> - </onentry> - <transition event="test.457.done" target="459start" /> + <send event="test.457.done"/> + </onentry> + <transition event="test.457.done" target="459start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4543,7 +4425,6 @@ </onentry> </final> </state> - <!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current value with the previous value, which is stored in var4591. The current value should always be larger. If it ever isn't, set Var4594 to 0, indicating failure. Also check that the final value of the index @@ -4577,9 +4458,9 @@ </state> <state id="459pass"> <onentry> - <send event="test.459.done" /> - </onentry> - <transition event="test.459.done" target="460start" /> + <send event="test.459.done"/> + </onentry> + <transition event="test.459.done" target="460start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4590,7 +4471,6 @@ </onentry> </final> </state> - <!-- test that <foreach> does a shallow copy, so that modifying the array does not change the iteration behavior. --> <state id="460start"> @@ -4611,9 +4491,9 @@ </state> <state id="460pass"> <onentry> - <send event="test.460.done" /> - </onentry> - <transition event="test.460.done" target="495start" /> + <send event="test.460.done"/> + </onentry> + <transition event="test.460.done" target="495start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4624,7 +4504,6 @@ </onentry> </final> </state> - <!-- test that the scxml event i/o processor puts events in the correct queues.--> <state id="495start" initial="495s0"> <state id="495s0"> @@ -4643,9 +4522,9 @@ </state> <state id="495pass"> <onentry> - <send event="test.495.done" /> - </onentry> - <transition event="test.495.done" target="496start" /> + <send event="test.495.done"/> + </onentry> + <transition event="test.495.done" target="496start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4656,7 +4535,6 @@ </onentry> </final> </state> - <state id="496start" initial="496s0"> <state id="496s0"> <onentry> @@ -4668,9 +4546,9 @@ </state> <state id="496pass"> <onentry> - <send event="test.496.done" /> - </onentry> - <transition event="test.496.done" target="500start" /> + <send event="test.496.done"/> + </onentry> + <transition event="test.496.done" target="500start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4681,7 +4559,6 @@ </onentry> </final> </state> - <!-- test that location field is found inside entry for SCXML Event I/O processor --> <state id="500start" initial="500s0"> <datamodel> @@ -4693,9 +4570,9 @@ </state> <state id="500pass"> <onentry> - <send event="test.500.done" /> - </onentry> - <transition event="test.500.done" target="501start" /> + <send event="test.500.done"/> + </onentry> + <transition event="test.500.done" target="501start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4706,7 +4583,6 @@ </onentry> </final> </state> - <!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> <state id="501start" initial="501s0"> <datamodel> @@ -4715,16 +4591,15 @@ <state id="501s0"> <onentry> <send targetexpr="Var5011" event="foo"/> - </onentry> <transition event="foo" target="501pass"/> <transition event="*" target="501fail"/> </state> <state id="501pass"> <onentry> - <send event="test.501.done" /> - </onentry> - <transition event="test.501.done" target="503start" /> + <send event="test.501.done"/> + </onentry> + <transition event="test.501.done" target="503start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4735,7 +4610,6 @@ </onentry> </final> </state> - <!-- test that a targetless transition does not exit and reenter its source state --> <state id="503start" initial="503s1"> <datamodel> @@ -4769,9 +4643,9 @@ </state> <state id="503pass"> <onentry> - <send event="test.503.done" /> - </onentry> - <transition event="test.503.done" target="504start" /> + <send event="test.503.done"/> + </onentry> + <transition event="test.503.done" target="504start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4782,7 +4656,6 @@ </onentry> </final> </state> - <!-- test that an external transition exits all states up the the LCCA --> <state id="504start" initial="504s1"> <datamodel> @@ -4852,9 +4725,9 @@ </state> <state id="504pass"> <onentry> - <send event="test.504.done" /> - </onentry> - <transition event="test.504.done" target="505start" /> + <send event="test.504.done"/> + </onentry> + <transition event="test.504.done" target="505start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4865,7 +4738,6 @@ </onentry> </final> </state> - <!-- test that an internal transition does not exit its source state --> <state id="505start" initial="505s1"> <datamodel> @@ -4908,9 +4780,9 @@ </state> <state id="505pass"> <onentry> - <send event="test.505.done" /> - </onentry> - <transition event="test.505.done" target="506start" /> + <send event="test.505.done"/> + </onentry> + <transition event="test.505.done" target="506start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4921,7 +4793,6 @@ </onentry> </final> </state> - <!-- test that an internal transition whose targets are not proper descendants of its source state behaves like an external transition --> <state id="506start" initial="506s1"> @@ -4968,9 +4839,9 @@ </state> <state id="506pass"> <onentry> - <send event="test.506.done" /> - </onentry> - <transition event="test.506.done" target="509start" /> + <send event="test.506.done"/> + </onentry> + <transition event="test.506.done" target="509start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -4981,13 +4852,11 @@ </onentry> </final> </state> - <!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages at the accessURI --> <state id="509start" initial="509s0"> <state id="509s0"> <onentry> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> </onentry> <!-- if the event was send by http and we get it, we succeed --> @@ -4996,9 +4865,9 @@ </state> <state id="509pass"> <onentry> - <send event="test.509.done" /> - </onentry> - <transition event="test.509.done" target="510start" /> + <send event="test.509.done"/> + </onentry> + <transition event="test.509.done" target="510start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5009,12 +4878,10 @@ </onentry> </final> </state> - <!-- test that Basic HTTP messages go into external queue. --> <state id="510start" initial="510s0"> <state id="510s0"> <onentry> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> <!-- this creates an internal event --> <raise event="internal"/> @@ -5029,9 +4896,9 @@ </state> <state id="510pass"> <onentry> - <send event="test.510.done" /> - </onentry> - <transition event="test.510.done" target="518start" /> + <send event="test.510.done"/> + </onentry> + <transition event="test.510.done" target="518start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5042,7 +4909,6 @@ </onentry> </final> </state> - <!-- test that that namelist values get encoded as POST parameters. --> <state id="518start" initial="518s0"> <datamodel> @@ -5050,7 +4916,6 @@ </datamodel> <state id="518s0"> <onentry> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" namelist="Var5181" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> </onentry> <transition event="test" cond="_event.raw.search(/Var5181=2/) !== -1" target="518pass"/> @@ -5058,9 +4923,9 @@ </state> <state id="518pass"> <onentry> - <send event="test.518.done" /> - </onentry> - <transition event="test.518.done" target="519start" /> + <send event="test.518.done"/> + </onentry> + <transition event="test.518.done" target="519start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5071,12 +4936,10 @@ </onentry> </final> </state> - <!-- test that that <param> values get encoded as POST parameters. . --> <state id="519start" initial="519s0"> <state id="519s0"> <onentry> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <param name="param1" expr="1"/> </send> @@ -5087,9 +4950,9 @@ </state> <state id="519pass"> <onentry> - <send event="test.519.done" /> - </onentry> - <transition event="test.519.done" target="520start" /> + <send event="test.519.done"/> + </onentry> + <transition event="test.519.done" target="520start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5100,12 +4963,10 @@ </onentry> </final> </state> - <!-- test that that <content> gets sent as the body of the message. --> <state id="520start" initial="520s0"> <state id="520s0"> <onentry> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <content>this is some content</content> </send> @@ -5118,9 +4979,9 @@ </state> <state id="520pass"> <onentry> - <send event="test.520.done" /> - </onentry> - <transition event="test.520.done" target="521start" /> + <send event="test.520.done"/> + </onentry> + <transition event="test.520.done" target="521start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5131,7 +4992,6 @@ </onentry> </final> </state> - <!-- we test that the processor raises error.communication if it cannot dispatch the event. (To create an undispatchable event, we choose a non-existent session as target). If it raises the error event, we succeed. Otherwise we eventually timeout and fail. --> @@ -5149,9 +5009,9 @@ </state> <state id="521pass"> <onentry> - <send event="test.521.done" /> - </onentry> - <transition event="test.521.done" target="522start" /> + <send event="test.521.done"/> + </onentry> + <transition event="test.521.done" target="522start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5162,13 +5022,11 @@ </onentry> </final> </state> - <!-- test that location field the entry for Basic HTTP Event I/O processor can be used to send a message to the processor --> <state id="522start" initial="522s0"> <state id="522s0"> <onentry> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors['basichttp']['location']"/> </onentry> <!-- the event we receive should be called 'test', but that's not actually @@ -5180,9 +5038,9 @@ </state> <state id="522pass"> <onentry> - <send event="test.522.done" /> - </onentry> - <transition event="test.522.done" target="525start" /> + <send event="test.522.done"/> + </onentry> + <transition event="test.522.done" target="525start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5193,7 +5051,6 @@ </onentry> </final> </state> - <!-- test that <foreach> does a shallow copy, so that modifying the array does not change the iteration behavior. --> <state id="525start"> @@ -5216,9 +5073,9 @@ </state> <state id="525pass"> <onentry> - <send event="test.525.done" /> - </onentry> - <transition event="test.525.done" target="527start" /> + <send event="test.525.done"/> + </onentry> + <transition event="test.525.done" target="527start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5229,7 +5086,6 @@ </onentry> </final> </state> - <!-- simple test that 'expr' works with <content> --> <state id="527start" initial="527s0"> <state id="527s0" initial="527s01"> @@ -5248,9 +5104,9 @@ </state> <state id="527pass"> <onentry> - <send event="test.527.done" /> - </onentry> - <transition event="test.527.done" target="529start" /> + <send event="test.527.done"/> + </onentry> + <transition event="test.527.done" target="529start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5261,7 +5117,6 @@ </onentry> </final> </state> - <!-- simple test that children workn with <content> --> <state id="529start" initial="529s0"> <state id="529s0" initial="529s01"> @@ -5280,9 +5135,9 @@ </state> <state id="529pass"> <onentry> - <send event="test.529.done" /> - </onentry> - <transition event="test.529.done" target="530start" /> + <send event="test.529.done"/> + </onentry> + <transition event="test.529.done" target="530start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5293,7 +5148,6 @@ </onentry> </final> </state> - <!-- test that <content> child is evaluated when <invoke> is. Var5301 is initialized with an integer value, then set to an scxml script in the onentry to s0. If <content> is evaluated at the right time, we should get invoke.done, otherwise an error --> @@ -5308,7 +5162,6 @@ <final/> </scxml> </assign> - </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content expr="Var5301"/> @@ -5318,9 +5171,9 @@ </state> <state id="530pass"> <onentry> - <send event="test.530.done" /> - </onentry> - <transition event="test.530.done" target="531start" /> + <send event="test.530.done"/> + </onentry> + <transition event="test.530.done" target="531start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5331,13 +5184,11 @@ </onentry> </final> </state> - <!-- test that that the value of the <param> _scxmleventname gets used as the name of the raised event. --> <state id="531start" initial="531s0"> <state id="531s0"> <onentry> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <param name="_scxmleventname" expr="'test'"/> </send> @@ -5348,9 +5199,9 @@ </state> <state id="531pass"> <onentry> - <send event="test.531.done" /> - </onentry> - <transition event="test.531.done" target="532start" /> + <send event="test.531.done"/> + </onentry> + <transition event="test.531.done" target="532start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5361,13 +5212,11 @@ </onentry> </final> </state> - <!-- test that that if _scxmleventname is not present, the name of the HTTP method is used as the name of the resulting event. --> <state id="532start" initial="532s0"> <state id="532s0"> <onentry> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <!-- this content will be ignored, but it's here to make sure we have a message body --> <content>some content</content> @@ -5378,9 +5227,9 @@ </state> <state id="532pass"> <onentry> - <send event="test.532.done" /> - </onentry> - <transition event="test.532.done" target="533start" /> + <send event="test.532.done"/> + </onentry> + <transition event="test.532.done" target="533start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5391,7 +5240,6 @@ </onentry> </final> </state> - <!-- test that an internal transition whose source state is not compound does exit its source state --> <state id="533start" initial="533s1"> <datamodel> @@ -5449,9 +5297,9 @@ </state> <state id="533pass"> <onentry> - <send event="test.533.done" /> - </onentry> - <transition event="test.533.done" target="534start" /> + <send event="test.533.done"/> + </onentry> + <transition event="test.533.done" target="534start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5462,12 +5310,10 @@ </onentry> </final> </state> - <!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> <state id="534start" initial="534s0"> <state id="534s0"> <onentry> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> </send> </onentry> @@ -5477,9 +5323,9 @@ </state> <state id="534pass"> <onentry> - <send event="test.534.done" /> - </onentry> - <transition event="test.534.done" target="550start" /> + <send event="test.534.done"/> + </onentry> + <transition event="test.534.done" target="550start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5490,7 +5336,6 @@ </onentry> </final> </state> - <!-- test that expr can be used to assign a value to a var. This test uses early binding --> <state id="550start" initial="550s0" binding="early"> <state id="550s0"> @@ -5504,9 +5349,9 @@ </state> <state id="550pass"> <onentry> - <send event="test.550.done" /> - </onentry> - <transition event="test.550.done" target="551start" /> + <send event="test.550.done"/> + </onentry> + <transition event="test.550.done" target="551start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5517,7 +5362,6 @@ </onentry> </final> </state> - <!-- test that inline content can be used to assign a value to a var. --> <state id="551start" initial="551s0" binding="early"> <state id="551s0"> @@ -5533,9 +5377,9 @@ </state> <state id="551pass"> <onentry> - <send event="test.551.done" /> - </onentry> - <transition event="test.551.done" target="554start" /> + <send event="test.551.done"/> + </onentry> + <transition event="test.551.done" target="554start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5546,7 +5390,6 @@ </onentry> </final> </state> - <!-- test that if the evaluation of <invoke>'s args causes an error, the invocation is cancelled. In this test, that means that we don't get done.invoke before the timer goes off. --> @@ -5568,9 +5411,9 @@ </state> <state id="554pass"> <onentry> - <send event="test.554.done" /> - </onentry> - <transition event="test.554.done" target="560start" /> + <send event="test.554.done"/> + </onentry> + <transition event="test.554.done" target="560start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5581,7 +5424,6 @@ </onentry> </final> </state> - <!-- in the ECMA data model, test that processor creates correct structure in _event.data when receiving KVPs in an event --> <state id="560start" initial="560s0"> @@ -5596,9 +5438,9 @@ </state> <state id="560pass"> <onentry> - <send event="test.560.done" /> - </onentry> - <transition event="test.560.done" target="561start" /> + <send event="test.560.done"/> + </onentry> + <transition event="test.560.done" target="561start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5609,7 +5451,6 @@ </onentry> </final> </state> - <!-- in the ECMA data model, test that processor creates an ECMAScript DOM object _event.data when receiving XML in an event --> <state id="561start" initial="561s0"> @@ -5629,9 +5470,9 @@ </state> <state id="561pass"> <onentry> - <send event="test.561.done" /> - </onentry> - <transition event="test.561.done" target="562start" /> + <send event="test.561.done"/> + </onentry> + <transition event="test.561.done" target="562start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5642,7 +5483,6 @@ </onentry> </final> </state> - <!-- in the ECMA data model, test that processor creates space normalized string in _event.data when receiving anything other than KVPs or XML in an event --> <state id="562start" initial="562s0"> @@ -5660,9 +5500,9 @@ </state> <state id="562pass"> <onentry> - <send event="test.562.done" /> - </onentry> - <transition event="test.562.done" target="567start" /> + <send event="test.562.done"/> + </onentry> + <transition event="test.562.done" target="567start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5673,7 +5513,6 @@ </onentry> </final> </state> - <!-- test that that any content in the message other than _scxmleventname is used to populate _event.data. --> <state id="567start" initial="567s0"> @@ -5682,7 +5521,6 @@ </datamodel> <state id="567s0"> <onentry> - <!-- in this case, 'test' will be placed in _scxmleventname. The <param> should be used to populate _event.data --> <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> @@ -5701,9 +5539,9 @@ </state> <state id="567pass"> <onentry> - <send event="test.567.done" /> - </onentry> - <transition event="test.567.done" target="569start" /> + <send event="test.567.done"/> + </onentry> + <transition event="test.567.done" target="569start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5714,7 +5552,6 @@ </onentry> </final> </state> - <!-- test that location field is found inside entry for SCXML Event I/O processor in the ECMAScript data model. The tests for the relevant event i/o processors will test that it can be used to send events. --> @@ -5725,9 +5562,9 @@ </state> <state id="569pass"> <onentry> - <send event="test.569.done" /> - </onentry> - <transition event="test.569.done" target="570start" /> + <send event="test.569.done"/> + </onentry> + <transition event="test.569.done" target="570start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5738,7 +5575,6 @@ </onentry> </final> </state> - <!-- test that we generate done.state.id when all a parallel state's children are in final states --> <state id="570start" initial="570p0"> <datamodel> @@ -5746,7 +5582,6 @@ </datamodel> <parallel id="570p0"> <onentry> - <raise event="e1"/> <raise event="e2"/> </onentry> @@ -5777,9 +5612,9 @@ </state> <state id="570pass"> <onentry> - <send event="test.570.done" /> - </onentry> - <transition event="test.570.done" target="576start" /> + <send event="test.570.done"/> + </onentry> + <transition event="test.570.done" target="576start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5790,7 +5625,6 @@ </onentry> </final> </state> - <!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and test that both are entered. --> <state id="576start" initial="576s11p112 576s11p122"> @@ -5824,9 +5658,9 @@ </state> <state id="576pass"> <onentry> - <send event="test.576.done" /> - </onentry> - <transition event="test.576.done" target="577start" /> + <send event="test.576.done"/> + </onentry> + <transition event="test.576.done" target="577start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5837,7 +5671,6 @@ </onentry> </final> </state> - <!-- test that that <send> without target in basichttp event i/o processor causes error.communication to get added to internal queue . --> <state id="577start" initial="577s0"> @@ -5853,9 +5686,9 @@ </state> <state id="577pass"> <onentry> - <send event="test.577.done" /> - </onentry> - <transition event="test.577.done" target="578start" /> + <send event="test.577.done"/> + </onentry> + <transition event="test.577.done" target="578start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5866,7 +5699,6 @@ </onentry> </final> </state> - <!-- in the ECMA data model, test that processor creates an ECMAScript object _event.data when receiving JSON in an event --> <state id="578start" initial="578s0"> @@ -5881,9 +5713,9 @@ </state> <state id="578pass"> <onentry> - <send event="test.578.done" /> - </onentry> - <transition event="test.578.done" target="579start" /> + <send event="test.578.done"/> + </onentry> + <transition event="test.578.done" target="579start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5894,7 +5726,6 @@ </onentry> </final> </state> - <!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, the executable content inside the <initial> transition. However the Processor MUST execute this content only if there is no stored history. Once the history state's @@ -5945,9 +5776,9 @@ </state> <state id="579pass"> <onentry> - <send event="test.579.done" /> - </onentry> - <transition event="test.579.done" target="580start" /> + <send event="test.579.done"/> + </onentry> + <transition event="test.579.done" target="580start"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -5958,7 +5789,6 @@ </onentry> </final> </state> - <!-- test that a history state never ends up part of the configuration --> <state id="580start" initial="580p1"> <datamodel> @@ -5994,9 +5824,9 @@ </parallel> <state id="580pass"> <onentry> - <send event="test.580.done" /> - </onentry> - <transition event="test.580.done" target="pass" /> + <send event="test.580.done"/> + </onentry> + <transition event="test.580.done" target="pass"/> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> @@ -6007,6 +5837,5 @@ </onentry> </final> </state> - - <final id="pass" /> + <final id="pass"/> </scxml> diff --git a/test/w3c/confEcma.xsl b/test/w3c/confEcma.xsl index 705785d..fa76485 100644 --- a/test/w3c/confEcma.xsl +++ b/test/w3c/confEcma.xsl @@ -511,9 +511,9 @@ is the second argument --> </xsl:template> <!-- returns true if all the required fields of _event are bound --> -<xsl:template match="//@conf:eventFieldsAreBound"> - <xsl:attribute name="cond">'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'invokeid' && 'data' in _event</xsl:attribute> -</xsl:template> + <xsl:template match="//@conf:eventFieldsAreBound"> + <xsl:attribute name="cond">'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'origintype' in _event && 'invokeid' in _event && 'data' in _event</xsl:attribute> + </xsl:template> <!-- returns true if _event.data contains the specified item --> <xsl:template match="//@conf:eventDataHasField"> diff --git a/test/w3c/confLua.xsl b/test/w3c/confLua.xsl new file mode 100644 index 0000000..d0a15b1 --- /dev/null +++ b/test/w3c/confLua.xsl @@ -0,0 +1,785 @@ +<?xml version="1.0"?> +<!-- Copyright 1998-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. See http://www.w3.org/Consortium/Legal/. --> +<!-- Stefan Radomski 2014 --> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:conf="http://www.w3.org/2005/scxml-conformance" + xmlns:scxml="http://www.w3.org/2005/07/scxml" + version="2.0"> + + + + +<!-- Copy everything that doesn't match other rules --> +<xsl:template match="/ | @* | node()"> + <xsl:copy> + <xsl:apply-templates select="@* | node()"/> + </xsl:copy> +</xsl:template> + +<!-- Success criteria --> + +<xsl:template match="//@conf:targetpass"> + <xsl:attribute name="target">pass</xsl:attribute> +</xsl:template> + +<xsl:template match="conf:pass"> + <final xmlns="http://www.w3.org/2005/07/scxml" id="pass"> + <onentry> + <log label="Outcome" expr="'pass'"/> + </onentry> + </final> +</xsl:template> + +<!-- Failure criteria --> + +<xsl:template match="//@conf:targetfail"> + <xsl:attribute name="target">fail</xsl:attribute> +</xsl:template> + +<xsl:template match="conf:fail"> + <final xmlns="http://www.w3.org/2005/07/scxml" id="fail"> + <onentry> + <log label="Outcome" expr="'fail'"/> + </onentry> +</final> +</xsl:template> + +<!-- datamodel --> +<xsl:template match="//@conf:datamodel"> + <xsl:attribute name="datamodel">lua</xsl:attribute> +</xsl:template> + + +<!-- creates id for <data> element, etc. --> +<!-- xsl:template match="//scxml:data[conf:array123]" --> +<xsl:template match="//@conf:id[../@conf:quoteExpr[.='0s']]" priority="6"> + <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:id[../@conf:quoteExpr]" priority="5"> + <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:id[../@conf:systemVarExpr]" priority="5"> + <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:id[//@conf:idQuoteVal='1=internal']" priority="5"> + <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:id"> + <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- creates name for <param>, etc. --> +<xsl:template match="//@conf:name"> + <xsl:attribute name="name">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + + +<!-- creates location for <assign>, etc. --> +<xsl:template match="//@conf:location"> + <xsl:attribute name="location">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- names an invalid location for <assign>, etc. --> +<xsl:template match="//@conf:invalidLocation"> + <xsl:attribute name="location">foo.bar.baz </xsl:attribute> +</xsl:template> + +<!-- uses system var as location for <assign>, etc. --> +<xsl:template match="//@conf:systemVarLocation"> + <xsl:attribute name="location"><xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- expr is evaluated --> +<xsl:template match="//@conf:expr"> + <xsl:attribute name="expr"><xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- targetexpr is the corresponding ID --> +<xsl:template match="//@conf:targetVar"> + <xsl:attribute name="targetexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- expr is quoted --> +<xsl:template match="//@conf:quoteExpr[.='1s']" priority="5"> + <xsl:attribute name="expr">1000</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:quoteExpr[.='0s']" priority="4"> + <xsl:attribute name="expr">0</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:quoteExpr"> + <xsl:attribute name="expr">'<xsl:value-of select="." />'</xsl:attribute> +</xsl:template> + +<!-- an expr that is the value of a variable --> +<xsl:template match="//@conf:varExpr"> + <xsl:attribute name="expr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- in EcmaScript, this is the same as varExpr --> +<xsl:template match="//@conf:varChildExpr"> + <xsl:attribute name="expr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- an expr that is the value of a system variable --> +<xsl:template match="//@conf:systemVarExpr"> + <xsl:attribute name="expr"><xsl:value-of select="." /></xsl:attribute> +</xsl:template> + + +<!-- an expr that is the value of a non-existent substructure of a variable --> +<xsl:template match="//@conf:varNonexistentStruct"> + <xsl:attribute name="expr">Var<xsl:value-of select="." />.bar</xsl:attribute> +</xsl:template> + + +<!-- this should return a value that cannot be assigned to a var. --> +<xsl:template match="//@conf:illegalExpr"> + <xsl:attribute name="expr">return</xsl:attribute> +</xsl:template> + +<!-- this should add 1 to the value of the specified variable --> +<xsl:template match="conf:incrementID"> + <assign xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="location">Var<xsl:value-of select="@id"/></xsl:attribute> + <xsl:attribute name="expr">Var<xsl:value-of select="@id"/> + 1</xsl:attribute> + </assign> + </xsl:template> + +<!-- this should concatenate the value of the id2 to id1 and assign the result to id1 --> +<xsl:template match="conf:concatVars"> + <assign xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="location">Var<xsl:value-of select="@id1"/></xsl:attribute> + <xsl:attribute name="expr">Var<xsl:value-of select="@id1"/> .. Var<xsl:value-of select="@id2"/></xsl:attribute> + </assign> + </xsl:template> + +<!-- assigns the sum of the values of two vars to thefirst var--> +<xsl:template match="//conf:sumVars"> + <assign xmlns="http://www.w3.org/2005/07/scxml"> +<xsl:attribute name="location">Var<xsl:value-of select="@id1"/></xsl:attribute> +<xsl:attribute name="expr">Var<xsl:value-of select="@id1"/> + Var<xsl:value-of select="@id2"/></xsl:attribute> + </assign> + </xsl:template> + +<!-- this should return an illegal target for <send> causing a send error to be raised --> +<xsl:template match="//@conf:illegalTarget"> + <xsl:attribute name="target">baz</xsl:attribute> +</xsl:template> + +<!-- this returns an legal, but unreachable, target for <send> causing a send error to be raised --> +<xsl:template match="//@conf:unreachableTarget"> + <xsl:attribute name="target">#_scxml_foo</xsl:attribute> +</xsl:template> + +<!-- this produces illegal content for <send> causing the message to be rejected --> +<xsl:template match="//conf:illegalContent"> + <content xmlns="http://www.w3.org/2005/07/scxml"> xyz </content> +</xsl:template> + +<!-- a content element whose value is the string 'foo' --> +<xsl:template match="//conf:contentFoo"> + <content xmlns="http://www.w3.org/2005/07/scxml">foo</content> +</xsl:template> + +<xsl:template match="//conf:someInlineVal">123</xsl:template> + +<!-- this returns something that is guaranteed not to be the ID of the current session --> +<xsl:template match="//@conf:invalidSessionID"> + <xsl:attribute name="expr">27</xsl:attribute> +</xsl:template> + +<!-- this returns something that is guaranteed not to be a valid event I/O processor --> +<xsl:template match="//@conf:invalidSendType"> + <xsl:attribute name="type">27</xsl:attribute> +</xsl:template> + +<!-- same value in an expr --> +<xsl:template match="//@conf:invalidSendTypeExpr"> + <xsl:attribute name="expr">27</xsl:attribute> +</xsl:template> + +<!-- exprs that return the value of the event fields --> + +<xsl:template match="//@conf:eventName"> + <xsl:attribute name="expr">_event.name</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:eventType"> + <xsl:attribute name="expr">_event.type</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:eventSendid"> + <xsl:attribute name="expr">_event.sendid</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:eventField"> + <xsl:attribute name="expr">_event.<xsl:value-of select="."/></xsl:attribute> +</xsl:template> + +<!-- returns the raw message structure as a string --> +<xsl:template match="//@conf:eventRaw"> + <xsl:attribute name="expr">_event.raw</xsl:attribute> +</xsl:template> + + +<!-- returns the value of the specified item in _event.data --> +<xsl:template match="//@conf:eventDataFieldValue"> + <xsl:attribute name="expr">_event.data.<xsl:value-of select="."/></xsl:attribute> +</xsl:template> + +<!-- returns the value of a KVP specified by <param> from _event.data --> +<xsl:template match="//@conf:eventDataParamValue"> + <xsl:attribute name="expr">_event.data.<xsl:value-of select="."/></xsl:attribute> +</xsl:template> +<!-- returns the value of a KVP specified by <param> from _event.data --> +<xsl:template match="//@conf:eventDataNamelistValue"> + <xsl:attribute name="expr">_event.data.Var<xsl:value-of select="."/></xsl:attribute> +</xsl:template> + +<!-- returns the location of the scxml event i/o processor --> +<xsl:template match="//@conf:scxmlEventIOLocation"> + <xsl:attribute name="expr">_ioprocessors.scxml.location</xsl:attribute> +</xsl:template> + +<!-- templates for the expr versions of the send attributes --> + +<!-- eventexpr takes the value of the specified variable --> +<xsl:template match="//@conf:eventExpr"> + <xsl:attribute name="eventexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- targetexpr takes the value of the specified variable --> +<xsl:template match="//@conf:targetExpr"> + <xsl:attribute name="targetexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- typeexpr takes the value of the specified variable --> +<xsl:template match="//@conf:typeExpr"> + <xsl:attribute name="typeexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- delayexpr takes the value of the specified variable --> +<xsl:template match="//@conf:delayFromVar"> + <xsl:attribute name="delayexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- computes a delayexpr based on the value passed in. this lets platforms determine how long to delay timeout +events which cause the test to fail. The default value provided here is pretty long --> +<xsl:template match="//@conf:delay"> + <xsl:attribute name="delayexpr">'<xsl:value-of select="."/>s'</xsl:attribute> +</xsl:template> + +<!-- the specified variable is used as idlocation --> +<xsl:template match="//@conf:idlocation"> + <xsl:attribute name="idlocation">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- the specified variable is used as sendidexpr --> +<xsl:template match="//@conf:sendIDExpr"> + <xsl:attribute name="sendidexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- the specified variable is used as srcexpr --> +<xsl:template match="//@conf:srcExpr"> + <xsl:attribute name="srcexpr">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- the specified variable is used as namelist --> +<xsl:template match="//@conf:namelist"> + <xsl:attribute name="namelist">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- this produces a reference to an invalid namelist, i.e. on that should cause an error --> +<xsl:template match="//@conf:invalidNamelist"> + <xsl:attribute name="namelist">"foo</xsl:attribute> +</xsl:template> + + + + +<!-- transition conditions --> +<!-- the value is evaluated --> +<xsl:template match="//@conf:idVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/> + <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> + <xsl:choose> + <xsl:when test="$op='='">==</xsl:when> + <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise> + </xsl:choose> + <xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> +<!-- compare two variables --> +<xsl:template match="//@conf:varIdVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/> + <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> + <xsl:choose> + <xsl:when test="$op='='">==</xsl:when> + <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise> + </xsl:choose>Var<xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + + +<!-- test that given var whose value was passed in via namelist has specific value. The value expr is evaluated --> +<xsl:template match="//@conf:namelistIdVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/> + <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> + <xsl:choose> + <xsl:when test="$op='='">==</xsl:when> + <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise> + </xsl:choose> + <xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<!-- true if the two vars/ids have the same value --> +<xsl:template match="//@conf:VarEqVar"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)(\W+)([0-9]+)"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/>==Var<xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<!-- true if the two vars/ids have the same value, which is a structure, not atomic --> +<xsl:template match="//@conf:VarEqVarStruct"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)(\W+)([0-9]+)"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/>==Var<xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<!-- the value is quoted --> +<xsl:template match="//@conf:idQuoteVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> +<xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/><xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> +<xsl:choose> +<xsl:when test="$op='='">==</xsl:when> +<xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise></xsl:choose>'<xsl:value-of select="regex-group(3)"/>'</xsl:matching-substring> +</xsl:analyze-string> +</xsl:attribute> +</xsl:template> + +<!-- test on the value of two vars --> +<xsl:template match="//@conf:compareIDVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)([0-9+])"> + <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/> + <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> + <xsl:choose> + <xsl:when test="$op='='">=</xsl:when> + <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise> + </xsl:choose>Var<xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<!-- test that the specified var has the value specified by <conf:someInlineVal> --> +<xsl:template match="//@conf:idSomeVal"> + <xsl:attribute name="cond">Var<xsl:value-of select="." /> == 123</xsl:attribute> +</xsl:template> + +<!-- test that the event's name fieldhas the value specified --> +<xsl:template match="//@conf:eventNameVal"> + <xsl:attribute name="cond">_event.name == <xsl:text>'</xsl:text><xsl:value-of select="."/><xsl:text>'</xsl:text> + </xsl:attribute> + +</xsl:template> + +<xsl:template match="//@conf:eventvarVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> + <xsl:matching-substring>_event.data.Var<xsl:value-of select="regex-group(1)"/><xsl:text></xsl:text> + <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> + <xsl:choose> + <xsl:when test="$op='='">==</xsl:when> + <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise> + </xsl:choose> + <xsl:value-of select="regex-group(3)"/> + </xsl:matching-substring> + + </xsl:analyze-string> + </xsl:attribute> + +</xsl:template> + + + +<!-- return true if variable matches value of system var (var number is first arg, system var name +is the second argument --> +<xsl:template match="//@conf:idSystemVarVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)([=<>]=?)(.*)"> +<xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/><xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable> +<xsl:choose> +<xsl:when test="$op='='">==</xsl:when> +<xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise></xsl:choose><xsl:value-of select="regex-group(3)"/></xsl:matching-substring> +</xsl:analyze-string> +</xsl:attribute> +</xsl:template> + +<!-- return true if event.data field matches the specified value --> + +<xsl:template match="//@conf:eventdataVal"> + <xsl:attribute name="cond">_event.data == <xsl:value-of select="."/></xsl:attribute> +</xsl:template> + +<!-- test that _event.data is set to the value specified by <conf:someInlineVal> --> +<xsl:template match="//@conf:eventdataSomeVal"> + <xsl:attribute name="cond">_event.data == 123</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:emptyEventData"> + <xsl:attribute name="cond">_event.data == nil</xsl:attribute> +</xsl:template> + +<!-- return true if the _name system var has the specified quoted value --> +<xsl:template match="//@conf:nameVarVal"> + <xsl:attribute name="cond">_name == '<xsl:value-of select="."/>'</xsl:attribute> +</xsl:template> + +<!-- return true if first var's value is a prefix of the second var's value. Input has form "n m" where n and m are ints.--> +<xsl:template match="//@conf:varPrefix"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="(\w+)(\W)(\w+)"> + <xsl:matching-substring> + <!-- the underscore.string.startswith function compressed into one line below: + <xsl:text>(function(str, starts){ + if (starts == '') return true; + if (str == null || starts == null) return false; + str = String(str); starts = String(starts); + return str.length >= starts.length && str.slice(0, starts.length) == starts; + })(</xsl:text>Var<xsl:value-of select="regex-group(3)"/>, Var<xsl:value-of select="regex-group(1)"/><xsl:text>)</xsl:text> --> + <!-- string.sub(Var1,1,string.len(Var2))==Var2 --> + <!-- </xsl:text>Var<xsl:value-of select="regex-group(3)"/><xsl:text> --> + <!-- </xsl:text>Var<xsl:value-of select="regex-group(1)"/><xsl:text> --> + <xsl:text>string.sub(</xsl:text>Var<xsl:value-of select="regex-group(3)"/><xsl:text>,1,string.len(</xsl:text>Var<xsl:value-of select="regex-group(1)"/><xsl:text>))==</xsl:text>Var<xsl:value-of select="regex-group(1)"/><xsl:text></xsl:text> + + </xsl:matching-substring> + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:inState"> + <xsl:attribute name="cond">In('<xsl:value-of select="."/>')</xsl:attribute> +</xsl:template> + +<!-- returns a value that cannot be converted into a Boolean --> +<xsl:template match="//@conf:nonBoolean"> + <xsl:attribute name="cond">return</xsl:attribute> +</xsl:template> + +<!-- true if id has a value / need to be this specific 150, 151 vs 551 --> +<xsl:template match="//@conf:isBound[//*:state[@id='s1']/*:datamodel/*:data/conf:array123]" priority="5"> + <xsl:attribute name="cond">Var<xsl:value-of select="." />[1]</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:isBound"> + <xsl:attribute name="cond">Var<xsl:value-of select="." /> ~= nil</xsl:attribute> +</xsl:template> + +<!-- return true if specified var has been created but is not bound --> +<xsl:template match="//@conf:unboundVar"> + <xsl:attribute name="cond">Var<xsl:value-of select="." /> == nil</xsl:attribute> +</xsl:template> + +<!-- true if system var has a value --> +<xsl:template match="//@conf:systemVarIsBound"> + <xsl:attribute name="cond"><xsl:value-of select="." /> ~= nil</xsl:attribute> +</xsl:template> + +<!-- true if id does not have a value --> +<xsl:template match="//@conf:noValue"> + <xsl:attribute name="cond">Var<xsl:value-of select="." /> == nil</xsl:attribute> +</xsl:template> + +<!-- always returns true --> +<xsl:template match="//@conf:true"> + <xsl:attribute name="cond">true</xsl:attribute> +</xsl:template> + +<!-- always returns false --> +<xsl:template match="//@conf:false"> + <xsl:attribute name="cond">false</xsl:attribute> +</xsl:template> + +<!-- returns true if all the required fields of _event are bound --> +<xsl:template match="//@conf:eventFieldsAreBound"> + <xsl:attribute name="cond">_event.name ~= nil and _event.type ~= nil</xsl:attribute> +</xsl:template> + +<!-- returns true if _event.data contains the specified item --> +<xsl:template match="//@conf:eventDataHasField"> + _event.data.<xsl:attribute name="cond"><xsl:value-of select="."/> ~= nil</xsl:attribute> +</xsl:template> + +<!-- returns true if specified field of _event has no value --> +<xsl:template match="//@conf:eventFieldHasNoValue"> + <xsl:attribute name="cond">_event.<xsl:value-of select="." /> == nil</xsl:attribute> +</xsl:template> + +<!-- true if the language of _event matches the processor's datamodel --> +<xsl:template match="//@conf:eventLanguageMatchesDatamodel"> + <xsl:attribute name="cond"> _event.language == 'lua'</xsl:attribute> +</xsl:template> + +<!-- true if _event was delivered on the specified i/o processor --> +<xsl:template match="//@conf:originTypeEq"> + <xsl:attribute name="cond"> _event.origintype == '<xsl:value-of select="."/>'</xsl:attribute> +</xsl:template> + + + + +<!-- scripting --> + +<xsl:template match="conf:script"> + <script xmlns="http://www.w3.org/2005/07/scxml">Var1 = 1</script> +</xsl:template> + + +<xsl:template match="//@conf:scriptGoodSrc"> + <xsl:attribute name="src">D:\W3C\SCXMLTests\test300.js</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:scriptBadSrc"> + <xsl:attribute name="src">D:\foo</xsl:attribute> +</xsl:template> + +<!-- sends an event back to the sender of the current event --> +<xsl:template match="conf:sendToSender"> + <send xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="event"><xsl:value-of select="@name" /></xsl:attribute> + <xsl:attribute name="targetexpr">_event.origin</xsl:attribute> + <xsl:attribute name="typeexpr">_event.origintype</xsl:attribute> + </send> +</xsl:template> + +<!-- foreach --> +<!-- this should produce an array containing 1 2 3 in that order --> +<xsl:template match="//conf:array123">{1,2,3}</xsl:template> + +<!-- xsl:template match="//conf:array123"> + Var<xsl:value-of select="../@conf:id" />[0] = 1; + Var<xsl:value-of select="../@conf:id" />[1] = 2; + Var<xsl:value-of select="../@conf:id" />[2] = 3; +</xsl:template --> + +<!-- this uses the value of the indicated variable as the 'array' attribute --> +<xsl:template match="//@conf:arrayVar"> + <xsl:attribute name="array">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- in Python, this is the same as arrayVar --> +<xsl:template match="//@conf:arrayTextVar"> + <xsl:attribute name="array">Var<xsl:value-of select="."/></xsl:attribute> +</xsl:template> + + +<!-- this should produce expr that yields an array containing 1 2 3 in that order --> +<xsl:template match="//@conf:arrayExpr123"> + <xsl:attribute name="expr">1, 2, 3]</xsl:attribute> +</xsl:template> + +<!-- this should yield an expr that evaluates to something that is not a valid array --> +<xsl:template match="//@conf:illegalArray"> + <xsl:attribute name="expr">7</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:item"> + <xsl:attribute name="item">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- this should return something that cannot be an variable name --> +<xsl:template match="//@conf:illegalItem"> + <xsl:attribute name="item">'continue'</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:index"> + <xsl:attribute name="index">Var<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- this should add an extra item onto the end of the specified array, which +is of the same type as array123 --> +<xsl:template match="conf:extendArray"> + <assign xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="location">Var<xsl:value-of select="@id"/>[4]</xsl:attribute> + <xsl:attribute name="expr">'asdf'</xsl:attribute> + </assign> + </xsl:template> + +<!-- this should create a multidimensional array all of whose cells are set to the specified value. Not +currently used for any tests --> +<xsl:template match="//@conf:multiDimensionalArrayExpr"> + <xsl:attribute name="expr">[[<xsl:value-of select="."/>,<xsl:value-of select="."/>],[<xsl:value-of select="."/>,<xsl:value-of select="."/>]]</xsl:attribute> +</xsl:template> + + +<!-- this should create a <foreach> statement that increments the values of the specified array. Not +currently used for any tests --> +<xsl:template match="conf:incrementArray"> + <xsl:variable name="targetArray">Var<xsl:value-of select="@id"/></xsl:variable> +<foreach xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="item">item</xsl:attribute> + <xsl:attribute name="index">index</xsl:attribute> + <xsl:attribute name="array"><xsl:value-of select="$targetArray"/></xsl:attribute> +<script> +<xsl:value-of select="$targetArray"/>[index][0] = <xsl:value-of select="$targetArray"/>[index][0] + 1 +<xsl:value-of select="$targetArray"/>[index][1] = <xsl:value-of select="$targetArray"/>[index][1] + 1 +</script> +</foreach> +</xsl:template> +<!-- this should return true iff each cell in the specified multidimensional array has the specified value. Not +currently used for any tests --> +<xsl:template match="//@conf:arrayVal"> + <xsl:attribute name="cond"> + <xsl:analyze-string select="." + regex="([0-9]+)(\W+)(.*)"> + <xsl:matching-substring> + <xsl:variable name="targetArray">Var<xsl:value-of select="regex-group(1)"/></xsl:variable> + <xsl:variable name="value"><xsl:value-of select="regex-group(3)"/></xsl:variable> +<xsl:value-of select="$targetArray"/>[0][0]== <xsl:value-of select="$value"/> and <xsl:value-of select="$targetArray"/>[0][1] == <xsl:value-of select="$value"/> and <xsl:value-of select="$targetArray"/>[1][0] == <xsl:value-of select="$value"/> and <xsl:value-of select="$targetArray"/>[1][1] == <xsl:value-of select="$value"/> +</xsl:matching-substring> + + </xsl:analyze-string> + </xsl:attribute> +</xsl:template> + +<!-- SITE SPECIFIC INFORMATION FOR BASIC HTTP EVENT I/O PROCESSOR +This template must be edited by each site that expects to test the Basic HTTP Event I/O +processor. Other templates for the Basic HTTP Event I/O tests are below it --> + +<xsl:template match="//@conf:testOnServer"> + <xsl:attribute name="target">SITE_SPECIFIC_ADDRESS<xsl:value-of select="." /></xsl:attribute> +</xsl:template> + +<!-- use this template to import or set up anything you need for the code in +the basic http tests. In the case of python, we have to import the regexp module.--> +<xsl:template match="conf:setUpHTTPTest"> +<!-- <script xmlns="http://www.w3.org/2005/07/scxml">import re</script> --> +</xsl:template> + +<!-- return an expression evaluating to the basic http access URI --> +<xsl:template match="//@conf:basicHTTPAccessURI"> + <xsl:attribute name="expr">_ioprocessors.basichttp.location</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:basicHTTPAccessURITarget"> + <xsl:attribute name="targetexpr">_ioprocessors.basichttp.location</xsl:attribute> +</xsl:template> + +<!-- generate an cond that evaluates to true if POST was used to send the message --> +<xsl:template match="//@conf:methodIsPost"> + <xsl:attribute name="cond">string.find(_event.raw, 'POST')</xsl:attribute> +</xsl:template> + +<!-- generate a namelist attribute containing all the ids listed in the attribute's value --> +<xsl:template match="//@conf:multipleNamelist"> + <xsl:attribute name="namelist"> + <xsl:analyze-string select="." regex="([0-9]+)"> +<xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/><xsl:text>
</xsl:text></xsl:matching-substring> +</xsl:analyze-string> +</xsl:attribute> +</xsl:template> + +<!-- generate a cond that evaluates to true if the event is external --> +<xsl:template match="//@conf:eventIsExternal"> + <xsl:attribute name="cond">_event.type == 'external'</xsl:attribute> +</xsl:template> + +<!-- returns true if _event/raw contains the var with the specified value --> +<xsl:template match="//@conf:eventIdParamHasValue"> + <xsl:attribute name="cond"><xsl:analyze-string select="." regex="(\S+)(\s+)(\S+)"> +<xsl:matching-substring>string.find(_event.raw, 'Var<xsl:value-of select="regex-group(1)"/>=<xsl:value-of select="regex-group(3)"/>')</xsl:matching-substring></xsl:analyze-string></xsl:attribute> +</xsl:template> + +<!-- returns true if _event/raw contains the param with the specified value --> +<xsl:template match="//@conf:eventNamedParamHasValue"> + <xsl:attribute name="cond"><xsl:analyze-string select="." regex="(\S+)(\s+)(\S+)"> + <xsl:matching-substring>string.find(_event.raw, '<xsl:value-of select="regex-group(1)"/>=<xsl:value-of select="regex-group(3)"/>')</xsl:matching-substring></xsl:analyze-string></xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:messageBodyEquals"> + <xsl:attribute name="cond">string.find(_event.raw, '<xsl:value-of select="."/>')</xsl:attribute> +</xsl:template> + + +<!-- the following templates produce an expr that extracts the relevant item from _event.raw --> +<xsl:template match="//@conf:getNamedParamVal"> + <xsl:attribute name="expr">_event.raw.match(/<xsl:value-of select="."/>=(\S+)$/)[1]</xsl:attribute> +</xsl:template> + +<!-- if input is 1, find param Var1, etc. --> +<xsl:template match="//@conf:getIDParamVal"> + <xsl:attribute name="expr">_event.raw.match(/Var<xsl:value-of select="."/>=(\S+)$/)[1]</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:getNthParamName"> + <xsl:attribute name="expr">txt.match(/\n\n(.*)/)[2].split('&')[<xsl:value-of select="."/>].split('=')[0]</xsl:attribute> +</xsl:template> + +<xsl:template match="//@conf:getNthParamVal"> + <xsl:attribute name="expr">txt.match(/\n\n(.*)/)[2].split('&')[<xsl:value-of select="."/>].split('=')[1]</xsl:attribute> +</xsl:template> + +<!-- this should produce an 'expr' that evaluates to a valid SCXML Message structure --> +<xsl:template match="//@conf:scxmlEventExpr"> + <xsl:attribute name="expr">'<message source="' + _ioprocessors['basichttp'] + '"' ++ 'xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" xmlns:xsi=:http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://www.w3.org/2005/07/scxml scxml-message.xsd" sourcetype=:scxml"' ++' 'name="name"' + '"' + <xsl:value-of select="."/> + '"' + />'</xsl:attribute> + </xsl:template> + +<!-- this should produce a <content> tag containing material to use as the message body. This +content must include the address, so the far side can send a response back to us --> +<xsl:template match="conf:msgContent"> +<content xmlns="http://www.w3.org/2005/07/scxml"> + <xsl:attribute name="expr">'address=' + _ioprocessors['basichttp'] + "'"</xsl:attribute> + </content> +</xsl:template> + +<!-- this should produce a test on _event.raw that checks whether the body matches the +expression defined in the previous template. This may need to be tightened up because +it allows anything after the = --> +<xsl:template match="//@conf:msgIsBody"> + <xsl:attribute name="cond">_event.raw.match(/\n\naddress=(.*)$/)</xsl:attribute> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/test/w3c/confNamespace.xsl b/test/w3c/confNamespace.xsl new file mode 100644 index 0000000..f34cfbc --- /dev/null +++ b/test/w3c/confNamespace.xsl @@ -0,0 +1,18 @@ +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:scxml="http://www.w3.org/2005/07/scxml"> + <xsl:output omit-xml-declaration="no" indent="yes"/> + + <xsl:template match="node()|@*"> + <xsl:copy> + <xsl:apply-templates select="node()|@*"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="*"> + <xsl:element name="scxml:{name()}" namespace="http://www.w3.org/2005/07/scxml"> + <xsl:copy-of select="namespace::*"/> + <xsl:apply-templates select="node()|@*"/> + </xsl:element> + </xsl:template> +</xsl:stylesheet> diff --git a/test/w3c/confXPath.xsl b/test/w3c/confXPath.xsl index bb65375..4381717 100644 --- a/test/w3c/confXPath.xsl +++ b/test/w3c/confXPath.xsl @@ -310,7 +310,7 @@ events which cause the test to fail. The default value provided here is pretty <!-- returns the value of a KVP specified by Namelist from _event.data --> <xsl:template match="//@conf:eventDataNamelistValue"> - <xsl:attribute name="expr">$_event/data/data[@id=Var'<xsl:value-of select="."/>']/data/text()</xsl:attribute> + <xsl:attribute name="expr">$_event/data/data[@id='Var<xsl:value-of select="."/>']/data/text()</xsl:attribute> </xsl:template> <!-- returns the location of the scxml event i/o processor --> @@ -525,7 +525,7 @@ is the second argument --> <!-- test that _event.data is set to the value specified by <conf:someInlineVal> --> <xsl:template match="//@conf:eventdataSomeVal"> - <xsl:attribute name="cond">_event.data = 123</xsl:attribute> + <xsl:attribute name="cond">_event/data = 123</xsl:attribute> </xsl:template> <xsl:template match="//@conf:emptyEventData"> diff --git a/test/w3c/convert-tests.sh b/test/w3c/convert-tests.sh index bd8d140..f30f8cf 100755 --- a/test/w3c/convert-tests.sh +++ b/test/w3c/convert-tests.sh @@ -1,54 +1,51 @@ +#!/bin/bash + +# +# Convert all SCXML IRP tests from the W3C for specific datamodels +# + ME=`basename $0` DIR="$( cd "$( dirname "$0" )" && pwd )" cd $DIR TXMLS=`ls txml/*.txml` +TRANSFORM="java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar" # see http://saxon.sourceforge.net/saxon6.5.1/using-xsl.html -# for TXML in $TXMLS -# do -# DEST=ecma/`basename $TXML .txml`.scxml -# echo "Processing $TXML to $DEST" -# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confEcma.xsl -o:$DEST -# done -# -# for TXML in $TXMLS -# do -# DEST=xpath/`basename $TXML .txml`.scxml -# echo "Processing $TXML to $DEST" -# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confXPath.xsl -o:$DEST -# done -# -# for TXML in $TXMLS -# do -# DEST=promela/`basename $TXML .txml`.scxml -# echo "Processing $TXML to $DEST" -# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confPromela.xsl -o:$DEST -# done - -# for TXML in $TXMLS -# do -# DEST=prolog/`basename $TXML .txml`.scxml -# echo "Processing $TXML to $DEST" -# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confProlog.xsl -o:$DEST -# done - for TXML in $TXMLS do - DEST=namespace/`basename $TXML .txml`.scxml - echo "Processing $TXML to $DEST" - java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confEcma-ns.xsl -o:$DEST + echo -n "Processing $TXML for " + TARGETFILE=`basename $TXML .txml`.scxml + # echo -n "ecma " && $TRANSFORM $TXML confEcma.xsl -o:ecma/$TARGETFILE + echo -n "namespace " && $TRANSFORM ecma/$TARGETFILE confNamespace.xsl -o:namespace/$TARGETFILE + # echo -n "xpath " && $TRANSFORM $TXML confXPath.xsl -o:xpath/$TARGETFILE + # echo -n "promela " && $TRANSFORM $TXML confPromela.xsl -o:promela/$TARGETFILE + # echo -n "prolog " && $TRANSFORM $TXML confProlog.xsl -o:prolog/$TARGETFILE + # echo -n "lua " && $TRANSFORM $TXML confLua.xsl -o:lua/$TARGETFILE + echo done +# make sure substitutions are idempotent! + +# percent needs to be escaped in lua patterns +sed -i.orig 's/this%20is%20some%20content/this%%20is%%20some%%20content/g' ./lua/test520.scxml + +# x-www-form-urlencode will not preserve the type and we default to string +sed -i.orig 's/Var1==2/tonumber(Var1)==2/g' ./lua/test567.scxml + +# unnamespace embedded xml in namespace tests +sed -i.orig 's/scxml:book/book/g' ./namespace/test557.scxml +sed -i.orig 's/scxml:book/book/g' ./namespace/test561.scxml + cp txml/*.txt ecma/ -cp txml/*.txt ecma.ns/ +cp txml/*.txt namespace/ cp txml/*.txt xpath/ cp txml/*.txt promela/ cp txml/*.txt prolog/ +cp txml/*.txt lua/ find ./ecma -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv find ./namespace -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv - find ./xpath -type f -exec grep -Ili 'datamodel="ecmascript"' {} \; |xargs rm -fv find ./promela -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv @@ -59,8 +56,13 @@ find ./prolog -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv find ./prolog -type f -exec grep -Ili 'datamodel="ecmascript"' {} \; |xargs rm -fv find ./prolog -type f -exec grep -Ili 'datamodel="null"' {} \; |xargs rm -fv +find ./lua -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv +find ./lua -type f -exec grep -Ili 'datamodel="ecmascript"' {} \; |xargs rm -fv +find ./lua -type f -exec grep -Ili 'datamodel="null"' {} \; |xargs rm -fv + # test436 is the null datamodel mv ./ecma/test436.scxml ./null +rm ./namespace/test436.scxml rm ./xpath/test436.scxml rm ./promela/test436.scxml rm ./prolog/test436.scxml diff --git a/test/w3c/create-test-table.pl b/test/w3c/create-test-table.pl new file mode 100755 index 0000000..f936817 --- /dev/null +++ b/test/w3c/create-test-table.pl @@ -0,0 +1,180 @@ +#!/usr/bin/perl -w + +use strict; +use Data::Dumper; +use XML::Simple; + +my $manifest = XMLin("./manifest.xml"); +# print Dumper($manifest->{'assert'}); + +my $perSpecId; + +my %specName = ( +'C.1' => 'The Null Data Model', +'D.2' => 'Basic HTTP Event I/O Processor', +'C.2' => 'The ECMAScript Data Model', +'C.3' => 'The XPath Data Model', +'D.1' => 'SCXML Event I/O Processor', +'3.10' => '<history>', +'3.12' => 'SCXML Events', +'3.13' => 'Selecting and Executing Transitions', +'3.2' => '<scxml>', +'3.3' => '<state>', +'3.7' => '<final>', +'3.8' => '<onentry>', +'3.9' => '<onexit>', +'4.2' => '<raise>', +'4.3' => '<if>', +'4.6' => '<foreach>', +'4.9' => 'Evaluation of Executable Content', +'5.10' => 'System Variables', +'5.3' => '<data>', +'5.4' => '<assign>', +'5.5' => '<donedata>', +'5.6' => '<content>', +'5.7' => '<param>', +'5.8' => '<script>', +'5.9' => 'Expressions', +'6.2' => '<send>', +'6.3' => '<cancel>', +'6.4' => '<invoke>' +); + +my %specLink = ( +); + +TESTS: for my $testNr (keys $manifest->{'assert'}) { + my @tests; + my $thisTest = $manifest->{'assert'}->{$testNr}; + if (ref($thisTest->{'test'}->{'start'}) eq "ARRAY") { + push (@tests, @{$thisTest->{'test'}->{'start'}}); + } else { + push (@tests, $thisTest->{'test'}->{'start'}); + } + + $specLink{$thisTest->{'specnum'}} = $thisTest->{'specid'}; + + for my $t (@tests) { + if ($t->{'uri'} =~ /\/test(.*)\.[txml|txt]/) { + # $perSpecId->{$thisTest->{'specnum'}}->{$1}->{'specid'} = $thisTest->{'specid'} + $perSpecId->{$thisTest->{'specnum'}}->{$1}->{'content'} = $thisTest->{'content'}; + $perSpecId->{$thisTest->{'specnum'}}->{$1}->{'required'} = $thisTest->{'test'}->{'conformance'}; + $perSpecId->{$thisTest->{'specnum'}}->{$1}->{'manual'} = $thisTest->{'test'}->{'manual'}; + } else { + die(Dumper($t)); + } + } + +} + +# print Dumper($perSpecId); + +print << "EOF"; +<table> +<thead> + <tr> + <th colspan="3">Test (Req. / Man.)</th> + <th>NameSpace</th> + <th>ECMA</th> + <th>Lua</th> + <th>PROMELA</th> + <th>Prolog</th> + </tr> +</thead> +EOF + +# print '| Test | | ECMA | Lua |' . "\n"; +# print '|-----:|--|:------:|:---:|' . "\n"; + +for my $specid (sort { $a cmp $b } keys $perSpecId) { + my $specName = $specName{$specid}; + if ($specName =~ s/^<(.*)>$/ucfirst($1)/eg) { + # $specName = join " ", map {ucfirst} split " ", $specName; + $specName = 'The ' .$specName. ' Element'; + } + $specName =~ s/scxml/SCXML/ig; + + # print "| <br> | | | | |\n"; + + my $link = "http://www.w3.org/TR/2015/REC-scxml-20150901/" . ${specLink{${specid}}}; + + print << "EOF"; + <tr> + <td>**<a href="${link}">§${specid}</a>**</td> + <td colspan="7"><sub> </sub>**${specName}**<sup> </sup></td> + </tr> +EOF + + + # print "| **[§${specid}](http://www.w3.org/TR/2015/REC-scxml-20150901/${specLink{${specid}}})** | **${specName}** | <br><br> | |\n"; + + for my $test (sort {$a<=>$b} keys $perSpecId->{$specid}) { + my $content = $perSpecId->{$specid}->{$test}->{'content'}; + $content =~ s/^\s+|\s+$//g ; # trim + $content =~ s/[\n]//g; # remove special chars + $content =~ s/\]/\)/g; # substitute brackets + $content =~ s/\[/\(/g; # substitute brackets + $content =~ s/([`_\*\\])/\\$1/g; # escaping + $content =~ s/"/"/g; # escaping + $content =~ s/'(\S+)'/`$1`/g; # remove special chars + + $content =~ s/^\s+In the XPath data\s?model,?\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+In the ECMAScript data\s?model,?\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+The SCXML processor MUST\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+The Processor MUST\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+To execute a microstep, the SCXML Processor MUST\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+In the foreach element,?\s*(\S)/uc($1)/ieg; + $content =~ s/^\s+If the location expression of an assign\s*(\S)/uc($1)/ieg; + + # $content = substr($content, 0, 120); + + my $required = $perSpecId->{$specid}->{$test}->{'required'}; + my $manual = $perSpecId->{$specid}->{$test}->{'manual'}; + $required =~ s/optional//g; + $required =~ s/mandatory/X/g; + + $manual =~ s/true/X/g; + $manual =~ s/false//g; + + my $output; + + + my $pass = '`pass`'; + my $fail = '**`FAIL`**'; + + my $ecmaPass = $fail; + my $ecmaFile = "/Users/sradomski/Documents/TK/Code/uscxml2/test/w3c/ecma/test${test}.scxml"; + $output = `../../build/cli/bin/test-w3c $ecmaFile 2>&1 /dev/null`; + $ecmaPass = $pass if $? == 0; + + my $luaPass = $fail; + my $luaFile = "/Users/sradomski/Documents/TK/Code/uscxml2/test/w3c/lua/test${test}.scxml"; + $output = `../../build/cli/bin/test-w3c $luaFile 2>&1 /dev/null`; + $luaPass = $pass if $? == 0; + + my $nsPass = $fail; + my $nsFile = "/Users/sradomski/Documents/TK/Code/uscxml2/test/w3c/namespace/test${test}.scxml"; + $output = `../../build/cli/bin/test-w3c $nsFile 2>&1 /dev/null`; + $nsPass = $pass if $? == 0; + + $link = "https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test${test}.txml"; + + print << "EOF"; + <tr> + <td> **<a href="${link}" alt="${content}">`${test}`</a>**</td> + <td>${required}</td> + <td>${manual}</td> + <td>${nsPass}</td> + <td>${ecmaPass}</td> + <td>${luaPass}</td> + <td>`N/A`</td> + <td>`N/A`</td> + </tr> +EOF + + # print "|[**`${test}`**](https://github.com/tklab-tud/uscxml/tree/master/test/w3c/txml/test${test}.txml \"$content\") | <sub>${required} / $manual</sub> | $ecmaPass | $luaPass |\n"; + + } +} + +print '</table>' diff --git a/test/w3c/ecma/robots.txt b/test/w3c/ecma/robots.txt index 9be2782..fdd7340 100644 --- a/test/w3c/ecma/robots.txt +++ b/test/w3c/ecma/robots.txt @@ -1,7 +1,7 @@ # # robots.txt for http://www.w3.org/ # -# $Id: robots.txt,v 1.67 2014-06-25 13:06:01 ddavis Exp $ +# $Id: robots.txt,v 1.74 2016/02/11 20:30:26 gerald Exp $ # # For use by search.w3.org @@ -80,6 +80,7 @@ Disallow: /2004/08/W3CTalks Disallow: /2007/11/Talks/search Disallow: /People/all/ Disallow: /RDF/Validator/ARPServlet +Disallow: /RDF/Validator/rdfval Disallow: /2003/03/Translations/byLanguage Disallow: /2003/03/Translations/byTechnology Disallow: /2005/11/Translations/Query @@ -92,5 +93,11 @@ Disallow: /2006/02/chartergen Disallow: /2004/01/pp-impl Disallow: /Consortium/supporters Disallow: /2007/08/pyRdfa/ +Disallow: /2012/pyRdfa/extract Disallow: /WAI/PF/comments/ Disallow: /participate/conferences.xml +Disallow: /scripts/ +Disallow: /2005/01/yacker/ +Disallow: /2005/01/yacker? +Disallow: /2003/09/nschecker? + diff --git a/test/w3c/ecma/test252.scxml b/test/w3c/ecma/test252.scxml index f565a26..78c9315 100644 --- a/test/w3c/ecma/test252.scxml +++ b/test/w3c/ecma/test252.scxml @@ -5,7 +5,7 @@ timeout indicates success. --> <scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="ecmascript"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send event="timeout" delayexpr="'1s'"/> </onentry> <transition event="timeout" target="pass"/> <transition event="childToParent" target="fail"/> @@ -19,7 +19,7 @@ timeout indicates success. --> <scxml initial="sub0" version="1.0" datamodel="ecmascript"> <state id="sub0"> <onentry> - <send event="timeout" delay="2s"/> + <send event="timeout" delayexpr="'.5s'"/> </onentry> <transition event="timeout" target="subFinal"/> <onexit> diff --git a/test/w3c/ecma/test330.scxml b/test/w3c/ecma/test330.scxml index 71578f3..bf6bbe2 100644 --- a/test/w3c/ecma/test330.scxml +++ b/test/w3c/ecma/test330.scxml @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- check that the required fields are present in both internal and external events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="ecmascript" name="machineName"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="ecmascript" name="machineName"> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'invokeid' && 'data' in _event" target="s1"/> + <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'origintype' in _event && 'invokeid' in _event && 'data' in _event" target="s1"/> <transition event="*" target="fail"/> </state> <state id="s1"> <onentry> <send event="foo"/> </onentry> - <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'invokeid' && 'data' in _event" target="pass"/> + <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'origintype' in _event && 'invokeid' in _event && 'data' in _event" target="pass"/> <transition event="*" target="fail"/> </state> <final id="pass"> diff --git a/test/w3c/prolog/robots.txt b/test/w3c/lua/robots.txt index 9be2782..fdd7340 100644 --- a/test/w3c/prolog/robots.txt +++ b/test/w3c/lua/robots.txt @@ -1,7 +1,7 @@ # # robots.txt for http://www.w3.org/ # -# $Id: robots.txt,v 1.67 2014-06-25 13:06:01 ddavis Exp $ +# $Id: robots.txt,v 1.74 2016/02/11 20:30:26 gerald Exp $ # # For use by search.w3.org @@ -80,6 +80,7 @@ Disallow: /2004/08/W3CTalks Disallow: /2007/11/Talks/search Disallow: /People/all/ Disallow: /RDF/Validator/ARPServlet +Disallow: /RDF/Validator/rdfval Disallow: /2003/03/Translations/byLanguage Disallow: /2003/03/Translations/byTechnology Disallow: /2005/11/Translations/Query @@ -92,5 +93,11 @@ Disallow: /2006/02/chartergen Disallow: /2004/01/pp-impl Disallow: /Consortium/supporters Disallow: /2007/08/pyRdfa/ +Disallow: /2012/pyRdfa/extract Disallow: /WAI/PF/comments/ Disallow: /participate/conferences.xml +Disallow: /scripts/ +Disallow: /2005/01/yacker/ +Disallow: /2005/01/yacker? +Disallow: /2003/09/nschecker? + diff --git a/test/w3c/lua/test144.scxml b/test/w3c/lua/test144.scxml index 07d34b5..dbd2977 100644 --- a/test/w3c/lua/test144.scxml +++ b/test/w3c/lua/test144.scxml @@ -1,7 +1,7 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that events are inserted into the queue in the order in which they are raised. If foo occurs before bar, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <raise event="foo"/> @@ -14,6 +14,14 @@ foo occurs before bar, success, otherwise failure --> <transition event="bar" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test147.scxml b/test/w3c/lua/test147.scxml index 5e6d436..09a768c 100644 --- a/test/w3c/lua/test147.scxml +++ b/test/w3c/lua/test147.scxml @@ -1,27 +1,35 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the first clause that evaluates to true - and only that clause - is executed. Only one event should be raised, and it should be bar --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> <if cond="false"> <raise event="foo"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <elseif cond="true"/> <raise event="bar"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <else/> <raise event="baz"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </if> <raise event="bat"/> </onentry> - <transition event="bar" cond="testvar1 == 1" target="pass"/> + <transition event="bar" cond="Var1==1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test148.scxml b/test/w3c/lua/test148.scxml index 821fbf8..d6890a8 100644 --- a/test/w3c/lua/test148.scxml +++ b/test/w3c/lua/test148.scxml @@ -1,28 +1,36 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the else clause executes if <if> and <elseif> evaluate to false. Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> <if cond="false"> <raise event="foo"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <elseif cond="false"/> <raise event="bar"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <else/> <raise event="baz"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </if> <raise event="bat"/> </onentry> - <transition event="baz" cond="testvar1 == 1" target="pass"/> + <transition event="baz" cond="Var1==1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test149.scxml b/test/w3c/lua/test149.scxml index a949d88..3bbc144 100644 --- a/test/w3c/lua/test149.scxml +++ b/test/w3c/lua/test149.scxml @@ -1,23 +1,31 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that neither if clause executes, so that bat is the only event raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> <if cond="false"> <raise event="foo"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <elseif cond="false"/> <raise event="bar"/> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </if> <raise event="bat"/> </onentry> - <transition event="bat" cond="testvar1 == 0" target="pass"/> + <transition event="bat" cond="Var1==0" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test150.scxml b/test/w3c/lua/test150.scxml index ea3ef06..0f71908 100644 --- a/test/w3c/lua/test150.scxml +++ b/test/w3c/lua/test150.scxml @@ -1,16 +1,18 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3">{1,2,3}</data> + <data id="Var1"/> + <data id="Var2"/> + <data id="Var3"> + {1,2,3} + </data> </datamodel> <state id="s0"> <onentry> <!-- first use declared variables --> - <foreach array="testvar3" index="testvar2" item="testvar1"/> + <foreach item="Var1" index="Var2" array="Var3"/> <raise event="foo"/> </onentry> <transition event="error" target="fail"/> @@ -19,7 +21,7 @@ test that it will use an existing var if it does exist. --> <state id="s1"> <onentry> <!-- now use undeclared variables --> - <foreach array="testvar3" index="testvar5" item="testvar4"/> + <foreach item="Var4" index="Var5" array="Var3"/> <raise event="bar"/> </onentry> <transition event="error" target="fail"/> @@ -27,9 +29,17 @@ test that it will use an existing var if it does exist. --> </state> <state id="s2"> <!-- check that var4 is bound --> - <transition cond="testvar4 ~= nil" target="pass"/> + <transition cond="Var4 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test151.scxml b/test/w3c/lua/test151.scxml index 1950a2d..0216d44 100644 --- a/test/w3c/lua/test151.scxml +++ b/test/w3c/lua/test151.scxml @@ -1,16 +1,18 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3">{1,2,3}</data> + <data id="Var1"/> + <data id="Var2"/> + <data id="Var3"> + {1,2,3} + </data> </datamodel> <state id="s0"> <onentry> <!-- first use declared variables --> - <foreach array="testvar3" index="testvar2" item="testvar1"/> + <foreach item="Var1" index="Var2" array="Var3"/> <raise event="foo"/> </onentry> <transition event="error" target="fail"/> @@ -19,7 +21,7 @@ test that it will use an existing var if it does exist. --> <state id="s1"> <onentry> <!-- now use undeclared variables --> - <foreach array="testvar3" index="testvar5" item="testvar4"/> + <foreach item="Var4" index="Var5" array="Var3"/> <raise event="bar"/> </onentry> <transition event="error" target="fail"/> @@ -27,9 +29,17 @@ test that it will use an existing var if it does exist. --> </state> <state id="s2"> <!-- check that var5 is bound --> - <transition cond="testvar5 ~= nil" target="pass"/> + <transition cond="Var5 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test152.scxml b/test/w3c/lua/test152.scxml index 71ff703..98d1605 100644 --- a/test/w3c/lua/test152.scxml +++ b/test/w3c/lua/test152.scxml @@ -1,19 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an illegal array or item value causes error.execution and results in executable content not being executed. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="0" id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3"/> - <data expr="7" id="testvar4"/> - <data id="testvar5">{1,2,3}</data> + <data id="Var1" expr="0"/> + <data id="Var2"/> + <data id="Var3"/> + <data id="Var4" expr="7"/> + <data id="Var5"> + {1,2,3} + </data> </datamodel> <state id="s0"> <onentry> <!-- invalid array, legal item --> - <foreach array="testvar4" index="testvar3" item="testvar2"> - <assign location="testvar1" expr="testvar1+1"/> + <foreach item="Var2" index="Var3" array="Var4"> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </foreach> <raise event="foo"/> </onentry> @@ -23,8 +25,8 @@ not being executed. --> <state id="s1"> <onentry> <!-- illegal item, legal array --> - <foreach array="testvar5" index="testvar3" item="!_no"> - <assign location="testvar1" expr="testvar1+1"/> + <foreach item="'continue'" index="Var3" array="Var5"> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </foreach> <raise event="bar"/> </onentry> @@ -33,9 +35,17 @@ not being executed. --> </state> <state id="s2"> <!-- check that var1 has its original value (so executable content never got executed --> - <transition cond="testvar1 == 0" target="pass"/> + <transition cond="Var1==0" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test153.scxml b/test/w3c/lua/test153.scxml index 5fd07d4..65537c5 100644 --- a/test/w3c/lua/test153.scxml +++ b/test/w3c/lua/test153.scxml @@ -1,32 +1,42 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current value with the previous value, which is stored in var1. The current value should always be larger. If it ever isn't, set Var4 to 0, indicating failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- contains the previous value --> - <data id="testvar2"/> + <data id="Var2"/> <!-- the item which will contain the current value --> - <data id="testvar3">{1,2,3}</data> - <data expr="1" id="testvar4"/> + <data id="Var3"> + {1,2,3} + </data> + <data id="Var4" expr="1"/> <!-- 1 if success, 0 if failure --> </datamodel> <state id="s0"> <onentry> - <foreach array="testvar3" item="testvar2"> - <if cond="testvar1 < testvar2"> - <assign expr="testvar2" location="testvar1"/> + <foreach item="Var2" array="Var3"> + <if cond="Var1<Var2"> + <assign location="Var1" expr="Var2"/> <else/> <!-- values are out of order, record failure --> - <assign expr="0" location="testvar4"/> + <assign location="Var4" expr="0"/> </if> </foreach> </onentry> <!-- check that var1 has its original value --> - <transition cond="testvar4 == 0" target="fail"/> + <transition cond="Var4==0" target="fail"/> <transition target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test155.scxml b/test/w3c/lua/test155.scxml index 2064a37..a252c92 100644 --- a/test/w3c/lua/test155.scxml +++ b/test/w3c/lua/test155.scxml @@ -1,21 +1,31 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable content sums the items into var1 so it should be 6 at the end --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3">{1,2,3}</data> + <data id="Var1" expr="0"/> + <data id="Var2"/> + <data id="Var3"> + {1,2,3} + </data> </datamodel> <state id="s0"> <onentry> - <foreach array="testvar3" item="testvar2"> - <assign location="testvar1" expr="testvar1+testvar2"/> + <foreach item="Var2" array="Var3"> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + Var2"/> </foreach> </onentry> - <transition cond="testvar1 == 6" target="pass"/> + <transition cond="Var1==6" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test156.scxml b/test/w3c/lua/test156.scxml index 6eaff52..7581b42 100644 --- a/test/w3c/lua/test156.scxml +++ b/test/w3c/lua/test156.scxml @@ -1,23 +1,33 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an error causes the foreach to stop execution. The second piece of executable content should cause an error, so var1 should be incremented only once --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3">{1,2,3}</data> + <data id="Var1" expr="0"/> + <data id="Var2"/> + <data id="Var3"> + {1,2,3} + </data> </datamodel> <state id="s0"> <onentry> - <foreach array="testvar3" item="testvar2"> - <assign location="testvar1" expr="testvar1+1"/> + <foreach item="Var2" array="Var3"> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> <!-- assign an illegal value to a non-existent var --> - <assign expr="!" location="testvar5"/> + <assign location="Var5" expr="return"/> </foreach> </onentry> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test158.scxml b/test/w3c/lua/test158.scxml index 8702557..21fa069 100644 --- a/test/w3c/lua/test158.scxml +++ b/test/w3c/lua/test158.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> @@ -16,6 +16,14 @@ <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test159.scxml b/test/w3c/lua/test159.scxml index 5415b31..7d0d1fa 100644 --- a/test/w3c/lua/test159.scxml +++ b/test/w3c/lua/test159.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. The send tag will raise an error so var1 should not be incremented. If it is fail, otherwise succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> - <send event="thisWillFail" target="xxxxxxxxx"/> - <assign location="testvar1" expr="testvar1+1"/> + <send event="thisWillFail" target="baz"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onentry> - <transition cond="testvar1 == 1" target="fail"/> + <transition cond="Var1==1" target="fail"/> <transition target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test172.scxml b/test/w3c/lua/test172.scxml index f8876e3..9ad166b 100644 --- a/test/w3c/lua/test172.scxml +++ b/test/w3c/lua/test172.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that eventexpr uses the current value of var1, not its initial value --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="'event1'" id="testvar1"/> + <data id="Var1" expr="'event1'"/> </datamodel> <state id="s0"> <onentry> - <assign expr="'event2'" location="testvar1"/> - <send eventexpr="testvar1"/> + <assign location="Var1" expr="'event2'"/> + <send eventexpr="Var1"/> </onentry> <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test173.scxml b/test/w3c/lua/test173.scxml index c904438..2839c26 100644 --- a/test/w3c/lua/test173.scxml +++ b/test/w3c/lua/test173.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that targetexpr uses the current value of var1, not its initial value (If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="-1" id="testvar1"/> + <data id="Var1" expr="27"/> </datamodel> <state id="s0"> <onentry> - <assign expr="'#_internal'" location="testvar1"/> - <send event="event1" targetexpr="testvar1"/> + <assign location="Var1" expr="'#_internal'"/> + <send targetexpr="Var1" event="event1"/> </onentry> <transition event="event1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test174.scxml b/test/w3c/lua/test174.scxml index 02d22b6..a3632ed 100644 --- a/test/w3c/lua/test174.scxml +++ b/test/w3c/lua/test174.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that typeexpr uses the current value of var1, not its initial value (If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="27" id="testvar1"/> + <data id="Var1" expr="27"/> </datamodel> <state id="s0"> <onentry> - <assign expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" location="testvar1"/> - <send event="event1" typeexpr="testvar1"/> + <assign location="Var1" expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"/> + <send typeexpr="Var1" event="event1"/> </onentry> <transition event="event1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test175.scxml b/test/w3c/lua/test175.scxml index 17da2c7..78d3ba7 100644 --- a/test/w3c/lua/test175.scxml +++ b/test/w3c/lua/test175.scxml @@ -1,16 +1,16 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that delayexpr uses the current value of var1, not its initial value (If it uses the initial value, event2 will be generated first, before event1. If it uses the current value, event1 will be raised first. Succeed if event1 occurs before event2, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="'0s'" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> - <assign expr="'1s'" location="testvar1"/> - <send event="event2" delayexpr="testvar1"/> - <send event="event1" delay="0ms"/> + <assign location="Var1" expr="1000"/> + <send delayexpr="Var1" event="event2"/> + <send delayexpr="'.5s'" event="event1"/> </onentry> <transition event="event1" target="s1"/> <transition event="event2" target="fail"/> @@ -19,6 +19,14 @@ event1 will be raised first. Succeed if event1 occurs before event2, otherwise <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test176.scxml b/test/w3c/lua/test176.scxml index c82be88..e70b330 100644 --- a/test/w3c/lua/test176.scxml +++ b/test/w3c/lua/test176.scxml @@ -1,31 +1,35 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that <param> uses the current value of var1, not its initial value. If the value of aParam in event1 is 2 so that var2 gets set to 2, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> - <data id="testvar2"/> + <data id="Var1" expr="1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <assign expr="2" location="testvar1"/> + <assign location="Var1" expr="2"/> <send event="event1"> - <param name="aParam" expr="testvar1"/> + <param name="aParam" expr="Var1"/> </send> </onentry> <transition event="event1" target="s1"> - <assign expr="_event.data.aParam" location="testvar2"/> + <assign location="Var2" expr="_event.data.aParam"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <onentry> - <log label="asdfasdf" expr="testvar2"/> - <log label="123123" expr="_event.data.aParam"/> - </onentry> - <transition cond="testvar2 == 2" target="pass"/> + <transition cond="Var2==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test178.scxml b/test/w3c/lua/test178.scxml index c4df704..d787a03 100644 --- a/test/w3c/lua/test178.scxml +++ b/test/w3c/lua/test178.scxml @@ -1,23 +1,27 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that multiple key/value pairs are included, even when the keys are the same. This is a manual test. The tester must look at the log output and verify that both keys are there. (This test uses the SCXML Event I/O processor, which is the only one that all platforms must support. It does not specify the message format, so we cannot test _event.raw directly. Therefore we print it out for visual inspection.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="event1"> - <param expr="2" name="testvar1"/> - <param expr="3" name="testvar1"/> + <param name="Var1" expr="2"/> + <param name="Var1" expr="3"/> </send> </onentry> - <transition event="event1" target="pass"> - <log label="_event " expr="_event:inspect(true)"/> + <transition event="event1" target="final"> + <log label="_event " expr="_event.raw"/> </transition> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <final id="final"/> + <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail"> + <onentry> + <log label="Outcome" expr="'fail'"/> + </onentry> + </final> </scxml> diff --git a/test/w3c/lua/test179.scxml b/test/w3c/lua/test179.scxml index c8647c7..942f826 100644 --- a/test/w3c/lua/test179.scxml +++ b/test/w3c/lua/test179.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that <content> can be used to populate body of a message --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="event1"> @@ -10,6 +10,14 @@ <transition event="event1" cond="_event.data == 123" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test183.scxml b/test/w3c/lua/test183.scxml index 13378c9..9b5d66a 100644 --- a/test/w3c/lua/test183.scxml +++ b/test/w3c/lua/test183.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that <send> stores the value of the sendid in idlocation. If it does, var1 has a value and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> - <send event="event1" idlocation="testvar1"/> + <send event="event1" idlocation="Var1"/> </onentry> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test185.scxml b/test/w3c/lua/test185.scxml index bb1281e..475f236 100644 --- a/test/w3c/lua/test185.scxml +++ b/test/w3c/lua/test185.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that <send> respects the delay specification. If it does, event1 arrives before event2 and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="event2" delay="100ms"/> + <send event="event2" delayexpr="'1s'"/> <send event="event1"/> </onentry> <transition event="event1" target="s1"/> @@ -14,6 +14,14 @@ <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test186.scxml b/test/w3c/lua/test186.scxml index f0a6fc4..7424f0c 100644 --- a/test/w3c/lua/test186.scxml +++ b/test/w3c/lua/test186.scxml @@ -1,28 +1,36 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the message is actually sent. If it does, aParam will have the value of 1 (even though var1 has been incremented in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> - <data id="testvar2"/> + <data id="Var1" expr="1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <send event="event1" delay="100ms"> - <param name="aParam" expr="testvar1"/> + <send event="event1" delayexpr="'1s'"> + <param name="aParam" expr="Var1"/> </send> - <assign expr="2" location="testvar1"/> + <assign location="Var1" expr="2"/> </onentry> <transition event="event1" target="s1"> - <assign expr="_event.data.aParam" location="testvar2"/> + <assign location="Var2" expr="_event.data.aParam"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition cond="testvar2 == 1" target="pass"/> + <transition cond="Var2==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test187.scxml b/test/w3c/lua/test187.scxml index 0b6daa1..c189840 100644 --- a/test/w3c/lua/test187.scxml +++ b/test/w3c/lua/test187.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that delayed <send> is not sent if the sending session terminates. In this case, a subscript is invoked which sends the event childToParent delayed by 1 second, and then terminates. The parent session, should not receive childToParent. If it does, we fail. Otherwise the 10 sec timer expires and we pass --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="400ms"/> + <send event="timeout" delayexpr="'1s'"/> </onentry> <invoke type="scxml"> <content> @@ -14,7 +14,7 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0"> <onentry> - <send event="childToParent" target="#_parent" delay="40ms"/> + <send event="childToParent" target="#_parent" delayexpr="'.5s'"/> </onentry> <transition target="subFinal"/> </state> @@ -25,6 +25,14 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis <transition event="childToParent" target="fail"/> <transition event="timeout" target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test189.scxml b/test/w3c/lua/test189.scxml index 09abfc3..ca81c95 100644 --- a/test/w3c/lua/test189.scxml +++ b/test/w3c/lua/test189.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, event1 will be processed before event2, because event1 is added to the internal queue while event2 is added to the external queue (event though event2 is generated first) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <!-- goes to the external queue --> @@ -14,6 +14,14 @@ added to the external queue (event though event2 is generated first) --> <transition event="event1" target="pass"/> <transition event="event2" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test190.scxml b/test/w3c/lua/test190.scxml index 09ad268..5a07bf3 100644 --- a/test/w3c/lua/test190.scxml +++ b/test/w3c/lua/test190.scxml @@ -1,18 +1,18 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, event1 will be processed before event2, because event1 is added to the internal queue while event2 is added to the external queue (event though event2 is generated first). we have to make sure that event2 is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="'#_scxml_'" id="testvar1"/> - <data expr="_sessionid" id="testvar2"/> + <data id="Var1" expr="'#_scxml_'"/> + <data id="Var2" expr="_sessionid"/> </datamodel> <state id="s0"> <onentry> - <assign location="testvar1" expr="testvar1..testvar2"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 .. Var2"/> <!-- goes to the external queue --> - <send event="event2" targetexpr="testvar1"/> + <send event="event2" targetexpr="Var1"/> <!-- to the internal queue --> <raise event="event1"/> <!-- this should get added to the external queue after event2 --> @@ -27,6 +27,14 @@ is actually delivered. The delayed <send> makes sure another event is generated <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test191.scxml b/test/w3c/lua/test191.scxml index 40b180a..a30b6c2 100644 --- a/test/w3c/lua/test191.scxml +++ b/test/w3c/lua/test191.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="5s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000s" event="timeout"/> </onentry> <invoke type="scxml"> <content> @@ -24,6 +24,14 @@ pass, otherwise we fail. The timer insures that some event is generated and tha <transition event="childToParent" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test192.scxml b/test/w3c/lua/test192.scxml index 22be823..a504b48 100644 --- a/test/w3c/lua/test192.scxml +++ b/test/w3c/lua/test192.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. If it receives this event, it sends sends the event eventReceived to its parent session (ths session). If we get this event, we pass, otherwise the child script eventually times out sends invoke.done and we fail. We also set a timeout in this process to make sure the test doesn't hang --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="5s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> </onentry> <invoke type="scxml" id="invokedChild"> <content> @@ -17,7 +17,7 @@ We also set a timeout in this process to make sure the test doesn't hang --> <state id="sub0"> <onentry> <send event="childToParent" target="#_parent"/> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <transition event="parentToChild" target="subFinal"> <send target="#_parent" event="eventReceived"/> @@ -39,6 +39,14 @@ We also set a timeout in this process to make sure the test doesn't hang --> <transition event="eventReceived" target="pass"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test193.scxml b/test/w3c/lua/test193.scxml index f533f5d..e8ab624 100644 --- a/test/w3c/lua/test193.scxml +++ b/test/w3c/lua/test193.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that omitting target and targetexpr of <send> when using the SCXML event i/o processor puts the event on the external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="internal"/> <!-- this should put event1 in the external queue --> <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="event1" target="fail"/> <transition event="internal" target="s1"/> @@ -16,6 +16,14 @@ SCXML event i/o processor puts the event on the external queue. --> <transition event="event1" target="pass"/> <transition event="timeout" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test194.scxml b/test/w3c/lua/test194.scxml index 989e447..392572a 100644 --- a/test/w3c/lua/test194.scxml +++ b/test/w3c/lua/test194.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <!-- should cause an error --> - <send event="event2" target="xxxxxxxxx"/> + <send target="baz" event="event2"/> <!-- this will get added to the external event queue after the error has been raised --> <send event="timeout"/> </onentry> @@ -13,6 +13,14 @@ we succeed. Otherwise we eventually timeout and fail. --> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test198.scxml b/test/w3c/lua/test198.scxml index e4a5be0..1d419d9 100644 --- a/test/w3c/lua/test198.scxml +++ b/test/w3c/lua/test198.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell what processor was used is to look at the origintype of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="event1"/> <send event="timeout"/> </onentry> - <transition event="event1" cond="_event.origintype == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> + <transition event="event1" cond=" _event.origintype == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test199.scxml b/test/w3c/lua/test199.scxml index 9d152ff..65712e9 100644 --- a/test/w3c/lua/test199.scxml +++ b/test/w3c/lua/test199.scxml @@ -1,14 +1,22 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that using an invalid send type results in error.execution --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="event1" type="27"/> + <send type="27" event="event1"/> <send event="timeout"/> </onentry> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test200.scxml b/test/w3c/lua/test200.scxml index cfb3837..3488deb 100644 --- a/test/w3c/lua/test200.scxml +++ b/test/w3c/lua/test200.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the processor supports the scxml event i/o processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event1"/> @@ -9,6 +9,14 @@ <transition event="event1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test201.scxml b/test/w3c/lua/test201.scxml index e1d6fe7..f34fd31 100644 --- a/test/w3c/lua/test201.scxml +++ b/test/w3c/lua/test201.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the processor supports the basic http event i/o processor. This is an optional test since platforms are not required to support basic http event i/o --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" event="event1" targetexpr="_ioprocessors.basichttp.location"/> + <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location" event="event1"/> <send event="timeout"/> </onentry> <transition event="event1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test205.scxml b/test/w3c/lua/test205.scxml index 3f09cb5..f5282cb 100644 --- a/test/w3c/lua/test205.scxml +++ b/test/w3c/lua/test205.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the processor doesn't change the message. We can't test that it never does this, but at least we can check that the event name and included data are the same as we sent. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> @@ -13,14 +13,22 @@ at least we can check that the event name and included data are the same as we s <send event="timeout"/> </onentry> <transition event="event1" target="s1"> - <assign expr="_event.data.aParam" location="testvar1"/> + <assign location="Var1" expr="_event.data.aParam"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test207.scxml b/test/w3c/lua/test207.scxml index 0672356..7054edf 100644 --- a/test/w3c/lua/test207.scxml +++ b/test/w3c/lua/test207.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event raised in another session, but the spec doesn't define any way to refer to an event in another process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="200ms"/> + <send event="timeout" delayexpr="'2s'"/> </onentry> <invoke type="scxml"> <content> @@ -16,8 +16,8 @@ raised in another session, but the spec doesn't define any way to refer to an ev <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0"> <onentry> - <send event="event1" id="foo" delay="100ms"/> - <send event="event2" delay="100ms"/> + <send event="event1" id="foo" delayexpr="'1s'"/> + <send event="event2" delayexpr="'1.5s'"/> <send target="#_parent" event="childToParent"/> </onentry> <transition event="event1" target="subFinal"> @@ -42,6 +42,14 @@ raised in another session, but the spec doesn't define any way to refer to an ev <transition event="timeout" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test208.scxml b/test/w3c/lua/test208.scxml index 3217f31..3f9e01d 100644 --- a/test/w3c/lua/test208.scxml +++ b/test/w3c/lua/test208.scxml @@ -1,16 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that cancel works. We cancel delayed event1. If cancel works, we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send id="foo" event="event1" delay="100ms"/> - <send event="event2" delay="100ms"/> + <send id="foo" event="event1" delayexpr="'1s'"/> + <send event="event2" delayexpr="'1.5s'"/> <cancel sendid="foo"/> </onentry> <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test210.scxml b/test/w3c/lua/test210.scxml index 2de3e1d..80421e6 100644 --- a/test/w3c/lua/test210.scxml +++ b/test/w3c/lua/test210.scxml @@ -1,20 +1,28 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that sendidexpr works with cancel. If it takes the most recent value of var1, it should cancel delayed event1. Thus we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="'bar'" id="testvar1"/> + <data id="Var1" expr="'bar'"/> </datamodel> <state id="s0"> <onentry> - <send id="foo" event="event1" delay="100ms"/> - <send event="event2" delay="100ms"/> - <assign expr="'foo'" location="testvar1"/> - <cancel sendidexpr="testvar1"/> + <send id="foo" event="event1" delayexpr="'1s'"/> + <send event="event2" delayexpr="'1.5s'"/> + <assign location="Var1" expr="'foo'"/> + <cancel sendidexpr="Var1"/> </onentry> <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test215.scxml b/test/w3c/lua/test215.scxml index 26d4819..db875be 100644 --- a/test/w3c/lua/test215.scxml +++ b/test/w3c/lua/test215.scxml @@ -1,20 +1,20 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that typexpr is evaluated at runtime. If the original value of var1 is used, the invocation will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="'foo'" id="testvar1"/> + <data id="Var1" expr="'foo'"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="5s"/> - <assign expr="'http://www.w3.org/TR/scxml/'" location="testvar1"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> + <assign location="Var1" expr="'http://www.w3.org/TR/scxml/'"/> </onentry> - <invoke typeexpr="testvar1"> + <invoke typeexpr="Var1"> <content> <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="lua"> + <scxml initial="subFinal" datamodel="lua" version="1.0"> <final id="subFinal"/> </scxml> </content> @@ -22,6 +22,14 @@ the runtime value is used, the invocation will succeed --> <transition event="done.invoke" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test216.scxml b/test/w3c/lua/test216.scxml index 5a09fc7..db285ab 100644 --- a/test/w3c/lua/test216.scxml +++ b/test/w3c/lua/test216.scxml @@ -1,20 +1,28 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that srcexpr is evaluated at runtime. If the original value of var1 is used, the invocation will fail (assuming that there is no script named 'foo'). If the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="'foo'" id="testvar1"/> + <data id="Var1" expr="'foo'"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="5s"/> - <assign expr="'file:test216sub1.scxml'" location="testvar1"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> + <assign location="Var1" expr="'file:test216sub1.scxml'"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml" srcexpr="testvar1"/> + <invoke srcexpr="Var1" type="http://www.w3.org/TR/scxml"/> <transition event="done.invoke" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test216sub1.scxml b/test/w3c/lua/test216sub1.scxml index e1d9195..f5b25ac 100644 --- a/test/w3c/lua/test216sub1.scxml +++ b/test/w3c/lua/test216sub1.scxml @@ -1,5 +1,5 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="lua"> <final id="final"/> </scxml> diff --git a/test/w3c/lua/test220.scxml b/test/w3c/lua/test220.scxml index bf1ef9d..e60d070 100644 --- a/test/w3c/lua/test220.scxml +++ b/test/w3c/lua/test220.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the scxml type is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="5s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -16,6 +16,14 @@ <transition event="done.invoke" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test223.scxml b/test/w3c/lua/test223.scxml index dcbf061..8993a17 100644 --- a/test/w3c/lua/test223.scxml +++ b/test/w3c/lua/test223.scxml @@ -1,14 +1,14 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that idlocation is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> <content> <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> <scxml initial="subFinal" version="1.0" datamodel="lua"> @@ -19,9 +19,17 @@ <transition event="*" target="s1"/> </state> <state id="s1"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test224.scxml b/test/w3c/lua/test224.scxml index acca9f6..089d749 100644 --- a/test/w3c/lua/test224.scxml +++ b/test/w3c/lua/test224.scxml @@ -1,15 +1,15 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the automatically generated id has the form stateid.platformid. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> - <data expr="'s0.'" id="testvar2"/> + <data id="Var1"/> + <data id="Var2" expr="'s0.'"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> <content> <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> <scxml version="1.0" initial="subFinal" datamodel="lua"> @@ -20,9 +20,17 @@ <transition event="*" target="s1"/> </state> <state id="s1"> - <transition cond="string.sub(testvar1,1,string.len(testvar2))==testvar2" target="pass"/> + <transition cond="string.sub(Var1,1,string.len(Var2))==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test225.scxml b/test/w3c/lua/test225.scxml index 17f80c3..3b264c1 100644 --- a/test/w3c/lua/test225.scxml +++ b/test/w3c/lua/test225.scxml @@ -1,22 +1,22 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> + <data id="Var1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> <content> <scxml initial="subFinal1" version="1.0" datamodel="lua"> <final id="subFinal1"/> </scxml> </content> </invoke> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="testvar2"> + <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var2"> <content> <scxml initial="subFinal2" version="1.0" datamodel="lua"> <final id="subFinal2"/> @@ -26,9 +26,17 @@ <transition event="*" target="s1"/> </state> <state id="s1"> - <transition cond="testvar1==testvar2" target="fail"/> + <transition cond="Var1==Var2" target="fail"/> <transition target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test226.scxml b/test/w3c/lua/test226.scxml index 35351d3..7b0c084 100644 --- a/test/w3c/lua/test226.scxml +++ b/test/w3c/lua/test226.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- this is basically just a test that invoke works correctly and that you can pass data to the invoked process. If the invoked session finds aParam==1, it exits, signalling success. otherwise it will hang and the timeout in this doc signifies failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/" src="file:test226sub1.scxml"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> </invoke> <transition event="varBound" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test226sub1.scxml b/test/w3c/lua/test226sub1.scxml index 75dde69..13feb23 100644 --- a/test/w3c/lua/test226sub1.scxml +++ b/test/w3c/lua/test226sub1.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- when invoked, if var1 has a value notify parent. Then terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> - <transition target="final" cond="testvar1 ~= nil"> + <transition cond="Var1 ~= nil" target="final"> <send target="#_parent" event="varBound"/> </transition> <transition target="final"/> diff --git a/test/w3c/lua/test228.scxml b/test/w3c/lua/test228.scxml index b81675f..ed46aa6 100644 --- a/test/w3c/lua/test228.scxml +++ b/test/w3c/lua/test228.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the invokeid is included in events returned from the invoked process. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/" id="foo"> <content> @@ -16,14 +16,22 @@ </content> </invoke> <transition event="done.invoke" target="s1"> - <assign expr="_event.invokeid" location="testvar1"/> + <assign location="Var1" expr="_event.invokeid"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition cond="testvar1 == 'foo'" target="pass"/> + <transition cond="Var1=='foo'" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test229.scxml b/test/w3c/lua/test229.scxml index b11bd8c..6b043da 100644 --- a/test/w3c/lua/test229.scxml +++ b/test/w3c/lua/test229.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that autofoward works. If the child process receives back a copy of the childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise it eventually times out and the done.invoke signals failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> <content> @@ -18,7 +18,7 @@ it eventually times out and the done.invoke signals failure --> <state id="sub0"> <onentry> <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <transition event="childToParent" target="subFinal"> <send target="#_parent" event="eventReceived"/> @@ -33,6 +33,14 @@ it eventually times out and the done.invoke signals failure --> <transition event="eventReceived" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test230.scxml b/test/w3c/lua/test230.scxml index 33b1239..ee1b53a 100644 --- a/test/w3c/lua/test230.scxml +++ b/test/w3c/lua/test230.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- a manual test that an autofowarded event has the same fields and values as the original event. the child process sends the parent process an event which is forwarded back to it. Both the parent and child process print out the contents of the event. The tester must check if they are the same and report his result. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> <content> @@ -16,7 +16,7 @@ must check if they are the same and report his result. --> <state id="sub0"> <onentry> <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="childToParent" target="subFinal"> <log label="name is " expr="_event.name"/> @@ -52,5 +52,9 @@ must check if they are the same and report his result. --> </state> </state> <final id="final"/> - <final id="fail"/> + <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail"> + <onentry> + <log label="Outcome" expr="'fail'"/> + </onentry> + </final> </scxml> diff --git a/test/w3c/lua/test232.scxml b/test/w3c/lua/test232.scxml index 8e7503e..3ce904e 100644 --- a/test/w3c/lua/test232.scxml +++ b/test/w3c/lua/test232.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a parent process can receive multiple events from a child process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -28,6 +28,14 @@ <transition event="done.invoke" target="pass"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test233.scxml b/test/w3c/lua/test233.scxml index ea6975b..656abee 100644 --- a/test/w3c/lua/test233.scxml +++ b/test/w3c/lua/test233.scxml @@ -1,14 +1,14 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that finalize markup runs before the event is processed. The invoked process will return 2 in _event.data.aParam, so that new value should be in force when we select the transtitions. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -23,12 +23,20 @@ the transtitions. --> </scxml> </content> <finalize> - <assign expr="_event.data.aParam" location="testvar1"/> + <assign location="Var1" expr="_event.data.aParam"/> </finalize> </invoke> - <transition event="childToParent" cond="testvar1 == 2" target="pass"/> + <transition event="childToParent" cond="Var1==2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test234.scxml b/test/w3c/lua/test234.scxml index a99b053..7deec7f 100644 --- a/test/w3c/lua/test234.scxml +++ b/test/w3c/lua/test234.scxml @@ -1,16 +1,16 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that only finalize markup in the invoking state runs. the first invoked process will return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. Only the first finalize should execute. So when we get to s1 var1 should have value 2 but var2 should still be set to 1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="p0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> - <data expr="1" id="testvar2"/> + <data id="Var1" expr="1"/> + <data id="Var2" expr="1"/> </datamodel> <parallel id="p0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="p01"> @@ -27,10 +27,10 @@ var2 should still be set to 1 --> </scxml> </content> <finalize> - <assign expr="_event.data.aParam" location="testvar1"/> + <assign location="Var1" expr="_event.data.aParam"/> </finalize> </invoke> - <transition event="childToParent" target="s1" cond="testvar1 == 2"/> + <transition event="childToParent" cond="Var1==2" target="s1"/> <transition event="childToParent" target="fail"/> </state> <state id="p02"> @@ -39,7 +39,7 @@ var2 should still be set to 1 --> <scxml version="1.0" initial="sub0" datamodel="lua"> <state id="sub0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="subFinal2"/> </state> @@ -47,15 +47,23 @@ var2 should still be set to 1 --> </scxml> </content> <finalize> - <assign expr="_event.data.aParam" location="testvar2"/> + <assign location="Var2" expr="_event.data.aParam"/> </finalize> </invoke> </state> </parallel> <state id="s1"> - <transition cond="testvar2 == 1" target="pass"/> + <transition cond="Var2==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test235.scxml b/test/w3c/lua/test235.scxml index 4575cc5..d12daef 100644 --- a/test/w3c/lua/test235.scxml +++ b/test/w3c/lua/test235.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that done.invoke.id event has the right id. the invoked child terminates immediately and should generate done.invoke.foo --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/" id="foo"> <content> @@ -16,6 +16,14 @@ and should generate done.invoke.foo --> <transition event="done.invoke.foo" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test236.scxml b/test/w3c/lua/test236.scxml index 333c68b..fbf3f18 100644 --- a/test/w3c/lua/test236.scxml +++ b/test/w3c/lua/test236.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that done.invoke.id event is the last event we receive. the invoked process sends childToParent in the exit handler of its final state. We should get it before the done.invoke, and we should get no events after the done.invoke. Hence timeout indicates success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="200ms"/> + <send event="timeout" delayexpr="'2s'"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -30,6 +30,14 @@ events after the done.invoke. Hence timeout indicates success --> <transition event="timeout" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test237.scxml b/test/w3c/lua/test237.scxml index b64f87f..652f55d 100644 --- a/test/w3c/lua/test237.scxml +++ b/test/w3c/lua/test237.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by the time timeout2 fires, success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout1" delay="100ms"/> + <send event="timeout1" delayexpr="'1s'"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -14,7 +14,7 @@ the time timeout2 fires, success --> <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0"> <onentry> - <send event="timeout" delay="200ms"/> + <send event="timeout" delayexpr="'2s'"/> </onentry> <transition event="timeout" target="subFinal"/> </state> @@ -26,12 +26,20 @@ the time timeout2 fires, success --> </state> <state id="s1"> <onentry> - <send event="timeout2" delay="100ms"/> + <send event="timeout2" delayexpr="'1.5s'"/> </onentry> <!-- here we should NOT get done.invoke --> <transition event="done.invoke" target="fail"/> <transition event="*" target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test239.scxml b/test/w3c/lua/test239.scxml index dc3fff9..fa97a62 100644 --- a/test/w3c/lua/test239.scxml +++ b/test/w3c/lua/test239.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that markup can be specified both by 'src' and by <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> @@ -22,6 +22,14 @@ <transition event="done.invoke" target="pass"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test239sub1.scxml b/test/w3c/lua/test239sub1.scxml index 4720f59..348e563 100644 --- a/test/w3c/lua/test239sub1.scxml +++ b/test/w3c/lua/test239sub1.scxml @@ -1,5 +1,5 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="lua"> <final id="final"/> </scxml> diff --git a/test/w3c/lua/test240.scxml b/test/w3c/lua/test240.scxml index bd79eb6..ec5ca38 100644 --- a/test/w3c/lua/test240.scxml +++ b/test/w3c/lua/test240.scxml @@ -1,26 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that datamodel values can be specified both by 'namelist' and by <param>. invoked child will return success if its Var1 is set to 1, failure otherwise. This test will fail schema validation because of the multiple occurences of Var1, but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> <content> <scxml initial="sub01" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub01"> - <transition target="subFinal1" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal1"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal1"> @@ -36,17 +36,17 @@ should run correctly. --> </state> <state id="s02"> <invoke type="http://www.w3.org/TR/scxml/"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> <content> <scxml initial="sub02" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub02"> - <transition target="subFinal2" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal2"> <send target="#_parent" event="success"/> </transition> - <transition target="subFinal1"> + <transition target="subFinal2"> <send target="#_parent" event="failure"/> </transition> </state> @@ -58,6 +58,14 @@ should run correctly. --> <transition event="failure" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test241.scxml b/test/w3c/lua/test241.scxml index e476227..ebe5afe 100644 --- a/test/w3c/lua/test241.scxml +++ b/test/w3c/lua/test241.scxml @@ -1,26 +1,26 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- The child process will return success ifits Var1 is set to 1, failure otherwise. For this test we try passing in Var1 by param and by namelist and check that we either get two successes or two failures. This test will fail schema validation due to multiple declarations of Var1, but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> <content> <scxml initial="sub01" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub01"> - <transition target="subFinal1" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal1"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal1"> @@ -36,14 +36,14 @@ Var1, but should run correctly. --> </state> <state id="s02"> <invoke type="http://www.w3.org/TR/scxml/"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> <content> <scxml initial="sub02" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub02"> - <transition target="subFinal2" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal2"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal2"> @@ -60,14 +60,14 @@ Var1, but should run correctly. --> </state> <state id="s03"> <invoke type="http://www.w3.org/TR/scxml/"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> <content> <scxml initial="sub03" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub03"> - <transition target="subFinal3" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal3"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal3"> @@ -83,6 +83,14 @@ Var1, but should run correctly. --> <transition event="success" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test242.scxml b/test/w3c/lua/test242.scxml index 36e8034..47a9ed6 100644 --- a/test/w3c/lua/test242.scxml +++ b/test/w3c/lua/test242.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that markup specified by 'src' and by <content> is treated the same way. That means that either we get done.invoke in both cases or in neither case (in which case we timeout) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout1" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <invoke type="http://www.w3.org/TR/scxml/" src="file:test242sub1.scxml"/> @@ -13,7 +13,7 @@ either we get done.invoke in both cases or in neither case (in which case we tim </state> <state id="s02"> <onentry> - <send event="timeout2" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <!-- identical to test242sub1.scxml. --> @@ -29,7 +29,7 @@ either we get done.invoke in both cases or in neither case (in which case we tim </state> <state id="s03"> <onentry> - <send event="timeout3" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <!-- identical to test242sub1.scxml. --> @@ -43,6 +43,14 @@ either we get done.invoke in both cases or in neither case (in which case we tim <transition event="timeout3" target="pass"/> <transition event="done.invoke" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test242sub1.scxml b/test/w3c/lua/test242sub1.scxml index 4720f59..348e563 100644 --- a/test/w3c/lua/test242sub1.scxml +++ b/test/w3c/lua/test242sub1.scxml @@ -1,5 +1,5 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="lua"> <final id="final"/> </scxml> diff --git a/test/w3c/lua/test243.scxml b/test/w3c/lua/test243.scxml index 7e1f854..03943f8 100644 --- a/test/w3c/lua/test243.scxml +++ b/test/w3c/lua/test243.scxml @@ -1,20 +1,20 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that datamodel values can be specified by param. test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> <content> <scxml version="1.0" initial="sub0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub0"> - <transition target="subFinal" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal"> @@ -28,6 +28,14 @@ test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> <transition event="success" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test244.scxml b/test/w3c/lua/test244.scxml index a6e6c95..292ebe1 100644 --- a/test/w3c/lua/test244.scxml +++ b/test/w3c/lua/test244.scxml @@ -1,24 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that datamodel values can be specified by namelist. invoked child will return success ifits Var1 is set to 1, failure otherwise. This test will fail schema validation due to multiple occurrences of Var1, but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="testvar1"> + <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> <content> <scxml initial="sub0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="sub0"> - <transition target="subFinal" cond="testvar1 == 1"> + <transition cond="Var1==1" target="subFinal"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal"> @@ -32,6 +32,14 @@ but should run correctly. --> <transition event="success" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test245.scxml b/test/w3c/lua/test245.scxml index cb32e22..59da5e7 100644 --- a/test/w3c/lua/test245.scxml +++ b/test/w3c/lua/test245.scxml @@ -1,19 +1,19 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that non-existent datamodel values are not set. Var2 is not defined in invoked child's datamodel. It will will return success if its Var2 remains unbound, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="3" id="testvar2"/> + <data id="Var2" expr="3"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="testvar2"> + <invoke type="http://www.w3.org/TR/scxml/" namelist="Var2"> <content> <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0"> - <transition target="subFinal" cond="testvar2 ~= nil"> + <transition cond="Var2 ~= nil" target="subFinal"> <send target="#_parent" event="failure"/> </transition> <transition target="subFinal"> @@ -27,6 +27,14 @@ invoked child's datamodel. It will will return success if its Var2 remains unbo <transition event="success" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test247.scxml b/test/w3c/lua/test247.scxml index cc7e910..eb79081 100644 --- a/test/w3c/lua/test247.scxml +++ b/test/w3c/lua/test247.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that we get done.invoke. timeout indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> <content> @@ -15,6 +15,14 @@ <transition event="done.invoke" target="pass"/> <transition event="timeout" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test250.scxml b/test/w3c/lua/test250.scxml index d522ad9..0d4a094 100644 --- a/test/w3c/lua/test250.scxml +++ b/test/w3c/lua/test250.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the onexit handlers run in the invoked process if it is cancelled. This has to be a manual test, since this process won't accept any events from the child process once it has been cancelled. Tester must examine log output from child process to determine success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="foo"/> @@ -12,7 +12,7 @@ Tester must examine log output from child process to determine success --> <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0" initial="sub01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="subFinal"/> <onexit> diff --git a/test/w3c/lua/test252.scxml b/test/w3c/lua/test252.scxml index 29ae000..1860a2e 100644 --- a/test/w3c/lua/test252.scxml +++ b/test/w3c/lua/test252.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that we don't process any events received from the invoked process once it is cancelled. child process tries to send us childToParent in an onexit handler. If we get it, we fail. timeout indicates success. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="100ms"/> + <send event="timeout" delayexpr="'1s'"/> </onentry> <transition event="timeout" target="pass"/> <transition event="childToParent" target="fail"/> @@ -19,7 +19,7 @@ timeout indicates success. --> <scxml initial="sub0" version="1.0" datamodel="lua"> <state id="sub0"> <onentry> - <send event="timeout" delay="0ms"/> + <send event="timeout" delayexpr="'.5s'"/> </onentry> <transition event="timeout" target="subFinal"/> <onexit> @@ -35,6 +35,14 @@ timeout indicates success. --> </state> <state id="s02"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test253.scxml b/test/w3c/lua/test253.scxml index 1e9b626..18f9bc8 100644 --- a/test/w3c/lua/test253.scxml +++ b/test/w3c/lua/test253.scxml @@ -1,15 +1,15 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the scxml event processor is used in both directions. If child process uses the scxml event i/o processor to communicate with us, send it an event. It will send back success if this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow 'scxml' as an alternative to the full url. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <invoke type="scxml" id="foo"> @@ -18,21 +18,21 @@ this process uses the scxml processor to send the message to it, otherwise failu processor to do so, return success, otherwise return failure. --> <scxml initial="sub0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar2"/> + <data id="Var2"/> </datamodel> <state id="sub0"> <onentry> <send target="#_parent" event="childRunning"/> </onentry> <transition event="parentToChild" target="sub1"> - <assign expr="_event.origintype" location="testvar2"/> + <assign location="Var2" expr="_event.origintype"/> </transition> </state> <state id="sub1"> - <transition target="subFinal" cond="testvar2 == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"> + <transition cond="Var2=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal"> <send target="#_parent" event="success"/> </transition> - <transition target="subFinal" cond="testvar2 == 'scxml'"> + <transition cond="Var2=='scxml'" target="subFinal"> <send target="#_parent" event="success"/> </transition> <transition target="subFinal"> @@ -45,14 +45,14 @@ this process uses the scxml processor to send the message to it, otherwise failu </invoke> <state id="s01"> <transition event="childRunning" target="s02"> - <assign expr="_event.origintype" location="testvar1"/> + <assign location="Var1" expr="_event.origintype"/> </transition> </state> <state id="s02"> - <transition target="s03" cond="testvar1 == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"> + <transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03"> <send target="#_foo" event="parentToChild"/> </transition> - <transition target="s03" cond="testvar1 == 'scxml'"> + <transition cond="Var1=='scxml'" target="s03"> <send target="#_foo" event="parentToChild"/> </transition> <transition target="fail"/> @@ -62,6 +62,14 @@ this process uses the scxml processor to send the message to it, otherwise failu <transition event="fail" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test276.scxml b/test/w3c/lua/test276.scxml index 6af188d..2db5de7 100644 --- a/test/w3c/lua/test276.scxml +++ b/test/w3c/lua/test276.scxml @@ -1,14 +1,22 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that values passed in from parent process override default values specified in the child, test276sub1.scxml. The child returns event1 if var1 has value 1, event0 if it has default value 0. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <invoke type="scxml" src="file:test276sub1.scxml"> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> </invoke> <transition event="event1" target="pass"/> <transition event="event0" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test276sub1.scxml b/test/w3c/lua/test276sub1.scxml index 7db93cd..700ad6d 100644 --- a/test/w3c/lua/test276sub1.scxml +++ b/test/w3c/lua/test276sub1.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- define var1 with default value 0. Parent will invoke this process setting var1 = 1. Return event1 if var1 == 1, event0 otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> - <transition target="final" cond="testvar1 == 1"> + <transition cond="Var1==1" target="final"> <send target="#_parent" event="event1"/> </transition> <transition target="final"> diff --git a/test/w3c/lua/test277.scxml b/test/w3c/lua/test277.scxml index 7c0301c..bf8ecbc 100644 --- a/test/w3c/lua/test277.scxml +++ b/test/w3c/lua/test277.scxml @@ -1,24 +1,32 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that platform creates undound variable if we assign an illegal value to it. Thus we can assign to it later in state s1. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="!" id="testvar1"/> + <data id="Var1" expr="return"/> </datamodel> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="error.execution" target="s1" cond="testvar1==nil"/> + <transition event="error.execution" cond="Var1 == nil" target="s1"/> <transition event="*" target="fail"/> </state> <state id="s1"> <onentry> - <assign expr="1" location="testvar1"/> + <assign location="Var1" expr="1"/> </onentry> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test278.scxml b/test/w3c/lua/test278.scxml index fdd9063..580e088 100644 --- a/test/w3c/lua/test278.scxml +++ b/test/w3c/lua/test278.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<?xml version="1.0" encoding="UTF-8"?> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <!-- test that a variable can be accessed from a state that is outside its lexical scope --> <state id="s0"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> <state id="s1"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test279.scxml b/test/w3c/lua/test279.scxml index 1eaac16..3589dc0 100644 --- a/test/w3c/lua/test279.scxml +++ b/test/w3c/lua/test279.scxml @@ -1,16 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- testing that in case of early binding variables are assigned values at init time, before the state containing them is visited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> <state id="s1"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test280.scxml b/test/w3c/lua/test280.scxml index e7cd5b1..d988d3e 100644 --- a/test/w3c/lua/test280.scxml +++ b/test/w3c/lua/test280.scxml @@ -1,25 +1,33 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test late binding. var2 won't get bound until s1 is entered, so it shouldn't have a value in s0 and accessing it should cause an error. It should get bound before the onentry code in s1 so it should be possible access it there and assign its value to var1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" binding="late" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" binding="late"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> - <transition target="s1" cond="testvar2==nil"/> + <transition cond="Var2 == nil" target="s1"/> <transition target="fail"/> </state> <state id="s1"> <datamodel> - <data expr="1" id="testvar2"/> + <data id="Var2" expr="1"/> </datamodel> <onentry> - <assign expr="testvar2" location="testvar1"/> + <assign location="Var1" expr="Var2"/> </onentry> - <transition cond="testvar1==testvar2" target="pass"/> + <transition cond="Var1==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test286.scxml b/test/w3c/lua/test286.scxml index 7c47d91..7a7627b 100644 --- a/test/w3c/lua/test286.scxml +++ b/test/w3c/lua/test286.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case where no error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0"> <onentry> - <assign expr="1" location=""/> + <assign location="foo.bar.baz " expr="1"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test287.scxml b/test/w3c/lua/test287.scxml index 68ad7a6..528fccf 100644 --- a/test/w3c/lua/test287.scxml +++ b/test/w3c/lua/test287.scxml @@ -1,16 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- a simple test that a legal value may be assigned to a valid data model location --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0" initial="s0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> - <assign expr="1" location="testvar1"/> + <assign location="Var1" expr="1"/> </onentry> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test288.scxml b/test/w3c/lua/test288.scxml index 5f44351..602f647 100644 --- a/test/w3c/lua/test288.scxml +++ b/test/w3c/lua/test288.scxml @@ -12,12 +12,12 @@ using child content --> <transition cond="Var1 == 123" target="pass"/> <transition target="fail"/> </state> - <final id="pass"> + <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="pass"> <onentry> <log label="Outcome" expr="'pass'"/> </onentry> </final> - <final id="fail"> + <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail"> <onentry> <log label="Outcome" expr="'fail'"/> </onentry> diff --git a/test/w3c/lua/test294.scxml b/test/w3c/lua/test294.scxml index 90c000e..ae3278b 100644 --- a/test/w3c/lua/test294.scxml +++ b/test/w3c/lua/test294.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a param inside donedata ends up in the data field of the done event and that content inside donedata sets the full value of the event.data field --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0" initial="s01"> - <transition event="done.state.s0" target="s1" cond="_event.data['testvar1'] == 1"> + <transition event="done.state.s0" cond="_event.data.Var1==1" target="s1"> </transition> <transition event="done.state.s0" target="fail"> </transition> @@ -15,7 +15,7 @@ that content inside donedata sets the full value of the event.data field --> </state> <final id="s02"> <donedata> - <param expr="1" name="testvar1"/> + <param name="Var1" expr="1"/> </donedata> </final> </state> @@ -29,10 +29,18 @@ that content inside donedata sets the full value of the event.data field --> </state> <final id="s12"> <donedata> - <content expr="'foo'"/> + <content xmlns:scxml="http://www.w3.org/2005/07/scxml">foo</content> </donedata> </final> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test298.scxml b/test/w3c/lua/test298.scxml index c421a59..843af8c 100644 --- a/test/w3c/lua/test298.scxml +++ b/test/w3c/lua/test298.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> @@ -15,10 +15,18 @@ </state> <final id="s02"> <donedata> - <param location="" name="testvar3"/> + <param name="Var3" location="foo.bar.baz "/> </donedata> </final> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test301.scxml b/test/w3c/lua/test301.scxml index 39aed2e..f089387 100644 --- a/test/w3c/lua/test301.scxml +++ b/test/w3c/lua/test301.scxml @@ -1,11 +1,19 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- the processor should reject this document because it can't download the script. Therefore we fail if it runs at all. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0"> - <script src="-badfile-"/> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0"> + <script src="D:\foo"/> <state id="s0"> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test302.scxml b/test/w3c/lua/test302.scxml index d004690..6b72810 100644 --- a/test/w3c/lua/test302.scxml +++ b/test/w3c/lua/test302.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a script is evaluated at load time. <conf:script> shoudl assign the value 1 to Var1. Hence, if script is evaluated at download time, Var1 has a value in the initial state s0. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> - <script>testvar1 = 1</script> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> + <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> <state id="s0"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test303.scxml b/test/w3c/lua/test303.scxml index 88f79b0..fc84f7b 100644 --- a/test/w3c/lua/test303.scxml +++ b/test/w3c/lua/test303.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the right point. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onentry> - <assign expr="2" location="testvar1"/> - <script>testvar1 = 1</script> + <assign location="Var1" expr="2"/> + <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> </onentry> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test304.scxml b/test/w3c/lua/test304.scxml index 2022f50..c6f3b64 100644 --- a/test/w3c/lua/test304.scxml +++ b/test/w3c/lua/test304.scxml @@ -1,11 +1,19 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a variable declared by a script can be accessed like any other part of the data model --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> - <script>testvar1 = 1</script> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0" initial="s0"> + <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> <state id="s0"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test307.scxml b/test/w3c/lua/test307.scxml index 3663d5f..bdf43b7 100644 --- a/test/w3c/lua/test307.scxml +++ b/test/w3c/lua/test307.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" binding="late"> +<?xml version="1.0" encoding="UTF-8"?> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0" initial="s0" binding="late"> <!-- with binding=late, in s0 we access a variable that isn't created until we get to s1. Then in s1 we access a non-existent substructure of a variable. We use log tags to report the values that both operations yield, and whether there are errors. This is a manual test, since the tester must report whether the output is the same in the two cases --> <state id="s0"> <onentry> - <log label="entering s0 value of Var 1 is: " expr="testvar1"/> + <log label="entering s0 value of Var 1 is: " expr="Var1"/> <raise event="foo"/> </onentry> <transition event="error" target="s1"> @@ -18,10 +18,10 @@ is the same in the two cases --> </state> <state id="s1"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <onentry> - <log label="entering s1, value of non-existent substructure of Var 1 is: " expr="testvar1.nonono"/> + <log label="entering s1, value of non-existent substructure of Var 1 is: " expr="Var1.bar"/> <raise event="bar"/> </onentry> <transition event="error" target="final"> diff --git a/test/w3c/lua/test309.scxml b/test/w3c/lua/test309.scxml index 8a9195c..69d61b9 100644 --- a/test/w3c/lua/test309.scxml +++ b/test/w3c/lua/test309.scxml @@ -1,10 +1,18 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an expression that cannot be interpreted as a boolean is treated as false --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0"> - <transition cond="@@@@@@@@@@@@@@@@" target="fail"/> + <transition cond="return" target="fail"/> <transition target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test310.scxml b/test/w3c/lua/test310.scxml index 89297af..d4f1f65 100644 --- a/test/w3c/lua/test310.scxml +++ b/test/w3c/lua/test310.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- simple test of the in() predicate --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="p" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="p"> <parallel id="p"> <state id="s0"> <transition cond="In('s1')" target="pass"/> @@ -8,6 +8,14 @@ </state> <state id="s1"/> </parallel> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test311.scxml b/test/w3c/lua/test311.scxml index 4eab475..ce7ebe6 100644 --- a/test/w3c/lua/test311.scxml +++ b/test/w3c/lua/test311.scxml @@ -1,14 +1,22 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that assignment to a non-existent location yields an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0"> <onentry> - <send event="timeout" delay="1s"/> - <assign expr="1" location=""/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> + <assign location="foo.bar.baz " expr="1"/> </onentry> <transition event="error.execution" target="pass"/> <transition event=".*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test312.scxml b/test/w3c/lua/test312.scxml index 7207dbe..1e20665 100644 --- a/test/w3c/lua/test312.scxml +++ b/test/w3c/lua/test312.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that assignment with an illegal expr raises an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <assign expr="!" location="testvar1"/> + <assign location="Var1" expr="return"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="pass"/> <transition event=".*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test313.scxml b/test/w3c/lua/test313.scxml index 7045cda..bdedda3 100644 --- a/test/w3c/lua/test313.scxml +++ b/test/w3c/lua/test313.scxml @@ -1,18 +1,26 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- this is a manual test. The processor is allowed to reject this doc, but if it executes it with its illegal expression, it must raise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <assign expr="!" location="testvar1"/> + <assign location="Var1" expr="return"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="pass"/> <transition event=".*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test314.scxml b/test/w3c/lua/test314.scxml index d914420..ca2c283 100644 --- a/test/w3c/lua/test314.scxml +++ b/test/w3c/lua/test314.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- this is a manual test because the processor is allowed to reject this document. But if it executes it, it should not raise an error until it gets to s03 and evaluates the illegal expr --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0" initial="s01"> <transition event="error.execution" target="fail"/> @@ -15,13 +15,21 @@ it should not raise an error until it gets to s03 and evaluates the illegal expr </state> <state id="s03"> <onentry> - <assign expr="!" location="testvar1"/> + <assign location="Var1" expr="return"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="pass"/> <transition event=".*" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test318.scxml b/test/w3c/lua/test318.scxml index dc2c885..0f5c39c 100644 --- a/test/w3c/lua/test318.scxml +++ b/test/w3c/lua/test318.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _event stays bound during the onexit and entry into the next state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> @@ -14,11 +14,19 @@ <onentry> <raise event="bar"/> <!-- _event should still be bound to 'foo' at this point --> - <assign expr="_event.name" location="testvar1"/> + <assign location="Var1" expr="_event.name"/> </onentry> - <transition cond="testvar1 == 'foo'" target="pass"/> + <transition cond="Var1=='foo'" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test319.scxml b/test/w3c/lua/test319.scxml index 06ac189..7f1e22d 100644 --- a/test/w3c/lua/test319.scxml +++ b/test/w3c/lua/test319.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _event is not bound before any event has been raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <state id="s0"> <onentry> <if cond="_event ~= nil"> @@ -12,6 +12,14 @@ <transition event="unbound" target="pass"/> <transition event="bound" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test321.scxml b/test/w3c/lua/test321.scxml index b141cd2..e3eb22d 100644 --- a/test/w3c/lua/test321.scxml +++ b/test/w3c/lua/test321.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _sessionid is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <datamodel> - <data expr="_sessionid" id="testvar1"/> + <data id="Var1" expr="_sessionid"/> </datamodel> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition cond="true" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test322.scxml b/test/w3c/lua/test322.scxml index 49e5b6e..9e8aec5 100644 --- a/test/w3c/lua/test322.scxml +++ b/test/w3c/lua/test322.scxml @@ -1,26 +1,34 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _sessionid remains bound to the same value throught the session. this means that it can't be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <datamodel> - <data expr="_sessionid" id="testvar1"/> - <data id="testvar2"/> + <data id="Var1" expr="_sessionid"/> + <data id="Var2"/> </datamodel> <state id="s0"> <transition target="s1"/> </state> <state id="s1"> <onentry> - <assign expr="'otherName'" location="_sessionid"/> + <assign location="_sessionid" expr="'otherName'"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="s2"/> <transition event="*" target="fail"/> </state> <state id="s2"> - <transition cond="testvar1 == _sessionid" target="pass"/> + <transition cond="Var1==_sessionid" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test323.scxml b/test/w3c/lua/test323.scxml index 1233bc5..52db2f9 100644 --- a/test/w3c/lua/test323.scxml +++ b/test/w3c/lua/test323.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _name is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <datamodel> - <data expr="_name" id="testvar1"/> + <data id="Var1" expr="_name"/> </datamodel> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition cond="true" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test324.scxml b/test/w3c/lua/test324.scxml index 1222cee..00d4515 100644 --- a/test/w3c/lua/test324.scxml +++ b/test/w3c/lua/test324.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _name stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <state id="s0"> - <transition target="s1" cond="_name == 'machineName'"/> + <transition cond="_name == 'machineName'" target="s1"/> <transition target="fail"/> </state> <state id="s1"> <onentry> - <assign expr="'otherName'" location="_name"/> + <assign location="_name" expr="'otherName'"/> </onentry> - <transition cond="_name == 'machineName'" target="pass"/> + <transition cond="_name == 'machineName'" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test325.scxml b/test/w3c/lua/test325.scxml index b61d2e1..2f791b4 100644 --- a/test/w3c/lua/test325.scxml +++ b/test/w3c/lua/test325.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or how to test that the entries in it do represent I/O processors, since the set that each implementation supports may be different. Suggestions welcome --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <datamodel> - <data expr="_ioprocessors" id="testvar1"/> + <data id="Var1" expr="_ioprocessors"/> </datamodel> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test326.scxml b/test/w3c/lua/test326.scxml index c6d3a17..323ca41 100644 --- a/test/w3c/lua/test326.scxml +++ b/test/w3c/lua/test326.scxml @@ -1,17 +1,17 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <datamodel> - <data expr="_ioprocessors" id="testvar1"/> - <data id="testvar2"/> + <data id="Var1" expr="_ioprocessors"/> + <data id="Var2"/> </datamodel> <state id="s0"> - <transition target="s1" cond="testvar1 ~= nil"/> + <transition cond="Var1 ~= nil" target="s1"/> <transition cond="true" target="fail"/> </state> <state id="s1"> <onentry> - <assign expr="'otherName'" location="_ioprocessors"/> + <assign location="_ioprocessors" expr="'otherName'"/> <raise event="foo"/> </onentry> <transition event="error.execution" target="s2"/> @@ -19,11 +19,19 @@ </state> <state id="s2"> <onentry> - <assign expr="_ioprocessors" location="testvar2"/> + <assign location="Var2" expr="_ioprocessors"/> </onentry> - <transition cond="testvar1 == testvar2" target="pass"/> + <transition cond="Var1==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test329.scxml b/test/w3c/lua/test329.scxml index 6f2f0a0..e26597e 100644 --- a/test/w3c/lua/test329.scxml +++ b/test/w3c/lua/test329.scxml @@ -1,46 +1,54 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that none of the system variables can be modified --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3"/> - <data id="testvar4"/> + <data id="Var1"/> + <data id="Var2"/> + <data id="Var3"/> + <data id="Var4"/> </datamodel> <state id="s0"> <onentry> <!-- get _event bound so we can use it in s1--> <raise event="foo"/> - <assign expr="_sessionid" location="testvar1"/> - <assign expr="-1" location="_sessionid"/> + <assign location="Var1" expr="_sessionid"/> + <assign location="_sessionid" expr="27"/> </onentry> - <transition event="foo" target="s1" cond="testvar1 == _sessionid"/> + <transition event="foo" cond="Var1==_sessionid" target="s1"/> <transition event="*" target="fail"/> </state> <state id="s1"> <onentry> - <assign expr="_event" location="testvar2"/> - <assign expr="27" location="_event"/> + <assign location="Var2" expr="_event"/> + <assign location="_event" expr="27"/> </onentry> - <transition target="s2" cond="testvar2 == _event"/> + <transition cond="Var2==_event" target="s2"/> <transition target="fail"/> </state> <state id="s2"> <onentry> - <assign expr="_name" location="testvar3"/> - <assign expr="27" location="_name"/> + <assign location="Var3" expr="_name"/> + <assign location="_name" expr="27"/> </onentry> - <transition target="s3" cond="testvar3 == _name"/> + <transition cond="Var3==_name" target="s3"/> <transition target="fail"/> </state> <state id="s3"> <onentry> - <assign expr="_ioprocessors" location="testvar4"/> - <assign expr="27" location="_ioprocessors"/> + <assign location="Var4" expr="_ioprocessors"/> + <assign location="_ioprocessors" expr="27"/> </onentry> - <transition cond="testvar4 == _ioprocessors" target="pass"/> + <transition cond="Var4==_ioprocessors" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test330.scxml b/test/w3c/lua/test330.scxml index 9e79f3a..bb88d6d 100644 --- a/test/w3c/lua/test330.scxml +++ b/test/w3c/lua/test330.scxml @@ -1,20 +1,28 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- check that the required fields are present in both internal and external events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua" name="machineName"> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="foo" target="s1" cond="_event.name~=nil and _event.type~=nil and _event.sendid~=nil and _event.origin~=nil and _event.invokeid~=nil"/> + <transition event="foo" cond="_event.name ~= nil and _event.type ~= nil" target="s1"/> <transition event="*" target="fail"/> </state> <state id="s1"> <onentry> <send event="foo"/> </onentry> - <transition event="foo" cond="_event.name~=nil and _event.type~=nil and _event.sendid~=nil and _event.origin~=nil and _event.invokeid~=nil" target="pass"/> + <transition event="foo" cond="_event.name ~= nil and _event.type ~= nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test331.scxml b/test/w3c/lua/test331.scxml index 7598bf4..7178df4 100644 --- a/test/w3c/lua/test331.scxml +++ b/test/w3c/lua/test331.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" name="machineName" datamodel="lua"> +<?xml version="1.0" encoding="UTF-8"?> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0" name="machineName"> <!-- test that _event.type is set correctly for internal, platform, and external events --> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> @@ -10,26 +10,26 @@ <raise event="foo"/> </onentry> <transition event="foo" target="s1"> - <assign expr="_event.type" location="testvar1"/> + <assign location="Var1" expr="_event.type"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition target="s2" cond="testvar1 == 'internal'"/> + <transition cond="Var1=='internal'" target="s2"/> <transition target="fail"/> </state> <state id="s2"> <onentry> <!-- this will generate an error, which is a platform event --> - <assign expr="1" location=""/> + <assign location="foo.bar.baz " expr="1"/> </onentry> <transition event="error" target="s3"> - <assign expr="_event.type" location="testvar1"/> + <assign location="Var1" expr="_event.type"/> </transition> <transition event="*" target="fail"/> </state> <state id="s3"> - <transition target="s4" cond="testvar1 == 'platform'"/> + <transition cond="Var1=='platform'" target="s4"/> <transition target="fail"/> </state> <state id="s4"> @@ -38,14 +38,22 @@ <send event="foo"/> </onentry> <transition event="foo" target="s5"> - <assign expr="_event.type" location="testvar1"/> + <assign location="Var1" expr="_event.type"/> </transition> <transition event="*" target="fail"/> </state> <state id="s5"> - <transition cond="testvar1 == 'external'" target="pass"/> + <transition cond="Var1=='external'" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test332.scxml b/test/w3c/lua/test332.scxml index ebdd390..6d9f95d 100644 --- a/test/w3c/lua/test332.scxml +++ b/test/w3c/lua/test332.scxml @@ -1,26 +1,34 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that sendid is present in error events triggered by send errors --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua" name="machineName"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> + <data id="Var1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> <!-- this will raise an error and also store the sendid in var1 --> - <send event="foo" idlocation="'testvar1'" target="xxxxxxxxx"/> + <send target="baz" event="foo" idlocation="Var1"/> </onentry> <transition event="error" target="s1"> <!-- get the sendid out of the error event --> - <assign expr="_event.sendid" location="testvar2"/> + <assign location="Var2" expr="_event.sendid"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> <!-- make sure that the sendid in the error event matches the one generated when send executed --> - <transition cond="testvar1==testvar2" target="pass"/> + <transition cond="Var1==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test333.scxml b/test/w3c/lua/test333.scxml index 96ea4bf..bc1ce5d 100644 --- a/test/w3c/lua/test333.scxml +++ b/test/w3c/lua/test333.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- make sure sendid is blank in a non-error event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua" name="machineName"> <state id="s0"> <onentry> <send event="foo"/> </onentry> - <transition event="foo" cond="_event.sendid == ''" target="pass"/> + <transition event="foo" cond="_event.sendid == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test335.scxml b/test/w3c/lua/test335.scxml index d31a209..e0364ec 100644 --- a/test/w3c/lua/test335.scxml +++ b/test/w3c/lua/test335.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that origin field is blank for internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua" name="machineName"> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="foo" cond="_event.origin == ''" target="pass"/> + <transition event="foo" cond="_event.origin == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test336.scxml b/test/w3c/lua/test336.scxml index fe0899f..5994f34 100644 --- a/test/w3c/lua/test336.scxml +++ b/test/w3c/lua/test336.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In this case it's the same session, so if we get bar we succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <state id="s0"> <onentry> <send event="foo"/> </onentry> <transition event="foo" target="s1"> - <send event="bar" targetexpr="_event.origin" typeexpr="_event.origintype"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" event="bar" targetexpr="_event.origin" typeexpr="_event.origintype"/> </transition> <transition event="*" target="fail"/> </state> @@ -18,6 +18,14 @@ this case it's the same session, so if we get bar we succeed --> <transition event="bar" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test337.scxml b/test/w3c/lua/test337.scxml index 641838b..8f38c6e 100644 --- a/test/w3c/lua/test337.scxml +++ b/test/w3c/lua/test337.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that origintype is blank on internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0" name="machineName"> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="foo" cond="_event.origintype == ''" target="pass"/> + <transition event="foo" cond="_event.origintype == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test338.scxml b/test/w3c/lua/test338.scxml index 5772da0..0031bf3 100644 --- a/test/w3c/lua/test338.scxml +++ b/test/w3c/lua/test338.scxml @@ -1,18 +1,18 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the case where the invoke doesn't work correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> + <data id="Var1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="'testvar1'"> + <invoke idlocation="Var1" type="http://www.w3.org/TR/scxml/"> <content> - <scxml initial="sub0" version="1.0" name="machineName" datamodel="lua"> + <scxml initial="sub0" version="1.0" datamodel="lua" name="machineName"> <final id="sub0"> <onentry> <send target="#_parent" event="event1"/> @@ -22,14 +22,22 @@ case where the invoke doesn't work correctly --> </content> </invoke> <transition event="event1" target="s1"> - <assign expr="_event.invokeid" location="testvar2"/> + <assign location="Var2" expr="_event.invokeid"/> </transition> <transition event="event0" target="fail"/> </state> <state id="s1"> - <transition cond="testvar1==testvar2" target="pass"/> + <transition cond="Var1==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test339.scxml b/test/w3c/lua/test339.scxml index 3c60863..920ed15 100644 --- a/test/w3c/lua/test339.scxml +++ b/test/w3c/lua/test339.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <state id="s0"> <onentry> <raise event="foo"/> </onentry> - <transition event="foo" cond="_event.invokeid == ''" target="pass"/> + <transition event="foo" cond="_event.invokeid == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test342.scxml b/test/w3c/lua/test342.scxml index dce833b..ddb5c2c 100644 --- a/test/w3c/lua/test342.scxml +++ b/test/w3c/lua/test342.scxml @@ -1,23 +1,31 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that eventexpr works and sets the name field of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <datamodel> - <data expr="'foo'" id="testvar1"/> - <data id="testvar2"/> + <data id="Var1" expr="'foo'"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <send eventexpr="testvar1"/> + <send eventexpr="Var1"/> </onentry> <transition event="foo" target="s1"> - <assign expr="_event.name" location="testvar2"/> + <assign location="Var2" expr="_event.name"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition cond="testvar1==testvar2" target="pass"/> + <transition cond="Var1==Var2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test343.scxml b/test/w3c/lua/test343.scxml index b8da21c..f2cdfcc 100644 --- a/test/w3c/lua/test343.scxml +++ b/test/w3c/lua/test343.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that illegal <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0" initial="s01"> <!-- we should get the error before the done event --> <transition event="error.execution" target="s1"/> @@ -12,7 +12,7 @@ </state> <final id="s02"> <donedata> - <param name="someParam" location=""/> + <param location="foo.bar.baz " name="someParam"/> </donedata> </final> </state> @@ -22,6 +22,14 @@ <transition event="done.state.s0" cond="_event.data == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test344.scxml b/test/w3c/lua/test344.scxml index 467a824..3ba91fc 100644 --- a/test/w3c/lua/test344.scxml +++ b/test/w3c/lua/test344.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a cond expression that cannot be evaluated as a boolean cond expression evaluates to false and causes error.execution to be raised. In some languages, any valid expression/object can be converted to a boolean, so conf:nonBoolean will have to be mapped onto something that produces a syntax error or something similarly invalid --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0"> - <transition cond="@@@@@@@@@@@@@@@@" target="fail"/> + <transition cond="return" target="fail"/> <transition target="s1"/> </state> <state id="s1"> @@ -15,6 +15,14 @@ have to be mapped onto something that produces a syntax error or something simil <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test346.scxml b/test/w3c/lua/test346.scxml index be7e2dd..e3eebb6 100644 --- a/test/w3c/lua/test346.scxml +++ b/test/w3c/lua/test346.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that any attempt to change the value of a system variable causes error.execution to be raised. Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" name="machineName" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" name="machineName"> <state id="s0"> <onentry> - <assign expr="'otherName'" location="_sessionid"/> + <assign location="_sessionid" expr="'otherName'"/> <raise event="event1"/> </onentry> <transition event="error.execution" target="s1"/> @@ -13,7 +13,7 @@ to dispose of eventn in the next state, hence the targetless transitions (which </state> <state id="s1"> <onentry> - <assign expr="'otherName'" location="_event"/> + <assign location="_event" expr="'otherName'"/> <raise event="event2"/> </onentry> <!-- throw out event1 if it's still around --> @@ -25,7 +25,7 @@ to dispose of eventn in the next state, hence the targetless transitions (which </state> <state id="s2"> <onentry> - <assign expr="'otherName'" location="_ioprocessors"/> + <assign location="_ioprocessors" expr="'otherName'"/> <raise event="event3"/> </onentry> <transition event="event2"/> @@ -34,13 +34,21 @@ to dispose of eventn in the next state, hence the targetless transitions (which </state> <state id="s3"> <onentry> - <assign expr="'otherName'" location="_name"/> + <assign location="_name" expr="'otherName'"/> <raise event="event4"/> </onentry> <transition event="event3"/> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test347.scxml b/test/w3c/lua/test347.scxml index 1f33911..4184032 100644 --- a/test/w3c/lua/test347.scxml +++ b/test/w3c/lua/test347.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the scxml event I/O processor works by sending events back and forth between an invoked child and its parent process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0" initial="s01"> <invoke id="child" type="scxml"> <content> - <scxml initial="sub0" version="1.0" name="machineName" datamodel="lua"> + <scxml initial="sub0" version="1.0" datamodel="lua" name="machineName"> <state id="sub0"> <onentry> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_parent" event="childToParent"/> @@ -17,7 +17,7 @@ and its parent process --> </content> </invoke> <onentry> - <send delay="20s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="20000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> @@ -31,6 +31,14 @@ and its parent process --> <transition event="error" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test348.scxml b/test/w3c/lua/test348.scxml index af7c220..cecb099 100644 --- a/test/w3c/lua/test348.scxml +++ b/test/w3c/lua/test348.scxml @@ -1,5 +1,5 @@ -<?xml version="1.0" standalone="no"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<?xml version="1.0" encoding="UTF-8"?> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <!-- test that event param of send sets the name of the event --> <state id="s0"> <onentry> @@ -8,6 +8,14 @@ <transition event="s0Event" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test349.scxml b/test/w3c/lua/test349.scxml index 78a2487..e418318 100644 --- a/test/w3c/lua/test349.scxml +++ b/test/w3c/lua/test349.scxml @@ -1,25 +1,33 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that value in origin field can be used to send an event back to the sender --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> </onentry> <transition event="s0Event" target="s2"> - <assign expr="_event.origin" location="testvar1"/> + <assign location="Var1" expr="_event.origin"/> </transition> <transition event="*" target="fail"/> </state> <state id="s2"> <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event2" targetexpr="testvar1"/> + <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event2"/> </onentry> <transition event="s0Event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test350.scxml b/test/w3c/lua/test350.scxml index 73e7ca8..615347c 100644 --- a/test/w3c/lua/test350.scxml +++ b/test/w3c/lua/test350.scxml @@ -1,20 +1,28 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that target value is used to decide what session to deliver the event to. A session should be able to send an event to itself using its own session ID as the target --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="'#_scxml_'" id="testvar1"/> - <data expr="_sessionid" id="testvar2"/> + <data id="Var1" expr="'#_scxml_'"/> + <data id="Var2" expr="_sessionid"/> </datamodel> <state id="s0"> <onentry> - <assign location="testvar1" expr="testvar1..testvar2"/> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event" targetexpr="testvar1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 .. Var2"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> + <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event"/> </onentry> <transition event="s0Event" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test351.scxml b/test/w3c/lua/test351.scxml index e839548..783d551 100644 --- a/test/w3c/lua/test351.scxml +++ b/test/w3c/lua/test351.scxml @@ -1,39 +1,47 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that sendid is set in event if present in send, blank otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1"/> - <data id="testvar2"/> + <data id="Var1"/> + <data id="Var2"/> </datamodel> <state id="s0"> <onentry> - <send delay="5s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" id="send1" event="s0Event"/> </onentry> <transition event="s0Event" target="s1"> - <assign expr="_event.sendid" location="testvar1"/> + <assign location="Var1" expr="_event.sendid"/> </transition> <transition event="*" target="fail"> </transition> </state> <state id="s1"> - <transition target="s2" cond="testvar1 == 'send1'"/> + <transition cond="Var1=='send1'" target="s2"/> <transition target="fail"/> </state> <state id="s2"> <onentry> - <send delay="5s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> <send event="s0Event2"/> </onentry> <transition event="s0Event2" target="s3"> - <assign expr="_event.sendid" location="testvar2"/> + <assign location="Var2" expr="_event.sendid"/> </transition> <transition event="*" target="fail"/> </state> <state id="s3"> - <transition cond="testvar2==nil or testvar2==''" target="pass"/> + <transition cond="Var2 == nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test352.scxml b/test/w3c/lua/test352.scxml index ea76b20..c503e4a 100644 --- a/test/w3c/lua/test352.scxml +++ b/test/w3c/lua/test352.scxml @@ -1,24 +1,32 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test the origintype is 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor' --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> - <send delay="5s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> </onentry> <transition event="s0Event" target="s1"> - <assign expr="_event.origintype" location="testvar1"/> + <assign location="Var1" expr="_event.origintype"/> </transition> <transition event="*" target="fail"> </transition> </state> <state id="s1"> - <transition cond="testvar1 == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> + <transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test354.scxml b/test/w3c/lua/test354.scxml index 4acecf3..bfbdcea 100644 --- a/test/w3c/lua/test354.scxml +++ b/test/w3c/lua/test354.scxml @@ -1,44 +1,52 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that event.data can be populated using both namelist, param and <content> and that correct values are used --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> - <data id="testvar2"/> - <data id="testvar3"/> + <data id="Var1" expr="1"/> + <data id="Var2"/> + <data id="Var3"/> </datamodel> <state id="s0"> <onentry> - <send delay="5s" event="timeout"/> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="testvar1"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> + <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="Var1"> <param name="param1" expr="2"/> </send> </onentry> <transition event="event1" target="s1"> - <assign expr="_event.data.testvar1" location="testvar2"/> - <assign expr="_event.data.param1" location="testvar3"/> + <assign location="Var2" expr="_event.data.Var1"/> + <assign location="Var3" expr="_event.data.param1"/> </transition> <transition event="*" target="fail"> </transition> </state> <state id="s1"> - <transition target="s2" cond="testvar2 == 1"/> + <transition cond="Var2==1" target="s2"/> <transition target="fail"/> </state> <state id="s2"> - <transition target="s3" cond="testvar3 == 2"/> + <transition cond="Var3==2" target="s3"/> <transition target="fail"/> </state> <state id="s3"> <onentry> - <send delay="5s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> <send event="event2"> - <content>foo</content> + <content>123</content> </send> </onentry> - <transition event="event2" cond="_event.data == 'foo'" target="pass"/> + <transition event="event2" cond="_event.data == 123" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test355.scxml b/test/w3c/lua/test355.scxml index 914f9f4..3b006a4 100644 --- a/test/w3c/lua/test355.scxml +++ b/test/w3c/lua/test355.scxml @@ -1,12 +1,20 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <state id="s0"> <transition target="pass"/> </state> <state id="s1"> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test364.scxml b/test/w3c/lua/test364.scxml index 94d86bb..4cfd36f 100644 --- a/test/w3c/lua/test364.scxml +++ b/test/w3c/lua/test364.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that default initial states are entered when a compound state is entered. First we test the 'initial' attribute, then the initial element, then default to the first child in document order. If we get to s01111 we succeed, if any other state, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" initial="s1" version="1.0"> <state id="s1" initial="s11p112 s11p122"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s11" initial="s111"> @@ -66,6 +66,14 @@ If we get to s01111 we succeed, if any other state, failure. --> </state> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test372.scxml b/test/w3c/lua/test372.scxml index 9a04396..06228b0 100644 --- a/test/w3c/lua/test372.scxml +++ b/test/w3c/lua/test372.scxml @@ -1,25 +1,33 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that entering a final state generates done.state.parentid after executing the onentry elements. Var1 should be set to 2 (but not 3) by the time the event is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0" initial="s0final"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> - <transition event="done.state.s0" cond="testvar1 == 2" target="pass"/> + <transition event="done.state.s0" cond="Var1==2" target="pass"/> <transition event="*" target="fail"/> <final id="s0final"> <onentry> - <assign expr="2" location="testvar1"/> + <assign location="Var1" expr="2"/> </onentry> <onexit> - <assign expr="3" location="testvar1"/> + <assign location="Var1" expr="3"/> </onexit> </final> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test375.scxml b/test/w3c/lua/test375.scxml index aee863e..ef73ca5 100644 --- a/test/w3c/lua/test375.scxml +++ b/test/w3c/lua/test375.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <raise event="event1"/> @@ -15,6 +15,14 @@ <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test376.scxml b/test/w3c/lua/test376.scxml index d0f6911..919667a 100644 --- a/test/w3c/lua/test376.scxml +++ b/test/w3c/lua/test376.scxml @@ -1,20 +1,28 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <send event="event1" target="xxxxxxxxx"/> + <send target="baz" event="event1"/> </onentry> <onentry> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onentry> - <transition cond="testvar1 == 2" target="pass"/> + <transition cond="Var1==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test377.scxml b/test/w3c/lua/test377.scxml index f5bd0b0..8d12ef3 100644 --- a/test/w3c/lua/test377.scxml +++ b/test/w3c/lua/test377.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <state id="s0"> <onexit> <raise event="event1"/> @@ -18,6 +18,14 @@ <transition event="event2" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test378.scxml b/test/w3c/lua/test378.scxml index 56ea4da..553dd02 100644 --- a/test/w3c/lua/test378.scxml +++ b/test/w3c/lua/test378.scxml @@ -1,23 +1,31 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onexit> - <send event="event1" target="xxxxxxxxx"/> + <send target="baz" event="event1"/> </onexit> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition target="s1"/> </state> <state id="s1"> - <transition cond="testvar1 == 2" target="pass"/> + <transition cond="Var1==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test387.scxml b/test/w3c/lua/test387.scxml index 7ea485f..29ac764 100644 --- a/test/w3c/lua/test387.scxml +++ b/test/w3c/lua/test387.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s3" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s3" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <transition event="enteringS011" target="s4"/> <transition event="*" target="fail"/> @@ -73,13 +73,21 @@ transition to s1's default deep history state. We should end up in s122, generat </state> <state id="s3"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition target="s0HistShallow"/> </state> <state id="s4"> <transition target="s1HistDeep"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test388.scxml b/test/w3c/lua/test388.scxml index 35bd399..253cbe2 100644 --- a/test/w3c/lua/test388.scxml +++ b/test/w3c/lua/test388.scxml @@ -1,27 +1,27 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that history states works correctly. The counter Var1 counts how many times we have entered s0. The initial state is s012. We then transition to s1, which transitions to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition to s02, which transitions to s0's shallow history state. That should have value s01, and its initial state is s011, so we should get entering.s011, otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s012" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s012" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0" initial="s01"> <onentry> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onentry> <!-- the first time through, go to s1, setting a timer just in case something hangs --> - <transition event="entering.s012" target="s1" cond="testvar1 == 1"> - <send event="timeout" delay="2s"/> + <transition event="entering.s012" cond="Var1==1" target="s1"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </transition> <!-- the second time, we should get entering.s012. If so, go to s2, otherwise fail --> - <transition event="entering.s012" target="s2" cond="testvar1 == 2"/> - <transition event="entering" cond="testvar1 == 2" target="fail"/> + <transition event="entering.s012" cond="Var1==2" target="s2"/> + <transition event="entering" cond="Var1==2" target="fail"/> <!-- the third time we should get entering-s011. If so, pass, otherwise fail --> - <transition event="entering.s011" cond="testvar1 == 3" target="pass"/> - <transition event="entering" cond="testvar1 == 3" target="fail"/> + <transition event="entering.s011" cond="Var1==3" target="pass"/> + <transition event="entering" cond="Var1==3" target="fail"/> <!-- if we timeout, the state machine is hung somewhere, so fail --> <transition event="timeout" target="fail"/> <history type="shallow" id="s0HistShallow"> @@ -61,6 +61,14 @@ state is s011, so we should get entering.s011, otherwise failure.--> <state id="s2"> <transition target="s0HistShallow"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test396.scxml b/test/w3c/lua/test396.scxml index 1b042a2..04dd351 100644 --- a/test/w3c/lua/test396.scxml +++ b/test/w3c/lua/test396.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the value in _event.name matches the event name used to match against transitions --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <raise event="foo"/> @@ -8,6 +8,14 @@ <transition event="foo" cond="_event.name == 'foo'" target="pass"/> <transition event="foo" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test399.scxml b/test/w3c/lua/test399.scxml index 5771fb7..29114d3 100644 --- a/test/w3c/lua/test399.scxml +++ b/test/w3c/lua/test399.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the event name matching works correctly, including prefix matching and the fact that the event attribute of transition may contain multiple event designators. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <!-- this will catch the failure case --> <transition event="timeout" target="fail"/> @@ -52,6 +52,14 @@ that the event attribute of transition may contain multiple event designators. <transition event="*" target="pass"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test401.scxml b/test/w3c/lua/test401.scxml index f068ac9..dacf887 100644 --- a/test/w3c/lua/test401.scxml +++ b/test/w3c/lua/test401.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform and operation that raises an error. Then check that the error event is processed first, even though it was raised second --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="foo"/> <!-- assigning to a non-existent location should raise an error --> - <assign expr="2" location=""/> + <assign location="foo.bar.baz " expr="2"/> </onentry> <transition event="foo" target="fail"/> <transition event="error" target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test402.scxml b/test/w3c/lua/test402.scxml index 11ce8ea..47ea7c5 100644 --- a/test/w3c/lua/test402.scxml +++ b/test/w3c/lua/test402.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they are pulled off the internal queue in order, and that prefix matching works on them. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> <!-- catch the failure case --> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> @@ -13,7 +13,7 @@ are pulled off the internal queue in order, and that prefix matching works on th <!-- the first internal event. The error will be the second, and event2 will be the third --> <raise event="event1"/> <!-- assigning to a non-existent location should raise an error --> - <assign expr="2" location=""/> + <assign location="foo.bar.baz " expr="2"/> </onentry> <transition event="event1" target="s02"> <raise event="event2"/> @@ -29,6 +29,14 @@ are pulled off the internal queue in order, and that prefix matching works on th <transition event="*" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test403a.scxml b/test/w3c/lua/test403a.scxml index 767197f..1653c35 100644 --- a/test/w3c/lua/test403a.scxml +++ b/test/w3c/lua/test403a.scxml @@ -1,4 +1,4 @@ -<?xml version="1.0" standalone="no"?> +<?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 @@ -6,11 +6,11 @@ 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" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> <!-- catch the failure case --> - <send event="timeout" delay="1s"/> + <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"/> @@ -33,6 +33,14 @@ matching transition in the child. --> <transition event="event2" cond="false" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test403b.scxml b/test/w3c/lua/test403b.scxml index 2de4d9a..e1e3dc5 100644 --- a/test/w3c/lua/test403b.scxml +++ b/test/w3c/lua/test403b.scxml @@ -1,15 +1,15 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that 'optimally enabled set' really is a set, specifically that if a transition is optimally enabled in two different states, it is taken only once. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0" initial="p0"> <!-- this transition should never be taken because a transition in a lower state should always be selected --> <transition event="event1"> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </transition> <parallel id="p0"> <onentry> @@ -18,15 +18,23 @@ two different states, it is taken only once. --> </onentry> <!-- this transition will be selected by both states p0s1 and p0s2, but should be executed only once --> <transition event="event1"> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </transition> <state id="p0s1"> - <transition event="event2" cond="testvar1 == 1" target="pass"/> + <transition event="event2" cond="Var1==1" target="pass"/> <transition event="event2" target="fail"/> </state> <state id="p0s2"/> </parallel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test403c.scxml b/test/w3c/lua/test403c.scxml index 200e0ff..bb06c2e 100644 --- a/test/w3c/lua/test403c.scxml +++ b/test/w3c/lua/test403c.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test 'optimally enabled set', specifically that preemption works correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0" initial="p0"> <onentry> <raise event="event1"/> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="event2" target="fail"/> <transition event="timeout" target="fail"/> @@ -31,15 +31,23 @@ <state id="p0s4"> <!-- this transition never gets preempted, should fire twice --> <transition event="*"> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </transition> </state> </parallel> </state> <state id="s1"> - <transition cond="testvar1 == 2" target="pass"/> + <transition cond="Var1==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test404.scxml b/test/w3c/lua/test404.scxml index 8803483..254c912 100644 --- a/test/w3c/lua/test404.scxml +++ b/test/w3c/lua/test404.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties before the executable content in the transitions. event1, event2, event3, event4 should be raised in that order when s01p is exited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01p"> <parallel id="s01p"> <onexit> @@ -43,6 +43,14 @@ <transition event="*" target="fail"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test405.scxml b/test/w3c/lua/test405.scxml index 54dde5f..6b79e52 100644 --- a/test/w3c/lua/test405.scxml +++ b/test/w3c/lua/test405.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the executable content in the transitions is executed in document order after the states are exited. event1, event2, event3, event4 should be raised in that order when the state machine is entered --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01p"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <parallel id="s01p"> @@ -53,6 +53,14 @@ state machine is entered --> </state> </state> <!-- end s01 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test406.scxml b/test/w3c/lua/test406.scxml index eb4fa7b..c7e6b00 100644 --- a/test/w3c/lua/test406.scxml +++ b/test/w3c/lua/test406.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Test that states are entered in entry order (parents before children with document order used to break ties) after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that order when the transition in s01 is taken --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s01"> @@ -47,6 +47,14 @@ order when the transition in s01 is taken --> </state> </state> <!-- end s0 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test407.scxml b/test/w3c/lua/test407.scxml index 2b459d8..833768b 100644 --- a/test/w3c/lua/test407.scxml +++ b/test/w3c/lua/test407.scxml @@ -1,19 +1,27 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- a simple test that onexit handlers work. var1 should be incremented when we leave s0 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s0"> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition target="s1"/> </state> <state id="s1"> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test409.scxml b/test/w3c/lua/test409.scxml index ccf9d73..81a2ddc 100644 --- a/test/w3c/lua/test409.scxml +++ b/test/w3c/lua/test409.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that states are removed from the active states list as they are exited. When s01's onexit handler fires, s011 should not be on the active state list, so in(S011) should be false, and event1 should not be raised. Therefore the timeout should fire to indicate success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="100ms"/> + <send event="timeout" delayexpr="'1s'"/> </onentry> <transition event="timeout" target="pass"/> <transition event="event1" target="fail"/> @@ -23,6 +23,14 @@ be raised. Therefore the timeout should fire to indicate success --> <state id="s02"/> </state> <!-- end s0 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test411.scxml b/test/w3c/lua/test411.scxml index 7cec20a..0ce82e6 100644 --- a/test/w3c/lua/test411.scxml +++ b/test/w3c/lua/test411.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that states are added to the active states list as they are entered and before onentry handlers are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or timeout also indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> <if cond="In('s01')"> <raise event="event1"/> </if> @@ -23,6 +23,14 @@ timeout also indicates failure --> </state> </state> <!-- end s0 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test412.scxml b/test/w3c/lua/test412.scxml index a55514b..69879e8 100644 --- a/test/w3c/lua/test412.scxml +++ b/test/w3c/lua/test412.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that executable content in the <initial> transition executes after the onentry handler on the state and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="1s"/> + <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"/> @@ -39,6 +39,14 @@ and before the onentry handler of the child states. Event1, event2, and event3 </state> </state> <!-- end s0 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test413.scxml b/test/w3c/lua/test413.scxml index 7b2563b..dbe637c 100644 --- a/test/w3c/lua/test413.scxml +++ b/test/w3c/lua/test413.scxml @@ -1,8 +1,8 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the state machine is put into the configuration specified by the initial element, without regard to any other defaults. we should start off in s2p111 and s2p122. the atomic states we should not enter all have immediate transitions to failure in them --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s2p112 s2p122" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s2p112 s2p122" version="1.0" datamodel="lua"> <state id="s1"> <transition target="fail"/> </state> @@ -31,6 +31,14 @@ states we should not enter all have immediate transitions to failure in them --> </parallel> </state> <!-- end s2 --> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test415.scxml b/test/w3c/lua/test415.scxml index c2e883a..7e2a266 100644 --- a/test/w3c/lua/test415.scxml +++ b/test/w3c/lua/test415.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Test that the state machine halts when it enters a top-level final state. Since the initial state is a final state, this machine should halt immediately without processing "event1" which is raised in the final state's on-entry handler. This is a manual test since there is no platform-independent way to test that event1 is not processed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="lua"> <final id="final"> <onentry> <raise event="event1"/> diff --git a/test/w3c/lua/test416.scxml b/test/w3c/lua/test416.scxml index b3ba383..a8a6ec3 100644 --- a/test/w3c/lua/test416.scxml +++ b/test/w3c/lua/test416.scxml @@ -1,9 +1,9 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the done.state.id gets generated when we enter the final state of a compound state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="lua"> <state id="s1" initial="s11"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s11" initial="s111"> @@ -14,6 +14,14 @@ <final id="s11final"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test417.scxml b/test/w3c/lua/test417.scxml index 5a500f7..37019b0 100644 --- a/test/w3c/lua/test417.scxml +++ b/test/w3c/lua/test417.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that we get the done.state.id event when all of a parallel elements children enter final states. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="lua"> <state id="s1" initial="s1p1"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <parallel id="s1p1"> @@ -23,6 +23,14 @@ parallel elements children enter final states. --> </state> </parallel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test419.scxml b/test/w3c/lua/test419.scxml index 1043b31..19d4cfa 100644 --- a/test/w3c/lua/test419.scxml +++ b/test/w3c/lua/test419.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that eventless transitions take precedence over event-driven ones --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="lua"> <state id="s1"> <onentry> <raise event="internalEvent"/> @@ -9,6 +9,14 @@ <transition event="*" target="fail"/> <transition target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test421.scxml b/test/w3c/lua/test421.scxml index 358d260..5a363b4 100644 --- a/test/w3c/lua/test421.scxml +++ b/test/w3c/lua/test421.scxml @@ -1,7 +1,7 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that internal events take priority over external ones, and that the processor keeps pulling off internal events until it finds one that triggers a transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="lua"> <state id="s1" initial="s11"> <onentry> <send event="externalEvent"/> @@ -18,6 +18,14 @@ keeps pulling off internal events until it finds one that triggers a transition <transition event="internalEvent4" target="pass"/> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test422.scxml b/test/w3c/lua/test422.scxml index f97b3bc..a2e588b 100644 --- a/test/w3c/lua/test422.scxml +++ b/test/w3c/lua/test422.scxml @@ -1,4 +1,4 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Test that at the end of a macrostep, the processor executes all invokes in states that have been entered and not exited during the step. (The invokes are supposed to be executed in document order, but we can test that since each invocation is separate and they may take @@ -6,19 +6,19 @@ different amounts to time to start up.) In this case, there are three invoke st in states s1, s11 and s12. Each invoked process returns an event named after its parent state. The invokes in s1 and s12 should execute, but not the one in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermore, when the timeout fires, var1 should equal 2.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <state id="s1" initial="s11"> <onentry> - <send event="timeout" delay="200ms"/> + <send event="timeout" delayexpr="'2s'"/> </onentry> <transition event="invokeS1 invokeS12"> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </transition> <transition event="invokeS11" target="fail"/> - <transition event="timeout" cond="testvar1 == 2" target="pass"/> + <transition event="timeout" cond="Var1==2" target="pass"/> <transition event="timeout" target="fail"/> <invoke> <content> @@ -68,6 +68,14 @@ in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermor </invoke> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test423.scxml b/test/w3c/lua/test423.scxml index d083110..b75f85c 100644 --- a/test/w3c/lua/test423.scxml +++ b/test/w3c/lua/test423.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send event="externalEvent1"/> - <send event="externalEvent2" delay="100ms"/> + <send event="externalEvent2" delayexpr="'1s'"/> <raise event="internalEvent"/> </onentry> <!-- in this state we should process only internalEvent --> @@ -16,6 +16,14 @@ <transition event="externalEvent2" target="pass"/> <transition event="internalEvent" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test444.scxml b/test/w3c/lua/test444.scxml deleted file mode 100644 index 2ec8b38..0000000 --- a/test/w3c/lua/test444.scxml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that <data> creates a new ecmascript variable. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <!-- test that var1 can be used as an ecmascript variable --> - <transition cond="++var1==2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test445.scxml b/test/w3c/lua/test445.scxml deleted file mode 100644 index 2946c9d..0000000 --- a/test/w3c/lua/test445.scxml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that ecmascript objects defined by <data> have value undefined if <data> does not assign a value --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <transition cond="var1==undefined" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test446.scxml b/test/w3c/lua/test446.scxml deleted file mode 100644 index 79f8652..0000000 --- a/test/w3c/lua/test446.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that if the child of <data> is JSON, the processor - assigns it as the value of the var --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <datamodel> - <data id="var1">[1, 2, 3]</data> - <data id="var2" src="file:test446.txt"/> - </datamodel> - <state id="s0"> - <transition cond="var1 instanceof Array" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <transition cond="var2 instanceof Array" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test448.scxml b/test/w3c/lua/test448.scxml deleted file mode 100644 index abe7957..0000000 --- a/test/w3c/lua/test448.scxml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that all ecmascript objects are placed in a single global scope --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <state id="s0"> - <!-- test that a parent state can access a variable defined in a child --> - <transition cond="var1==1" target="s1"/> - <transition target="fail"/> - <state id="s01"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - </state> - </state> - <state id="s1" initial="s01p"> - <parallel id="s01p"> - <state id="s01p1"> - <!-- test that we can access a variable defined in a parallel sibling state --> - <transition cond="var2==1" target="pass"/> - <transition target="fail"/> - </state> - <state id="s01p2"> - <datamodel> - <data id="var2" expr="1"/> - </datamodel> - </state> - </parallel> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test449.scxml b/test/w3c/lua/test449.scxml deleted file mode 100644 index f0f1830..0000000 --- a/test/w3c/lua/test449.scxml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that ecmascript objects are converted to booleans inside cond --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <state id="s0"> - <transition cond="'foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test451.scxml b/test/w3c/lua/test451.scxml deleted file mode 100644 index 08f04cc..0000000 --- a/test/w3c/lua/test451.scxml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- simple test of the in() predicate --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="p"> - <parallel id="p"> - <state id="s0"> - <transition cond="In('s1')" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"/> - </parallel> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test452.scxml b/test/w3c/lua/test452.scxml deleted file mode 100644 index 2965bb0..0000000 --- a/test/w3c/lua/test452.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that we can assign to any location in the datamodel. In this case, we just test that we can assign -to a substructure (not the top level variable). This may not be the most idiomatic way to write the test --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="foo" expr="0"/> - </datamodel> - <script> - function testobject() { - this.bar = 0;} - </script> - <state id="s0"> - <onentry> - <assign location="foo" expr="new testobject();"/> - <!-- try to assign to foo's bar property --> - <assign location="foo.bar" expr="1"/> - <raise event="event1"/> - </onentry> - <!-- test that we have assigned to foo's bar property --> - <transition event="event1" cond="foo.bar == 1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test453.scxml b/test/w3c/lua/test453.scxml deleted file mode 100644 index e5337fa..0000000 --- a/test/w3c/lua/test453.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that we can use any ecmascript expression as a value expression. -In this case, we just test that we can assign -a function to a variable and then call it. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="var1" expr="function(invar) {return invar + 1;}"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="event1"/> - </onentry> - <!-- test that we can call the function --> - <transition event="event1" cond="var1(2) == 3" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test456.scxml b/test/w3c/lua/test456.scxml deleted file mode 100644 index 319c1a4..0000000 --- a/test/w3c/lua/test456.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- we can't test that _any_ ecmascript is valid inside <script>, so we -just run a simple one and check that it can update the data model. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <datamodel> - <data expr="0" id="testvar1"/> - </datamodel> - <state id="s0"> - <onentry> - <script> - Var1+=1 - </script> - </onentry> - <transition cond="testvar1 == 1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test457.scxml b/test/w3c/lua/test457.scxml deleted file mode 100644 index 4a7ad33..0000000 --- a/test/w3c/lua/test457.scxml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- test that an the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. - the legal values for the 'item' attribute on foreach are legal ECMAScript variable names.. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="Var1" expr="0"/> - <data id="Var2"/> - <data id="Var3"/> - <data id="Var4" expr="7"/> - <data id="Var5" expr="[1,2,3]"/> - <data id="Var6"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- invalid array, legal item --> - <foreach item="Var2" index="Var3" array="Var4"> - <assign location="Var1" expr="Var1 + 1"/> - </foreach> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <!-- illegal item, legal array --> - <foreach item="'continue'" index="Var3" array="Var5"> - <assign location="Var1" expr="Var1 + 1"/> - </foreach> - <raise event="bar"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="bar" target="fail"/> - </state> - <state id="s2"> - <!-- check that var1 has its original value (so executable content never got executed --> - <transition cond="Var1==0" target="s3"/> - <transition target="fail"/> - </state> - <!-- finally check that a legal array works properly --> - <state id="s3"> - <onentry> - <assign location="Var6" expr="0"/> - <foreach item="Var2" array="Var5"> - <assign location="Var6" expr="Var6 + Var2"/> - </foreach> - </onentry> - <transition cond="Var6==6" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/lua/test459.scxml b/test/w3c/lua/test459.scxml deleted file mode 100644 index 54029a1..0000000 --- a/test/w3c/lua/test459.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current -value with the previous value, which is stored in var1. The current value should always be larger. If -it ever isn't, set Var4 to 0, indicating failure. Also check that the final value of the index -is 2 (meaning that the initial value was 0, not 1) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- contains the previous value --> - <data id="Var2"/> - <!-- the item which will contain the current value --> - <data id="Var3"/> - <!-- the index --> - <data id="Var4" expr="[1,2,3]"/> - <data id="Var5" expr="1"/> - <!-- 1 if success, 0 if failure --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="Var4" index="Var3"> - <if cond="Var1<Var2"> - <assign location="Var1" expr="Var2"/> - <else/> - <!-- values are out of order, record failure --> - <assign location="Var5" expr="0"/> - </if> - </foreach> - </onentry> - <!-- check that var1 has its original value --> - <transition cond="Var4==0 | Var3 != 2" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/lua/test460.scxml b/test/w3c/lua/test460.scxml deleted file mode 100644 index 9997296..0000000 --- a/test/w3c/lua/test460.scxml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- test that <foreach> does a shallow copy, so that modifying the array does not change -the iteration behavior. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> - <datamodel> - <data id="Var1" expr="[1,2,3]"/> - <data id="Var2" expr="0"/> - <!-- counts the number of iterations --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var3" array="Var1"> - <assign location="Var1" expr="[].concat(Var1, [4])"/> - <assign location="Var2" expr="Var2 + 1"/> - </foreach> - </onentry> - <transition cond="Var2==3" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/lua/test487.scxml b/test/w3c/lua/test487.scxml index 95640c3..9360331 100644 --- a/test/w3c/lua/test487.scxml +++ b/test/w3c/lua/test487.scxml @@ -1,16 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test illegal assignment. error.execution should be raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="!" id="testvar1"/> + <data id="Var1"/> </datamodel> <state id="s0"> <onentry> + <assign location="Var1" expr="return"/> <raise event="event"/> </onentry> <transition event="error.execution" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test488.scxml b/test/w3c/lua/test488.scxml index 69d0482..db6b062 100644 --- a/test/w3c/lua/test488.scxml +++ b/test/w3c/lua/test488.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that illegal expr in <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0" initial="s01"> <!-- we should get the error before the done event --> <transition event="error.execution" target="s1"/> @@ -12,7 +12,7 @@ </state> <final id="s02"> <donedata> - <param name="someParam" expr="!"/> + <param expr="return" name="someParam"/> </donedata> </final> </state> @@ -22,6 +22,14 @@ <transition event="done.state.s0" cond="_event.data == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test495.scxml b/test/w3c/lua/test495.scxml index bf317e5..41be527 100644 --- a/test/w3c/lua/test495.scxml +++ b/test/w3c/lua/test495.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the scxml event i/o processor puts events in the correct queues.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <!-- default target is external queue --> @@ -15,6 +15,14 @@ <transition event="event1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test496.scxml b/test/w3c/lua/test496.scxml index 855788b..20dcaf2 100644 --- a/test/w3c/lua/test496.scxml +++ b/test/w3c/lua/test496.scxml @@ -1,5 +1,5 @@ -<?xml version="1.0" standalone="no"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<?xml version="1.0" encoding="UTF-8"?> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event" target="#_scxml_foo"/> @@ -8,6 +8,14 @@ <transition event="error.communication" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test500.scxml b/test/w3c/lua/test500.scxml index 5139001..7108cd6 100644 --- a/test/w3c/lua/test500.scxml +++ b/test/w3c/lua/test500.scxml @@ -1,13 +1,21 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that location field is found inside entry for SCXML Event I/O processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location" id="testvar1"/> + <data id="Var1" expr="_ioprocessors.scxml.location"/> </datamodel> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test501.scxml b/test/w3c/lua/test501.scxml index e83faca..9b579ed 100644 --- a/test/w3c/lua/test501.scxml +++ b/test/w3c/lua/test501.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location" id="testvar1"/> + <data id="Var1" expr="_ioprocessors.scxml.location"/> </datamodel> <state id="s0"> <onentry> - <send event="foo" targetexpr="testvar1"/> - <send event="timeout" delay="2s"/> + <send targetexpr="Var1" event="foo"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <transition event="foo" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test503.scxml b/test/w3c/lua/test503.scxml index 1926776..0ded2c6 100644 --- a/test/w3c/lua/test503.scxml +++ b/test/w3c/lua/test503.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a targetless transition does not exit and reenter its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- how often we have exited s2 --> - <data expr="0" id="testvar2"/> + <data id="Var2" expr="0"/> <!-- how often the targetless transition in s2 has been executed --> </datamodel> <state id="s1"> @@ -16,20 +16,28 @@ </state> <state id="s2"> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition event="foo"> - <assign location="testvar2" expr="testvar2+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </transition> <!-- make sure the transition on foo was actually taken --> - <transition event="bar" target="s3" cond="testvar2 == 1"/> + <transition event="bar" cond="Var2==1" target="s3"/> <transition event="bar" target="fail"/> </state> <state id="s3"> <!-- make sure that s2 was exited only once --> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test504.scxml b/test/w3c/lua/test504.scxml index 5b0011d..51df482 100644 --- a/test/w3c/lua/test504.scxml +++ b/test/w3c/lua/test504.scxml @@ -1,16 +1,16 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an external transition exits all states up the the LCCA --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- how often we have exited p --> - <data expr="0" id="testvar2"/> + <data id="Var2" expr="0"/> <!-- how often we have exited ps1 --> - <data expr="0" id="testvar3"/> + <data id="Var3" expr="0"/> <!-- how often we have exited ps2 --> - <data expr="0" id="testvar4"/> + <data id="Var4" expr="0"/> <!-- how often the transition for foo has been taken --> - <data expr="0" id="testvar5"/> + <data id="Var5" expr="0"/> <!-- how often we have exited s2 --> </datamodel> <state id="s1"> @@ -22,50 +22,58 @@ </state> <state id="s2"> <onexit> - <assign location="testvar5" expr="testvar5+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var5" expr="Var5 + 1"/> </onexit> <parallel id="p"> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition event="foo" target="ps1"> - <assign location="testvar4" expr="testvar4+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var4" expr="Var4 + 1"/> </transition> <!-- make sure the transition on foo was actually taken --> - <transition event="bar" target="s3" cond="testvar4 == 1"/> + <transition event="bar" cond="Var4==1" target="s3"/> <transition event="bar" target="fail"/> <state id="ps1"> <onexit> - <assign location="testvar2" expr="testvar2+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </onexit> </state> <state id="ps2"> <onexit> - <assign location="testvar3" expr="testvar3+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> </onexit> </state> </parallel> </state> <state id="s3"> <!-- make sure that p was exited twice --> - <transition target="s4" cond="testvar1 == 2"/> + <transition cond="Var1==2" target="s4"/> <transition target="fail"/> </state> <state id="s4"> <!-- make sure that ps1 was exited twice --> - <transition target="s5" cond="testvar2 == 2"/> + <transition cond="Var2==2" target="s5"/> <transition target="fail"/> </state> <state id="s5"> <!-- make sure that ps2 was exited twice --> - <transition target="s6" cond="testvar3 == 2"/> + <transition cond="Var3==2" target="s6"/> <transition target="fail"/> </state> <state id="s6"> <!-- make sure that s1 was exited once --> - <transition cond="testvar5 == 1" target="pass"/> + <transition cond="Var5==1" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test505.scxml b/test/w3c/lua/test505.scxml index 86da620..4f9e386 100644 --- a/test/w3c/lua/test505.scxml +++ b/test/w3c/lua/test505.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an internal transition does not exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- how often we have exited s1 --> - <data expr="0" id="testvar2"/> + <data id="Var2" expr="0"/> <!-- how often we have exited s11 --> - <data expr="0" id="testvar3"/> + <data id="Var3" expr="0"/> <!-- how often the transition for foo has been taken --> </datamodel> <state id="s1"> @@ -15,30 +15,38 @@ <raise event="bar"/> </onentry> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition event="foo" type="internal" target="s11"> - <assign location="testvar3" expr="testvar3+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> </transition> <!-- make sure the transition on foo was actually taken --> - <transition event="bar" target="s2" cond="testvar3 == 1"/> + <transition event="bar" cond="Var3==1" target="s2"/> <transition event="bar" target="fail"/> <state id="s11"> <onexit> - <assign location="testvar2" expr="testvar2+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </onexit> </state> </state> <state id="s2"> <!-- make sure that s1 was exited once --> - <transition target="s3" cond="testvar1 == 1"/> + <transition cond="Var1==1" target="s3"/> <transition target="fail"/> </state> <state id="s3"> <!-- make sure that s11 was exited twice --> - <transition cond="testvar2 == 2" target="pass"/> + <transition cond="Var2==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test506.scxml b/test/w3c/lua/test506.scxml index 0548023..9937ec8 100644 --- a/test/w3c/lua/test506.scxml +++ b/test/w3c/lua/test506.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an internal transition whose targets are not proper descendants of its source state behaves like an external transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- how often we have exited s2 --> - <data expr="0" id="testvar2"/> + <data id="Var2" expr="0"/> <!-- how often we have exited s21 --> - <data expr="0" id="testvar3"/> + <data id="Var3" expr="0"/> <!-- how often the transition for foo has been taken --> </datamodel> <state id="s1"> @@ -19,30 +19,38 @@ behaves like an external transition --> </state> <state id="s2" initial="s21"> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition event="foo" type="internal" target="s2"> - <assign location="testvar3" expr="testvar3+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> </transition> <!-- make sure the transition on foo was actually taken --> - <transition event="bar" target="s3" cond="testvar3 == 1"/> + <transition event="bar" cond="Var3==1" target="s3"/> <transition event="bar" target="fail"/> <state id="s21"> <onexit> - <assign location="testvar2" expr="testvar2+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </onexit> </state> </state> <state id="s3"> <!-- make sure that s2 was exited twice --> - <transition target="s4" cond="testvar1 == 2"/> + <transition cond="Var1==2" target="s4"/> <transition target="fail"/> </state> <state id="s4"> <!-- make sure that s21 was exited twice --> - <transition cond="testvar2 == 2" target="pass"/> + <transition cond="Var2==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test509.scxml b/test/w3c/lua/test509.scxml index f2cce85..8a328f9 100644 --- a/test/w3c/lua/test509.scxml +++ b/test/w3c/lua/test509.scxml @@ -1,16 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages at the accessURI --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> </onentry> <!-- if the event was send by http and we get it, we succeed --> - <transition event="test" cond="_event.name=='http.post'" target="pass"/> + <transition event="test" cond="string.find(_event.raw, 'POST')" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test510.scxml b/test/w3c/lua/test510.scxml index f00b8a4..61468e2 100644 --- a/test/w3c/lua/test510.scxml +++ b/test/w3c/lua/test510.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that Basic HTTP messages go into external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> <!-- this creates an internal event --> <raise event="internal"/> </onentry> @@ -16,6 +16,14 @@ <transition event="test" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test518.scxml b/test/w3c/lua/test518.scxml index 14576ed..455015e 100644 --- a/test/w3c/lua/test518.scxml +++ b/test/w3c/lua/test518.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that namelist values get encoded as POST parameters. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="2" id="testvar1"/> + <data id="Var1" expr="2"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" namelist="testvar1" targetexpr="_ioprocessors.basichttp.location"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send event="test" targetexpr="_ioprocessors.basichttp.location" namelist="Var1" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> </onentry> - <transition event="test" cond="_event.data.testvar1==2" target="pass"/> + <transition event="test" cond="string.find(_event.raw, 'Var1=2')" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test519.scxml b/test/w3c/lua/test519.scxml index 1f4c71a..71f53db 100644 --- a/test/w3c/lua/test519.scxml +++ b/test/w3c/lua/test519.scxml @@ -1,17 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that <param> values get encoded as POST parameters. . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <param name="param1" expr="1"/> </send> </onentry> <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.data.param1==1" target="pass"/> + <transition event="test" cond="string.find(_event.raw, 'param1=1')" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test520.scxml b/test/w3c/lua/test520.scxml index 6e8cf7c..8b41a4f 100644 --- a/test/w3c/lua/test520.scxml +++ b/test/w3c/lua/test520.scxml @@ -1,19 +1,27 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that <content> gets sent as the body of the message. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <content>this is some content</content> </send> </onentry> <!-- if other end sends us back this event, we succeed. Test for two common ways of encoding --> - <transition event="HTTP.POST" cond="_event.raw=='this+is+some+content'" target="pass"/> - <transition event="HTTP.POST" cond="_event.raw=='this%20is%20some%20content'" target="pass"/> + <transition event="HTTP.POST" cond="string.find(_event.raw, 'this+is+some+content')" target="pass"/> + <transition event="HTTP.POST" cond="string.find(_event.raw, 'this%%20is%%20some%%20content')" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test521.scxml b/test/w3c/lua/test521.scxml index db23444..6dc6ee0 100644 --- a/test/w3c/lua/test521.scxml +++ b/test/w3c/lua/test521.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the processor raises error.communication if it cannot dispatch the event. (To create an undispatchable event, we choose a non-existent session as target). If it raises the error event, we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <!-- should cause an error --> - <send event="event2" targetexpr="#_scxml_foo"/> + <send target="#_scxml_foo" event="event2"/> <!-- this will get added to the external event queue after the error has been raised --> <send event="timeout"/> </onentry> @@ -14,6 +14,14 @@ the error event, we succeed. Otherwise we eventually timeout and fail. --> <transition event="error.communication" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test522.scxml b/test/w3c/lua/test522.scxml index 152c945..67cf475 100644 --- a/test/w3c/lua/test522.scxml +++ b/test/w3c/lua/test522.scxml @@ -1,10 +1,10 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that location field the entry for Basic HTTP Event I/O processor can be used to send a message to the processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"/> </onentry> <!-- the event we receive should be called 'test', but that's not actually @@ -14,6 +14,14 @@ to send a message to the processor --> <transition event="error" target="fail"/> <transition event="*" target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test525.scxml b/test/w3c/lua/test525.scxml index 5831767..e6a8ab5 100644 --- a/test/w3c/lua/test525.scxml +++ b/test/w3c/lua/test525.scxml @@ -1,22 +1,32 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that <foreach> does a shallow copy, so that modifying the array does not change the iteration behavior. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="lua" version="1.0"> <datamodel> - <data id="testvar1">{1,2,3}</data> - <data expr="0" id="testvar2"/> + <data id="Var1"> + {1,2,3} + </data> + <data id="Var2" expr="0"/> <!-- counts the number of iterations --> </datamodel> <state id="s0"> <onentry> - <foreach array="testvar1" item="testvar3"> - <assign location="testvar1" expr="(function() local t2={}; for i=1,#testvar1 do t2[i]=testvar1[i] end t2[#t2+1]=4 return t2 end)()"/> - <assign location="testvar2" expr="testvar2+1"/> + <foreach item="Var3" array="Var1"> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1[4]" expr="'asdf'"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </foreach> </onentry> - <transition cond="testvar2 == 3" target="pass"/> + <transition cond="Var2==3" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test527.scxml b/test/w3c/lua/test527.scxml index 79d17c5..1958e58 100644 --- a/test/w3c/lua/test527.scxml +++ b/test/w3c/lua/test527.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- simple test that 'expr' works with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0" initial="s01"> <transition event="done.state.s0" cond="_event.data == 'foo'" target="pass"> </transition> @@ -15,6 +15,14 @@ </donedata> </final> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test528.scxml b/test/w3c/lua/test528.scxml index 051cfd8..c8fa933 100644 --- a/test/w3c/lua/test528.scxml +++ b/test/w3c/lua/test528.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that illegal 'expr' produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0" initial="s01"> <!-- we should get the error before the done event --> <transition event="error.execution" target="s1"/> @@ -10,7 +10,7 @@ </state> <final id="s02"> <donedata> - <content expr="!"/> + <content expr="return"/> </donedata> </final> </state> @@ -20,6 +20,14 @@ <transition event="done.state.s0" cond="_event.data == nil" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test529.scxml b/test/w3c/lua/test529.scxml index ace3214..25aa887 100644 --- a/test/w3c/lua/test529.scxml +++ b/test/w3c/lua/test529.scxml @@ -1,6 +1,6 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- simple test that children workn with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="lua" initial="s0"> <state id="s0" initial="s01"> <transition event="done.state.s0" cond="_event.data == 21" target="pass"> </transition> @@ -15,6 +15,14 @@ </donedata> </final> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test530.scxml b/test/w3c/lua/test530.scxml index 28c2047..913e239 100644 --- a/test/w3c/lua/test530.scxml +++ b/test/w3c/lua/test530.scxml @@ -1,26 +1,34 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that <content> child is evaluated when <invoke> is. Var1 is initialized with an integer value, then set to an scxml script in the onentry to s0. If <content> is evaluated at the right time, we should get invoke.done, otherwise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data expr="1" id="testvar1"/> + <data id="Var1" expr="1"/> </datamodel> <state id="s0"> <onentry> - <assign location="testvar1"> + <assign location="Var1"> <scxml version="1.0"> <final/> </scxml> </assign> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2s" event="timeout"/> </onentry> <invoke type="http://www.w3.org/TR/scxml/"> - <content expr="testvar1"/> + <content expr="Var1"/> </invoke> <transition event="done.invoke" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test531.scxml b/test/w3c/lua/test531.scxml index c2a98ff..72be9fe 100644 --- a/test/w3c/lua/test531.scxml +++ b/test/w3c/lua/test531.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that the value of the <param> _scxmleventname gets used as the name of the raised event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> + <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <param name="_scxmleventname" expr="'test'"/> </send> </onentry> @@ -13,6 +13,14 @@ of the raised event. --> <transition event="test" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test532.scxml b/test/w3c/lua/test532.scxml index ca83985..6c3275f 100644 --- a/test/w3c/lua/test532.scxml +++ b/test/w3c/lua/test532.scxml @@ -1,11 +1,11 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that if _scxmleventname is not present, the name of the HTTP method is used as the name of the resulting event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> + <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <!-- this content will be ignored, but it's here to make sure we have a message body --> <content>some content</content> </send> @@ -13,6 +13,14 @@ as the name of the resulting event. --> <transition event="HTTP.POST" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test533.scxml b/test/w3c/lua/test533.scxml index 6407cfe..652d317 100644 --- a/test/w3c/lua/test533.scxml +++ b/test/w3c/lua/test533.scxml @@ -1,14 +1,14 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that an internal transition whose source state is not compound does exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> <!-- how often we have exited p --> - <data expr="0" id="testvar2"/> + <data id="Var2" expr="0"/> <!-- how often we have exited ps1 --> - <data expr="0" id="testvar3"/> + <data id="Var3" expr="0"/> <!-- how often we have exited ps2 --> - <data expr="0" id="testvar4"/> + <data id="Var4" expr="0"/> <!-- how often the transition for foo has been taken --> </datamodel> <state id="s1"> @@ -20,40 +20,48 @@ </state> <parallel id="p"> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <transition event="foo" type="internal" target="ps1"> - <assign location="testvar4" expr="testvar4+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var4" expr="Var4 + 1"/> </transition> <!-- make sure the transition on foo was actually taken --> - <transition event="bar" target="s2" cond="testvar4 == 1"/> + <transition event="bar" cond="Var4==1" target="s2"/> <transition event="bar" target="fail"/> <state id="ps1"> <onexit> - <assign location="testvar2" expr="testvar2+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> </onexit> </state> <state id="ps2"> <onexit> - <assign location="testvar3" expr="testvar3+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> </onexit> </state> </parallel> <state id="s2"> <!-- make sure that p was exited twice --> - <transition target="s3" cond="testvar1 == 2"/> + <transition cond="Var1==2" target="s3"/> <transition target="fail"/> </state> <state id="s3"> <!-- make sure that ps1 was exited twice --> - <transition target="s4" cond="testvar2 == 2"/> + <transition cond="Var2==2" target="s4"/> <transition target="fail"/> </state> <state id="s4"> <!-- make sure that ps2 was exited twice --> - <transition cond="testvar3 == 2" target="pass"/> + <transition cond="Var3==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test534.scxml b/test/w3c/lua/test534.scxml index 42f5f2f..1826196 100644 --- a/test/w3c/lua/test534.scxml +++ b/test/w3c/lua/test534.scxml @@ -1,16 +1,24 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> + <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> </send> </onentry> <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.data._scxmleventname==test" target="pass"/> + <transition event="test" cond="string.find(_event.raw, '_scxmleventname=test')" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test550.scxml b/test/w3c/lua/test550.scxml index 93d514c..15f95cf 100644 --- a/test/w3c/lua/test550.scxml +++ b/test/w3c/lua/test550.scxml @@ -1,15 +1,23 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that expr can be used to assign a value to a var. This test uses early binding --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" binding="early" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua" binding="early"> <state id="s0"> - <transition cond="testvar1 == 2" target="pass"/> + <transition cond="Var1==2" target="pass"/> <transition target="fail"/> </state> <state id="s1"> <datamodel> - <data expr="2" id="testvar1"/> + <data id="Var1" expr="2"/> </datamodel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test551.scxml b/test/w3c/lua/test551.scxml index 6836896..bab8780 100644 --- a/test/w3c/lua/test551.scxml +++ b/test/w3c/lua/test551.scxml @@ -1,15 +1,25 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that inline content can be used to assign a value to a var. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" binding="early" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" binding="early" datamodel="lua"> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1[1]" target="pass"/> <transition target="fail"/> </state> <state id="s1"> <datamodel> - <data id="testvar1">{1,2,3}</data> + <data id="Var1"> + {1,2,3} + </data> </datamodel> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test552.scxml b/test/w3c/lua/test552.scxml index 154d60e..75b3896 100644 --- a/test/w3c/lua/test552.scxml +++ b/test/w3c/lua/test552.scxml @@ -1,14 +1,22 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that src content can be used to assign a value to a var. Edit test552.txt to have a value that's legal for the datamodel in question --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <datamodel> - <data src="file:test552.txt" id="testvar1"/> + <data id="Var1" src="file:test552.txt"/> </datamodel> <state id="s0"> - <transition cond="testvar1 ~= nil" target="pass"/> + <transition cond="Var1 ~= nil" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test553.scxml b/test/w3c/lua/test553.scxml index 5175945..cf77e65 100644 --- a/test/w3c/lua/test553.scxml +++ b/test/w3c/lua/test553.scxml @@ -1,19 +1,27 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- we test that the processor does not dispatch the event if evaluation of <send>'s args causes an error.. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <!-- timeout event --> - <send event="timeout" delay="100ms"/> + <send event="timeout" delayexpr="'1s'"/> <!-- generate an invalid namelist --> - <send event="event1" namelist="!no"/> + <send event="event1" namelist=""foo"/> </onentry> <!-- if we get the timeout before event1, we assume that event1 hasn't been sent We ignore the error event here because this assertion doesn't mention it --> <transition event="timeout" target="pass"/> <transition event="event1" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test554.scxml b/test/w3c/lua/test554.scxml index ed8b3b2..f433c24 100644 --- a/test/w3c/lua/test554.scxml +++ b/test/w3c/lua/test554.scxml @@ -1,14 +1,14 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that if the evaluation of <invoke>'s args causes an error, the invocation is cancelled. In this test, that means that we don't get done.invoke before the timer goes off. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="lua"> <state id="s0"> <onentry> - <send event="timer" delay="100ms"/> + <send event="timer" delayexpr="'1s'"/> </onentry> <!-- reference an invalid namelist --> - <invoke type="http://www.w3.org/TR/scxml/" namelist="!no"> + <invoke type="http://www.w3.org/TR/scxml/" namelist=""foo"> <content> <scxml initial="subFinal" version="1.0" datamodel="lua"> <final id="subFinal"/> @@ -18,6 +18,14 @@ before the timer goes off. --> <transition event="timer" target="pass"/> <transition event="done.invoke" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test557.scxml b/test/w3c/lua/test557.scxml deleted file mode 100644 index bec74d0..0000000 --- a/test/w3c/lua/test557.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that if the child of <data> is XML, or if XML is loaded via src=, the processor - assigns it as the value of the var --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <datamodel> - <data id="var1"> - <books> - <book title="title1"/> - <book title="title2"/> - </books> - </data> - <data id="var2" src="file:test557.txt"/> - </datamodel> - <state id="s0"> - <transition cond="var1.getElementsByTagName('book')[0].getAttribute('title') == 'title1'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <transition cond="var2.getElementsByTagName('book')[1].getAttribute('title') == 'title2'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test558.scxml b/test/w3c/lua/test558.scxml deleted file mode 100644 index 0ff6f90..0000000 --- a/test/w3c/lua/test558.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that if the child of <data> is not XML, or if XML is loaded via src=, - the processor treats the value as a string, does whitespace normalization and assigns it to the var.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <datamodel> - <data id="var1"> -this is -a string -</data> - <data id="var2" src="file:test558.txt"/> - </datamodel> - <state id="s0"> - <transition cond="var1 == 'this is a string'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <transition cond="var2 == 'this is a string'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test560.scxml b/test/w3c/lua/test560.scxml deleted file mode 100644 index cb0d563..0000000 --- a/test/w3c/lua/test560.scxml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that processor creates correct structure in - _event.data when receiving KVPs in an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <state id="s0"> - <onentry> - <send event="foo"> - <param name="aParam" expr="1"/> - </send> - </onentry> - <transition event="foo" cond="_event.data.aParam == 1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test561.scxml b/test/w3c/lua/test561.scxml deleted file mode 100644 index 77acad4..0000000 --- a/test/w3c/lua/test561.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that processor creates an ECMAScript DOM object - _event.data when receiving XML in an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <state id="s0"> - <onentry> - <send event="foo"> - <content> - <books> - <book title="title1"/> - <book title="title2"/> - </books> - </content> - </send> - </onentry> - <transition event="foo" cond="_event.data.getElementsByTagName('book')[1].getAttribute('title') == 'title2'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test562.scxml b/test/w3c/lua/test562.scxml deleted file mode 100644 index 99e86e5..0000000 --- a/test/w3c/lua/test562.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that processor creates space normalized string in - _event.data when receiving anything other than KVPs or XML in an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <state id="s0"> - <onentry> - <send event="foo"> - <content> -this is a -string -</content> - </send> - </onentry> - <transition event="foo" cond="_event.data == 'this is a string'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test567.scxml b/test/w3c/lua/test567.scxml index 509cf69..39ec814 100644 --- a/test/w3c/lua/test567.scxml +++ b/test/w3c/lua/test567.scxml @@ -1,29 +1,37 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that any content in the message other than _scxmleventname is used to populate _event.data. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data expr="2" id="testvar1"/> + <data id="Var1" expr="2"/> </datamodel> <state id="s0"> <onentry> - <send event="timeout" delay="3s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> <!-- in this case, 'test' will be placed in _scxmleventname. The <param> should be used to populate _event.data --> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"> + <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> <param name="param1" expr="2"/> </send> </onentry> <!-- if we get this event, we succeed --> <transition event="test" target="s1"> - <assign expr="_event.data.param1" location="testvar1"/> + <assign location="Var1" expr="_event.data.param1"/> </transition> <transition event="*" target="fail"/> </state> <state id="s1"> - <transition cond="testvar1 == 2" target="pass"/> + <transition cond="tonumber(Var1)==2" target="pass"/> <transition target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/promela/test567.scxml b/test/w3c/lua/test567.scxml.old index 5d99e88..14c0102 100644 --- a/test/w3c/promela/test567.scxml +++ b/test/w3c/lua/test567.scxml.old @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- test that that any content in the message other than _scxmleventname is used to populate _event.data. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <datamodel> - <data id="Var1" type="int" expr="2"/> + <data id="Var1" expr="2"/> </datamodel> <state id="s0"> <onentry> diff --git a/test/w3c/lua/test569.scxml b/test/w3c/lua/test569.scxml deleted file mode 100644 index ec6fe13..0000000 --- a/test/w3c/lua/test569.scxml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- test that location field is found inside entry for SCXML Event I/O processor in the ECMAScript -data model. The tests for the relevant event i/o processors will test that it can be used to -send events. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <state id="s0"> - <transition cond="_ioprocessors['scxml'].location" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test570.scxml b/test/w3c/lua/test570.scxml index 659789e..4afa649 100644 --- a/test/w3c/lua/test570.scxml +++ b/test/w3c/lua/test570.scxml @@ -1,18 +1,18 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that we generate done.state.id when all a parallel state's children are in final states --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="p0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" datamodel="lua" version="1.0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <parallel id="p0"> <onentry> - <send event="timeout" delay="2s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> <raise event="e1"/> <raise event="e2"/> </onentry> <!-- record that we get the first done event --> <transition event="done.state.p0s1"> - <assign expr="1" location="testvar1"/> + <assign location="Var1" expr="1"/> </transition> <!-- we should get the second done event before done.state.p0 --> <transition event="done.state.p0s2" target="s1"/> @@ -32,9 +32,17 @@ </parallel> <state id="s1"> <!-- if we get done.state.p0, success --> - <transition event="done.state.p0" cond="testvar1 == 1" target="pass"/> + <transition event="done.state.p0" cond="Var1==1" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test576.scxml b/test/w3c/lua/test576.scxml index 195f3e4..b0c0494 100644 --- a/test/w3c/lua/test576.scxml +++ b/test/w3c/lua/test576.scxml @@ -1,13 +1,13 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and test that both are entered. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s11p112 s11p122" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s11p112 s11p122" datamodel="lua" version="1.0"> <state id="s0"> <transition target="fail"/> </state> <state id="s1"> <onentry> - <send event="timeout" delay="1s"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> </onentry> <transition event="timeout" target="fail"/> <state id="s11" initial="s111"> @@ -30,6 +30,14 @@ test that both are entered. --> </parallel> </state> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test577.scxml b/test/w3c/lua/test577.scxml index a652461..bae6d6a 100644 --- a/test/w3c/lua/test577.scxml +++ b/test/w3c/lua/test577.scxml @@ -1,7 +1,7 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that that <send> without target in basichttp event i/o processor causes error.communication to get added to internal queue . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="lua" version="1.0"> <state id="s0"> <onentry> <!-- sent by scxml event i/o processor, added to external queue --> @@ -12,6 +12,14 @@ causes error.communication to get added to internal queue . --> <transition event="error.communication" target="pass"/> <transition event="*" target="fail"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test578.scxml b/test/w3c/lua/test578.scxml deleted file mode 100644 index 8de6e25..0000000 --- a/test/w3c/lua/test578.scxml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!-- in the ECMA data model, test that processor creates an ECMAScript object - _event.data when receiving JSON in an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> - <state id="s0"> - <onentry> - <send event="foo"> - <content>{ "productName" : "bar", "size" : 27 }</content> - </send> - </onentry> - <transition event="foo" cond="_event.data.productName == 'bar'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"/> - <final id="fail"/> -</scxml> diff --git a/test/w3c/lua/test579.scxml b/test/w3c/lua/test579.scxml index b23ccbf..c918741 100644 --- a/test/w3c/lua/test579.scxml +++ b/test/w3c/lua/test579.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, the executable content inside the <initial> transition. However the Processor MUST execute this content only if there is no stored history. Once the history state's parent state has been visited and exited, the default history content must not be executed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="lua"> <state id="s0"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <initial> <transition target="sh1"> @@ -14,11 +14,11 @@ parent state has been visited and exited, the default history content must not b </transition> </initial> <onentry> - <send event="timeout" delay="100ms"/> + <send delayexpr="'1s'" event="timeout"/> <raise event="event1"/> </onentry> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> <history id="sh1"> <transition target="s01"> @@ -34,8 +34,8 @@ parent state has been visited and exited, the default history content must not b <transition event="*" target="fail"/> </state> <state id="s03"> - <transition event="event3" target="s0" cond="testvar1 == 0"/> - <transition event="event1" target="s2" cond="testvar1 == 1"/> + <transition cond="Var1==0" event="event3" target="s0"/> + <transition cond="Var1==1" event="event1" target="s2"/> <transition event="*" target="fail"/> </state> </state> @@ -47,6 +47,14 @@ parent state has been visited and exited, the default history content must not b <transition event="event3" target="fail"/> <transition event="timeout" target="pass"/> </state> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/lua/test580.scxml b/test/w3c/lua/test580.scxml index da066b3..229e3cf 100644 --- a/test/w3c/lua/test580.scxml +++ b/test/w3c/lua/test580.scxml @@ -1,12 +1,12 @@ -<?xml version="1.0" standalone="no"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- test that a history state never ends up part of the configuration --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="p1" datamodel="lua"> +<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="p1" datamodel="lua"> <datamodel> - <data expr="0" id="testvar1"/> + <data id="Var1" expr="0"/> </datamodel> <parallel id="p1"> <onentry> - <send delay="2s" event="timeout"/> + <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> </onentry> <state id="s0"> <transition cond="In('sh1')" target="fail"/> @@ -25,13 +25,21 @@ </state> <state id="s12"/> <transition cond="In('sh1')" target="fail"/> - <transition target="sh1" cond="testvar1 == 0"/> - <transition cond="testvar1 == 1" target="pass"/> + <transition cond="Var1==0" target="sh1"/> + <transition cond="Var1==1" target="pass"/> <onexit> - <assign location="testvar1" expr="testvar1+1"/> + <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> </onexit> </state> </parallel> - <final id="pass"/> - <final id="fail"/> + <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> diff --git a/test/w3c/xpath/robots.txt b/test/w3c/namespace/robots.txt index 9be2782..fdd7340 100644 --- a/test/w3c/xpath/robots.txt +++ b/test/w3c/namespace/robots.txt @@ -1,7 +1,7 @@ # # robots.txt for http://www.w3.org/ # -# $Id: robots.txt,v 1.67 2014-06-25 13:06:01 ddavis Exp $ +# $Id: robots.txt,v 1.74 2016/02/11 20:30:26 gerald Exp $ # # For use by search.w3.org @@ -80,6 +80,7 @@ Disallow: /2004/08/W3CTalks Disallow: /2007/11/Talks/search Disallow: /People/all/ Disallow: /RDF/Validator/ARPServlet +Disallow: /RDF/Validator/rdfval Disallow: /2003/03/Translations/byLanguage Disallow: /2003/03/Translations/byTechnology Disallow: /2005/11/Translations/Query @@ -92,5 +93,11 @@ Disallow: /2006/02/chartergen Disallow: /2004/01/pp-impl Disallow: /Consortium/supporters Disallow: /2007/08/pyRdfa/ +Disallow: /2012/pyRdfa/extract Disallow: /WAI/PF/comments/ Disallow: /participate/conferences.xml +Disallow: /scripts/ +Disallow: /2005/01/yacker/ +Disallow: /2005/01/yacker? +Disallow: /2003/09/nschecker? + diff --git a/test/w3c/namespace/test144.scxml b/test/w3c/namespace/test144.scxml new file mode 100644 index 0000000..045ef5b --- /dev/null +++ b/test/w3c/namespace/test144.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that events are inserted into the queue in the order in which they are raised. If +foo occurs before bar, success, otherwise failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="foo" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="bar" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test147.scxml b/test/w3c/namespace/test147.scxml new file mode 100644 index 0000000..4e3cafd --- /dev/null +++ b/test/w3c/namespace/test147.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the first clause that evaluates to true - and only that clause - is executed. +Only one event should be raised, and it should be bar --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:if cond="false"> + <scxml:raise event="foo"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <scxml:elseif cond="true"/> + <scxml:raise event="bar"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <scxml:else/> + <scxml:raise event="baz"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:if> + <scxml:raise event="bat"/> + </scxml:onentry> + <scxml:transition event="bar" cond="Var1==1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test148.scxml b/test/w3c/namespace/test148.scxml new file mode 100644 index 0000000..b935a2e --- /dev/null +++ b/test/w3c/namespace/test148.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the else clause executes if <if> and <elseif> evaluate to false. +Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause +fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:if cond="false"> + <scxml:raise event="foo"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <scxml:elseif cond="false"/> + <scxml:raise event="bar"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <scxml:else/> + <scxml:raise event="baz"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:if> + <scxml:raise event="bat"/> + </scxml:onentry> + <scxml:transition event="baz" cond="Var1==1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test149.scxml b/test/w3c/namespace/test149.scxml new file mode 100644 index 0000000..186e19f --- /dev/null +++ b/test/w3c/namespace/test149.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that neither if clause executes, so that bat is the only event raised. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:if cond="false"> + <scxml:raise event="foo"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <scxml:elseif cond="false"/> + <scxml:raise event="bar"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:if> + <scxml:raise event="bat"/> + </scxml:onentry> + <scxml:transition event="bat" cond="Var1==0" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test150.scxml b/test/w3c/namespace/test150.scxml new file mode 100644 index 0000000..13f2d5c --- /dev/null +++ b/test/w3c/namespace/test150.scxml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also +test that it will use an existing var if it does exist. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- first use declared variables --> + <scxml:foreach item="Var1" index="Var2" array="Var3"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error" target="fail"/> + <scxml:transition event="*" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <!-- now use undeclared variables --> + <scxml:foreach item="Var4" index="Var5" array="Var3"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="error" target="fail"/> + <scxml:transition event="*" target="s2"/> + </scxml:state> + <scxml:state id="s2"> + <!-- check that var4 is bound --> + <scxml:transition cond="Var4" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test151.scxml b/test/w3c/namespace/test151.scxml new file mode 100644 index 0000000..11c89b2 --- /dev/null +++ b/test/w3c/namespace/test151.scxml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also +test that it will use an existing var if it does exist. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- first use declared variables --> + <scxml:foreach item="Var1" index="Var2" array="Var3"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error" target="fail"/> + <scxml:transition event="*" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <!-- now use undeclared variables --> + <scxml:foreach item="Var4" index="Var5" array="Var3"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="error" target="fail"/> + <scxml:transition event="*" target="s2"/> + </scxml:state> + <scxml:state id="s2"> + <!-- check that var5 is bound --> + <scxml:transition cond="Var5" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test152.scxml b/test/w3c/namespace/test152.scxml new file mode 100644 index 0000000..0a03356 --- /dev/null +++ b/test/w3c/namespace/test152.scxml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an illegal array or item value causes error.execution and results in executable content +not being executed. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"/> + <scxml:data id="Var4" expr="7"/> + <scxml:data id="Var5"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- invalid array, legal item --> + <scxml:foreach item="Var2" index="Var3" array="Var4"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:foreach> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <!-- illegal item, legal array --> + <scxml:foreach item="'continue'" index="Var3" array="Var5"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:foreach> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s2"/> + <scxml:transition event="bar" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <!-- check that var1 has its original value (so executable content never got executed --> + <scxml:transition cond="Var1==0" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test153.scxml b/test/w3c/namespace/test153.scxml new file mode 100644 index 0000000..0e980d7 --- /dev/null +++ b/test/w3c/namespace/test153.scxml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current +value with the previous value, which is stored in var1. The current value should always be larger. If +it ever isn't, set Var4 to 0, indicating failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- contains the previous value --> + <scxml:data id="Var2"/> + <!-- the item which will contain the current value --> + <scxml:data id="Var3"> + [1,2,3] + </scxml:data> + <scxml:data id="Var4" expr="1"/> + <!-- 1 if success, 0 if failure --> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var2" array="Var3"> + <scxml:if cond="Var1<Var2"> + <scxml:assign location="Var1" expr="Var2"/> + <scxml:else/> + <!-- values are out of order, record failure --> + <scxml:assign location="Var4" expr="0"/> + </scxml:if> + </scxml:foreach> + </scxml:onentry> + <!-- check that var1 has its original value --> + <scxml:transition cond="Var4==0" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test155.scxml b/test/w3c/namespace/test155.scxml new file mode 100644 index 0000000..58a415c --- /dev/null +++ b/test/w3c/namespace/test155.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable +content sums the items into var1 so it should be 6 at the end --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var2" array="Var3"> + <scxml:assign location="Var1" expr="Var1 + Var2"/> + </scxml:foreach> + </scxml:onentry> + <scxml:transition cond="Var1==6" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test156.scxml b/test/w3c/namespace/test156.scxml new file mode 100644 index 0000000..219f443 --- /dev/null +++ b/test/w3c/namespace/test156.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an error causes the foreach to stop execution. The second piece of executable content +should cause an error, so var1 should be incremented only once --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var2" array="Var3"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + <!-- assign an illegal value to a non-existent var --> + <scxml:assign location="Var5" expr="return"/> + </scxml:foreach> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test158.scxml b/test/w3c/namespace/test158.scxml new file mode 100644 index 0000000..08759d6 --- /dev/null +++ b/test/w3c/namespace/test158.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="event1"/> + <scxml:raise event="event2"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test159.scxml b/test/w3c/namespace/test159.scxml new file mode 100644 index 0000000..a0c5a90 --- /dev/null +++ b/test/w3c/namespace/test159.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. +The send tag will raise an error so var1 should not be incremented. If it is fail, otherwise succeed --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="thisWillFail" target="baz"/> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test172.scxml b/test/w3c/namespace/test172.scxml new file mode 100644 index 0000000..e02aaea --- /dev/null +++ b/test/w3c/namespace/test172.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that eventexpr uses the current value of var1, not its initial value --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'event1'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="'event2'"/> + <scxml:send eventexpr="Var1"/> + </scxml:onentry> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test173.scxml b/test/w3c/namespace/test173.scxml new file mode 100644 index 0000000..0fccd16 --- /dev/null +++ b/test/w3c/namespace/test173.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that targetexpr uses the current value of var1, not its initial value +(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="27"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="'#_internal'"/> + <scxml:send targetexpr="Var1" event="event1"/> + </scxml:onentry> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test174.scxml b/test/w3c/namespace/test174.scxml new file mode 100644 index 0000000..32421fc --- /dev/null +++ b/test/w3c/namespace/test174.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that typeexpr uses the current value of var1, not its initial value +(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="27"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"/> + <scxml:send typeexpr="Var1" event="event1"/> + </scxml:onentry> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test175.scxml b/test/w3c/namespace/test175.scxml new file mode 100644 index 0000000..eeb58d8 --- /dev/null +++ b/test/w3c/namespace/test175.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that delayexpr uses the current value of var1, not its initial value +(If it uses the initial value, event2 will be generated first, before event1. If it uses the current value, +event1 will be raised first. Succeed if event1 occurs before event2, otherwise fail --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'0s'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="'1s'"/> + <scxml:send delayexpr="Var1" event="event2"/> + <scxml:send delayexpr="'.5s'" event="event1"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"/> + <scxml:transition event="event2" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test176.scxml b/test/w3c/namespace/test176.scxml new file mode 100644 index 0000000..1dfb931 --- /dev/null +++ b/test/w3c/namespace/test176.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that <param> uses the current value of var1, not its initial value. If the value of +aParam in event1 is 2 so that var2 gets set to 2, success, otherwise failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="2"/> + <scxml:send event="event1"> + <scxml:param name="aParam" expr="Var1"/> + </scxml:send> + </scxml:onentry> + <scxml:transition event="event1" target="s1"> + <scxml:assign location="Var2" expr="_event.data.aParam"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var2==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test178.scxml b/test/w3c/namespace/test178.scxml new file mode 100644 index 0000000..6f1cc6e --- /dev/null +++ b/test/w3c/namespace/test178.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that multiple key/value pairs are included, even when the keys are the same. +This is a manual test. The tester must look at the log output and verify that both +keys are there. (This test uses the SCXML Event I/O processor, which is the only +one that all platforms must support. It does not specify the message format, so +we cannot test _event.raw directly. Therefore we print it out for visual +inspection.) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1"> + <scxml:param name="Var1" expr="2"/> + <scxml:param name="Var1" expr="3"/> + </scxml:send> + </scxml:onentry> + <scxml:transition event="event1" target="final"> + <scxml:log label="_event " expr="_event.raw"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="final"/> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test179.scxml b/test/w3c/namespace/test179.scxml new file mode 100644 index 0000000..813e095 --- /dev/null +++ b/test/w3c/namespace/test179.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that <content> can be used to populate body of a message --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1"> + <scxml:content>123</scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="event1" cond="_event.data == 123" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test183.scxml b/test/w3c/namespace/test183.scxml new file mode 100644 index 0000000..c92daaf --- /dev/null +++ b/test/w3c/namespace/test183.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that <send> stores the value of the sendid in idlocation. If it does, +var1 has a value and we pass. Otherwise we fail --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1" idlocation="Var1"/> + </scxml:onentry> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test185.scxml b/test/w3c/namespace/test185.scxml new file mode 100644 index 0000000..415b315 --- /dev/null +++ b/test/w3c/namespace/test185.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that <send> respects the delay specification. If it does, event1 arrives before event2 + and we pass. Otherwise we fail --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event2" delayexpr="'1s'"/> + <scxml:send event="event1"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test186.scxml b/test/w3c/namespace/test186.scxml new file mode 100644 index 0000000..76790a9 --- /dev/null +++ b/test/w3c/namespace/test186.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the +message is actually sent. If it does, aParam will have the value of 1 (even though var1 has been incremented +in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1" delayexpr="'1s'"> + <scxml:param name="aParam" expr="Var1"/> + </scxml:send> + <scxml:assign location="Var1" expr="2"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"> + <scxml:assign location="Var2" expr="_event.data.aParam"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var2==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test187.scxml b/test/w3c/namespace/test187.scxml new file mode 100644 index 0000000..dc7fa1d --- /dev/null +++ b/test/w3c/namespace/test187.scxml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that delayed <send> is not sent if the sending session terminates. In this case, +a subscript is invoked which sends the event childToParent delayed by 1 second, and then terminates. The +parent session, should not receive childToParent. If it does, we fail. Otherwise the +10 sec timer expires and we pass --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'1s'"/> + </scxml:onentry> + <scxml:invoke type="scxml"> + <scxml:content> + <!-- exit before the delayed send can execute --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="childToParent" target="#_parent" delayexpr="'.5s'"/> + </scxml:onentry> + <scxml:transition target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="childToParent" target="fail"/> + <scxml:transition event="timeout" target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test189.scxml b/test/w3c/namespace/test189.scxml new file mode 100644 index 0000000..7f31149 --- /dev/null +++ b/test/w3c/namespace/test189.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, +event1 will be processed before event2, because event1 is added to the internal queue while event2 is +added to the external queue (event though event2 is generated first) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- goes to the external queue --> + <scxml:send event="event2"/> + <!-- to the internal queue --> + <scxml:send event="event1" target="#_internal"/> + </scxml:onentry> + <!-- once we've entered the state, we should check for internal events first --> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="event2" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test190.scxml b/test/w3c/namespace/test190.scxml new file mode 100644 index 0000000..6b7bfbb --- /dev/null +++ b/test/w3c/namespace/test190.scxml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, +event1 will be processed before event2, because event1 is added to the internal queue while event2 is +added to the external queue (event though event2 is generated first). we have to make sure that event2 +is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'#_scxml_'"/> + <scxml:data id="Var2" expr="_sessionid"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="Var1 + Var2"/> + <!-- goes to the external queue --> + <scxml:send event="event2" targetexpr="Var1"/> + <!-- to the internal queue --> + <scxml:raise event="event1"/> + <!-- this should get added to the external queue after event2 --> + <scxml:send event="timeout"/> + </scxml:onentry> + <!-- once we've entered the state, we should check for internal events first --> + <scxml:transition event="event1" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <!-- now check that we get event2 and not a timeout --> + <scxml:state id="s1"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test191.scxml b/test/w3c/namespace/test191.scxml new file mode 100644 index 0000000..57415aa --- /dev/null +++ b/test/w3c/namespace/test191.scxml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event +childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we +pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="5s"/> + </scxml:onentry> + <scxml:invoke type="scxml"> + <scxml:content> + <!-- send an event to the parent session using #_parent as the target --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="childToParent" target="#_parent"/> + </scxml:onentry> + <scxml:transition target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="childToParent" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test192.scxml b/test/w3c/namespace/test192.scxml new file mode 100644 index 0000000..d3cf3f1 --- /dev/null +++ b/test/w3c/namespace/test192.scxml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us +childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. +If it receives this event, it sends sends the event eventReceived to its parent session (ths session). +If we get this event, we pass, otherwise the child script eventually times out sends invoke.done and we fail. +We also set a timeout in this process to make sure the test doesn't hang --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="5s"/> + </scxml:onentry> + <scxml:invoke type="scxml" id="invokedChild"> + <scxml:content> + <!-- let the parent session know we're running by sending childToParent, then wait for parentToChild. + If we get it, send eventReceived. If we don't we eventually time out --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="childToParent" target="#_parent"/> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:transition event="parentToChild" target="subFinal"> + <scxml:send target="#_parent" event="eventReceived"/> + </scxml:transition> + <scxml:transition event="timeout" target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="timeout" target="fail"/> + <scxml:transition event="done.invoke" target="fail"/> + <scxml:state id="s01"> + <scxml:transition event="childToParent" target="s02"> + <scxml:send target="#_invokedChild" event="parentToChild"/> + </scxml:transition> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="eventReceived" target="pass"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test193.scxml b/test/w3c/namespace/test193.scxml new file mode 100644 index 0000000..9638db9 --- /dev/null +++ b/test/w3c/namespace/test193.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that omitting target and targetexpr of <send> when using the +SCXML event i/o processor puts the event on the external queue. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="internal"/> + <!-- this should put event1 in the external queue --> + <scxml:send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="internal" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="timeout" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test194.scxml b/test/w3c/namespace/test194.scxml new file mode 100644 index 0000000..7693ce8 --- /dev/null +++ b/test/w3c/namespace/test194.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, +we succeed. Otherwise we eventually timeout and fail. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- should cause an error --> + <scxml:send target="baz" event="event2"/> + <!-- this will get added to the external event queue after the error has been raised --> + <scxml:send event="timeout"/> + </scxml:onentry> + <!-- once we've entered the state, we should check for internal events first --> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test198.scxml b/test/w3c/namespace/test198.scxml new file mode 100644 index 0000000..49a0e58 --- /dev/null +++ b/test/w3c/namespace/test198.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell +what processor was used is to look at the origintype of the resulting event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1"/> + <scxml:send event="timeout"/> + </scxml:onentry> + <scxml:transition event="event1" cond=" _event.origintype == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test199.scxml b/test/w3c/namespace/test199.scxml new file mode 100644 index 0000000..67e6cd8 --- /dev/null +++ b/test/w3c/namespace/test199.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that using an invalid send type results in error.execution --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="27" event="event1"/> + <scxml:send event="timeout"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test200.scxml b/test/w3c/namespace/test200.scxml new file mode 100644 index 0000000..60c4595 --- /dev/null +++ b/test/w3c/namespace/test200.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the processor supports the scxml event i/o processor --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event1"/> + <scxml:send event="timeout"/> + </scxml:onentry> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test201.scxml b/test/w3c/namespace/test201.scxml new file mode 100644 index 0000000..587bfc4 --- /dev/null +++ b/test/w3c/namespace/test201.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the processor supports the basic http event i/o processor. This is an optional +test since platforms are not required to support basic http event i/o --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors['basichttp']['location']" event="event1"/> + <scxml:send event="timeout"/> + </scxml:onentry> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test205.scxml b/test/w3c/namespace/test205.scxml new file mode 100644 index 0000000..f2778ac --- /dev/null +++ b/test/w3c/namespace/test205.scxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the processor doesn't change the message. We can't test that it never does this, but +at least we can check that the event name and included data are the same as we sent. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="event1"> + <scxml:param name="aParam" expr="1"/> + </scxml:send> + <scxml:send event="timeout"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"> + <scxml:assign location="Var1" expr="_event.data.aParam"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test207.scxml b/test/w3c/namespace/test207.scxml new file mode 100644 index 0000000..510e201 --- /dev/null +++ b/test/w3c/namespace/test207.scxml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies +us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event + event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event +raised in another session, but the spec doesn't define any way to refer to an event in another process --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'2s'"/> + </scxml:onentry> + <scxml:invoke type="scxml"> + <scxml:content> + <!-- when invoked, we raise a delayed event1 with sendid 'foo' and notify our parent. Then we wait. + If event1 occurs, the parent hasn't succeeded in canceling it and we return pass. If event2 occurs + it means event1 was canceled (because event2 is delayed longer than event1) and we return 'fail'. --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="event1" id="foo" delayexpr="'1s'"/> + <scxml:send event="event2" delayexpr="'1.5s'"/> + <scxml:send target="#_parent" event="childToParent"/> + </scxml:onentry> + <scxml:transition event="event1" target="subFinal"> + <scxml:send target="#_parent" event="pass"/> + </scxml:transition> + <scxml:transition event="*" target="subFinal"> + <scxml:send target="#_parent" event="fail"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:state id="s01"> + <scxml:transition event="childToParent" target="s02"> + <scxml:cancel sendid="foo"/> + </scxml:transition> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="pass" target="pass"/> + <scxml:transition event="fail" target="fail"/> + <scxml:transition event="timeout" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test208.scxml b/test/w3c/namespace/test208.scxml new file mode 100644 index 0000000..cd3fbb3 --- /dev/null +++ b/test/w3c/namespace/test208.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that cancel works. We cancel delayed event1. If cancel works, we get event2 first and pass. If +we get event1 or an error first, cancel didn't work and we fail. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send id="foo" event="event1" delayexpr="'1s'"/> + <scxml:send event="event2" delayexpr="'1.5s'"/> + <scxml:cancel sendid="foo"/> + </scxml:onentry> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test210.scxml b/test/w3c/namespace/test210.scxml new file mode 100644 index 0000000..435775c --- /dev/null +++ b/test/w3c/namespace/test210.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that sendidexpr works with cancel. If it takes the most recent value of var1, it should cancel +delayed event1. Thus we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'bar'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send id="foo" event="event1" delayexpr="'1s'"/> + <scxml:send event="event2" delayexpr="'1.5s'"/> + <scxml:assign location="Var1" expr="'foo'"/> + <scxml:cancel sendidexpr="Var1"/> + </scxml:onentry> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test215.scxml b/test/w3c/namespace/test215.scxml new file mode 100644 index 0000000..f4beeaa --- /dev/null +++ b/test/w3c/namespace/test215.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that typexpr is evaluated at runtime. If the original value of var1 is used, the invocation +will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If +the runtime value is used, the invocation will succeed --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'foo'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="5s"/> + <scxml:assign location="Var1" expr="'http://www.w3.org/TR/scxml/'"/> + </scxml:onentry> + <scxml:invoke typeexpr="Var1"> + <scxml:content> + <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> + <scxml:scxml initial="subFinal" datamodel="ecmascript" version="1.0"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test216.scxml b/test/w3c/namespace/test216.scxml new file mode 100644 index 0000000..43244eb --- /dev/null +++ b/test/w3c/namespace/test216.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that srcexpr is evaluated at runtime. If the original value of var1 is used, the invocation +will fail (assuming that there is no script named 'foo'). If +the runtime value is used, the invocation will succeed --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'foo'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="5s"/> + <scxml:assign location="Var1" expr="'file:test216sub1.scxml'"/> + </scxml:onentry> + <scxml:invoke srcexpr="Var1" type="http://www.w3.org/TR/scxml"/> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test216sub1.scxml b/test/w3c/namespace/test216sub1.scxml new file mode 100644 index 0000000..53e751d --- /dev/null +++ b/test/w3c/namespace/test216sub1.scxml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="ecmascript"> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test220.scxml b/test/w3c/namespace/test220.scxml new file mode 100644 index 0000000..26b5ec0 --- /dev/null +++ b/test/w3c/namespace/test220.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the scxml type is supported. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="5s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test223.scxml b/test/w3c/namespace/test223.scxml new file mode 100644 index 0000000..fab31fa --- /dev/null +++ b/test/w3c/namespace/test223.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that idlocation is supported. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> + <scxml:content> + <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="*" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test224.scxml b/test/w3c/namespace/test224.scxml new file mode 100644 index 0000000..bedf703 --- /dev/null +++ b/test/w3c/namespace/test224.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the automatically generated id has the form stateid.platformid. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2" expr="'s0.'"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> + <scxml:content> + <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> + <scxml:scxml version="1.0" initial="subFinal" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="*" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="(function(str, starts){if (starts === '') return true;if (str == null || starts == null) return false;str = String(str); starts = String(starts);return str.length >= starts.length && str.slice(0, starts.length) === starts;})(Var1, Var2)" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test225.scxml b/test/w3c/namespace/test225.scxml new file mode 100644 index 0000000..a3ec355 --- /dev/null +++ b/test/w3c/namespace/test225.scxml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> + <scxml:content> + <scxml:scxml initial="subFinal1" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal1"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:invoke type="http://www.w3.org/TR/scxml/" idlocation="Var2"> + <scxml:content> + <scxml:scxml initial="subFinal2" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="*" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1===Var2" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test226.scxml b/test/w3c/namespace/test226.scxml new file mode 100644 index 0000000..02fc375 --- /dev/null +++ b/test/w3c/namespace/test226.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- this is basically just a test that invoke works correctly and that you can pass data +to the invoked process. If the invoked session finds aParam==1, it exits, signalling +success. otherwise it will hang and the timeout in this doc signifies failure. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" src="file:test226sub1.scxml"> + <scxml:param name="Var1" expr="1"/> + </scxml:invoke> + <scxml:transition event="varBound" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test226sub1.scxml b/test/w3c/namespace/test226sub1.scxml new file mode 100644 index 0000000..a1d543d --- /dev/null +++ b/test/w3c/namespace/test226sub1.scxml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- when invoked, if var1 has a value notify parent. Then terminate. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="final"> + <scxml:send target="#_parent" event="varBound"/> + </scxml:transition> + <scxml:transition target="final"/> + </scxml:state> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test228.scxml b/test/w3c/namespace/test228.scxml new file mode 100644 index 0000000..2e7dc2b --- /dev/null +++ b/test/w3c/namespace/test228.scxml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the invokeid is included in events returned from the invoked process. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" id="foo"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke" target="s1"> + <scxml:assign location="Var1" expr="_event.invokeid"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1=='foo'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test229.scxml b/test/w3c/namespace/test229.scxml new file mode 100644 index 0000000..2dfa8c5 --- /dev/null +++ b/test/w3c/namespace/test229.scxml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that autofoward works. If the child process receives back a copy of the +childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note +that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise +it eventually times out and the done.invoke signals failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> + <scxml:content> + <!-- when invoked, send childToParent to parent. + If it is forwarded back to us, send + eventReceived to signal success and terminate. + Otherwise wait for timer to expire and terminate. --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send target="#_parent" event="childToParent"/> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:transition event="childToParent" target="subFinal"> + <scxml:send target="#_parent" event="eventReceived"/> + </scxml:transition> + <scxml:transition event="*" target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="childToParent"/> + <scxml:transition event="eventReceived" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test230.scxml b/test/w3c/namespace/test230.scxml new file mode 100644 index 0000000..3b610e8 --- /dev/null +++ b/test/w3c/namespace/test230.scxml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- a manual test that an autofowarded event has the same fields and values as the original event. +the child process sends the parent process an event which is forwarded back to it. +Both the parent and child process print out the contents of the event. The tester +must check if they are the same and report his result. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> + <scxml:content> + <!-- when invoked, send childToParent to parent. If it is forwarded back to us, print out its + fields and terminate. --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send target="#_parent" event="childToParent"/> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="childToParent" target="subFinal"> + <scxml:log label="name is " expr="_event.name"/> + <scxml:log label="type is " expr="_event.type"/> + <scxml:log label="sendid is " expr="_event.sendid"/> + <scxml:log label="origin is " expr="_event.origin"/> + <scxml:log label="origintype is " expr="_event.origintype"/> + <scxml:log label="invokeid is " expr="_event.invokeid"/> + <scxml:log label="data is " expr="_event.data"/> + </scxml:transition> + <scxml:transition event="*" target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="timeout" target="final"/> + <scxml:state id="s01"> + <scxml:transition event="childToParent" target="s02"> + <scxml:log label="name is " expr="_event.name"/> + <scxml:log label="type is " expr="_event.type"/> + <scxml:log label="sendid is " expr="_event.sendid"/> + <scxml:log label="origin is " expr="_event.origin"/> + <scxml:log label="origintype is " expr="_event.origintype"/> + <scxml:log label="invokeid is " expr="_event.invokeid"/> + <scxml:log label="data is " expr="_event.data"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s02"> + <!-- wait till we get the done event to ensure that the child process has time to print out its results --> + <scxml:transition event="done.invoke" target="final"/> + </scxml:state> + </scxml:state> + <scxml:final id="final"/> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test232.scxml b/test/w3c/namespace/test232.scxml new file mode 100644 index 0000000..9d19070 --- /dev/null +++ b/test/w3c/namespace/test232.scxml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a parent process can receive multiple events from a child process --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"> + <scxml:onentry> + <scxml:send target="#_parent" event="childToParent1"/> + <scxml:send target="#_parent" event="childToParent2"/> + </scxml:onentry> + </scxml:final> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:transition event="childToParent1" target="s02"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="childToParent2" target="s03"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="done.invoke" target="pass"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test233.scxml b/test/w3c/namespace/test233.scxml new file mode 100644 index 0000000..54f945f --- /dev/null +++ b/test/w3c/namespace/test233.scxml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that finalize markup runs before the event is processed. The invoked process will +return 2 in _event.data.aParam, so that new value should be in force when we select +the transtitions. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"> + <scxml:onentry> + <scxml:send target="#_parent" event="childToParent"> + <scxml:param name="aParam" expr="2"/> + </scxml:send> + </scxml:onentry> + </scxml:final> + </scxml:scxml> + </scxml:content> + <scxml:finalize> + <scxml:assign location="Var1" expr="_event.data.aParam"/> + </scxml:finalize> + </scxml:invoke> + <scxml:transition event="childToParent" cond="Var1==2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test234.scxml b/test/w3c/namespace/test234.scxml new file mode 100644 index 0000000..ebd9acf --- /dev/null +++ b/test/w3c/namespace/test234.scxml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that only finalize markup in the invoking state runs. the first invoked process will +return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. +Only the first finalize should execute. So when we get to s1 var1 should have value 2 but +var2 should still be set to 1 --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="p0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + <scxml:data id="Var2" expr="1"/> + </scxml:datamodel> + <scxml:parallel id="p0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="p01"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml version="1.0" initial="subFinal1" datamodel="ecmascript"> + <scxml:final id="subFinal1"> + <scxml:onentry> + <scxml:send target="#_parent" event="childToParent"> + <scxml:param name="aParam" expr="2"/> + </scxml:send> + </scxml:onentry> + </scxml:final> + </scxml:scxml> + </scxml:content> + <scxml:finalize> + <scxml:assign location="Var1" expr="_event.data.aParam"/> + </scxml:finalize> + </scxml:invoke> + <scxml:transition event="childToParent" cond="Var1==2" target="s1"/> + <scxml:transition event="childToParent" target="fail"/> + </scxml:state> + <scxml:state id="p02"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml version="1.0" initial="sub0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="subFinal2"/> + </scxml:state> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + <scxml:finalize> + <scxml:assign location="Var2" expr="_event.data.aParam"/> + </scxml:finalize> + </scxml:invoke> + </scxml:state> + </scxml:parallel> + <scxml:state id="s1"> + <scxml:transition cond="Var2==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test235.scxml b/test/w3c/namespace/test235.scxml new file mode 100644 index 0000000..7eec177 --- /dev/null +++ b/test/w3c/namespace/test235.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that done.invoke.id event has the right id. the invoked child terminates immediately +and should generate done.invoke.foo --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" id="foo"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke.foo" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test236.scxml b/test/w3c/namespace/test236.scxml new file mode 100644 index 0000000..a064c6c --- /dev/null +++ b/test/w3c/namespace/test236.scxml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that done.invoke.id event is the last event we receive. the invoked process sends childToParent +in the exit handler of its final state. We should get it before the done.invoke, and we should get no +events after the done.invoke. Hence timeout indicates success --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'2s'"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"> + <scxml:onexit> + <scxml:send target="#_parent" event="childToParent"/> + </scxml:onexit> + </scxml:final> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="childToParent" target="s1"/> + <scxml:transition event="done.invoke" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <!-- here we should get done.invoke --> + <scxml:transition event="done.invoke" target="s2"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition event="timeout" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test237.scxml b/test/w3c/namespace/test237.scxml new file mode 100644 index 0000000..6411566 --- /dev/null +++ b/test/w3c/namespace/test237.scxml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We +sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. +If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by +the time timeout2 fires, success --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout1" delayexpr="'1s'"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <!-- when invoked, sleep for 2 secs then terminate. Parent will try to cancel this session --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'2s'"/> + </scxml:onentry> + <scxml:transition event="timeout" target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="timeout1" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:send event="timeout2" delayexpr="'1.5s'"/> + </scxml:onentry> + <!-- here we should NOT get done.invoke --> + <scxml:transition event="done.invoke" target="fail"/> + <scxml:transition event="*" target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test239.scxml b/test/w3c/namespace/test239.scxml new file mode 100644 index 0000000..0199eb8 --- /dev/null +++ b/test/w3c/namespace/test239.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that markup can be specified both by 'src' and by <content> --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:invoke type="http://www.w3.org/TR/scxml/" src="file:test239sub1.scxml"/> + <scxml:transition event="done.invoke" target="s02"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <!-- identical to test239sub1.scxml. --> + <scxml:content> + <scxml:scxml version="1.0" initial="final" datamodel="ecmascript"> + <scxml:final id="final"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke" target="pass"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test239sub1.scxml b/test/w3c/namespace/test239sub1.scxml new file mode 100644 index 0000000..49d2bdb --- /dev/null +++ b/test/w3c/namespace/test239sub1.scxml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- when invoked, just terminate. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="ecmascript"> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test240.scxml b/test/w3c/namespace/test240.scxml new file mode 100644 index 0000000..d475e0b --- /dev/null +++ b/test/w3c/namespace/test240.scxml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that datamodel values can be specified both by 'namelist' and by <param>. +invoked child will return success if its Var1 is set to 1, failure otherwise. This +test will fail schema validation because of the multiple occurences of Var1, but +should run correctly. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> + <scxml:content> + <scxml:scxml initial="sub01" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub01"> + <scxml:transition cond="Var1===1" target="subFinal1"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal1"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal1"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="s02"/> + <scxml:transition event="failure" target="fail"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:param name="Var1" expr="1"/> + <scxml:content> + <scxml:scxml initial="sub02" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub02"> + <scxml:transition cond="Var1==1" target="subFinal2"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal2"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="failure" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test241.scxml b/test/w3c/namespace/test241.scxml new file mode 100644 index 0000000..fe36e96 --- /dev/null +++ b/test/w3c/namespace/test241.scxml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- The child process will return success ifits Var1 is set to 1, failure otherwise. For this test +we try passing in Var1 by param and by namelist and check that we either get two successes +or two failures. This test will fail schema validation due to multiple declarations of +Var1, but should run correctly. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> + <scxml:content> + <scxml:scxml initial="sub01" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub01"> + <scxml:transition cond="Var1==1" target="subFinal1"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal1"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal1"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="s02"/> + <scxml:transition event="failure" target="s03"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:param name="Var1" expr="1"/> + <scxml:content> + <scxml:scxml initial="sub02" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub02"> + <scxml:transition cond="Var1==1" target="subFinal2"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal2"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- we got success in s01, so we need to do so here --> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="failure" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:param name="Var1" expr="1"/> + <scxml:content> + <scxml:scxml initial="sub03" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub03"> + <scxml:transition cond="Var1==1" target="subFinal3"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal3"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal3"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- we got failure in s01, so we need to do so here --> + <scxml:transition event="failure" target="pass"/> + <scxml:transition event="success" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test242.scxml b/test/w3c/namespace/test242.scxml new file mode 100644 index 0000000..2544947 --- /dev/null +++ b/test/w3c/namespace/test242.scxml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that markup specified by 'src' and by <content> is treated the same way. That means that +either we get done.invoke in both cases or in neither case (in which case we timeout) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout1" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:invoke type="http://www.w3.org/TR/scxml/" src="file:test242sub1.scxml"/> + <scxml:transition event="done.invoke" target="s02"/> + <scxml:transition event="timeout1" target="s03"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:onentry> + <scxml:send event="timeout2" delay="1s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <!-- identical to test242sub1.scxml. --> + <scxml:content> + <scxml:scxml version="1.0" initial="subFinal1" datamodel="ecmascript"> + <scxml:final id="subFinal1"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- we got done.invoke last time, so we need it this time too --> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="timeout2" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:onentry> + <scxml:send event="timeout3" delay="1s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <!-- identical to test242sub1.scxml. --> + <scxml:content> + <scxml:scxml version="1.0" initial="subFinal2" datamodel="ecmascript"> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- we got timeout last time, so we need it this time too --> + <scxml:transition event="timeout3" target="pass"/> + <scxml:transition event="done.invoke" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test242sub1.scxml b/test/w3c/namespace/test242sub1.scxml new file mode 100644 index 0000000..49d2bdb --- /dev/null +++ b/test/w3c/namespace/test242sub1.scxml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- when invoked, just terminate. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="ecmascript"> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test243.scxml b/test/w3c/namespace/test243.scxml new file mode 100644 index 0000000..f3dd183 --- /dev/null +++ b/test/w3c/namespace/test243.scxml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that datamodel values can be specified by param. +test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:param name="Var1" expr="1"/> + <scxml:content> + <scxml:scxml version="1.0" initial="sub0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub0"> + <scxml:transition cond="Var1==1" target="subFinal"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test244.scxml b/test/w3c/namespace/test244.scxml new file mode 100644 index 0000000..f7165ba --- /dev/null +++ b/test/w3c/namespace/test244.scxml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that datamodel values can be specified by namelist. +invoked child will return success ifits Var1 is set to 1, failure otherwise. +This test will fail schema validation due to multiple occurrences of Var1, +but should run correctly. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="sub0"> + <scxml:transition cond="Var1==1" target="subFinal"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test245.scxml b/test/w3c/namespace/test245.scxml new file mode 100644 index 0000000..901ab0a --- /dev/null +++ b/test/w3c/namespace/test245.scxml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that non-existent datamodel values are not set. Var2 is not defined in +invoked child's datamodel. It will will return success if its Var2 remains unbound, failure otherwise. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var2" expr="3"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/" namelist="Var2"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:transition cond="Var2" target="subFinal"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + <scxml:transition target="subFinal"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test247.scxml b/test/w3c/namespace/test247.scxml new file mode 100644 index 0000000..71c797e --- /dev/null +++ b/test/w3c/namespace/test247.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we get done.invoke. timeout indicates failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml version="1.0" initial="subFinal" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="timeout" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test250.scxml b/test/w3c/namespace/test250.scxml new file mode 100644 index 0000000..396a1ba --- /dev/null +++ b/test/w3c/namespace/test250.scxml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the onexit handlers run in the invoked process if it is cancelled. This has to be a +manual test, since this process won't accept any events from the child process once it has been cancelled. +Tester must examine log output from child process to determine success --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0" initial="sub01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="subFinal"/> + <scxml:onexit> + <scxml:log expr="'Exiting sub0'"/> + </scxml:onexit> + <scxml:state id="sub01"> + <scxml:onexit> + <scxml:log expr="'Exiting sub01'"/> + </scxml:onexit> + </scxml:state> + </scxml:state> + <scxml:final id="subFinal"> + <scxml:onentry> + <scxml:log expr="'entering final state, invocation was not cancelled'"/> + </scxml:onentry> + </scxml:final> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- this transition will cause the invocation to be cancelled --> + <scxml:transition event="foo" target="final"/> + </scxml:state> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test252.scxml b/test/w3c/namespace/test252.scxml new file mode 100644 index 0000000..54a1956 --- /dev/null +++ b/test/w3c/namespace/test252.scxml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we don't process any events received from the invoked process once it is cancelled. child +process tries to send us childToParent in an onexit handler. If we get it, we fail. +timeout indicates success. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'1s'"/> + </scxml:onentry> + <scxml:transition event="timeout" target="pass"/> + <scxml:transition event="childToParent" target="fail"/> + <scxml:transition event="done.invoke" target="fail"/> + <scxml:state id="s01"> + <scxml:onentry> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'.5s'"/> + </scxml:onentry> + <scxml:transition event="timeout" target="subFinal"/> + <scxml:onexit> + <scxml:send target="#_parent" event="childToParent"/> + </scxml:onexit> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <!-- this transition will cause the invocation to be cancelled --> + <scxml:transition event="foo" target="s02"/> + </scxml:state> + <scxml:state id="s02"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test253.scxml b/test/w3c/namespace/test253.scxml new file mode 100644 index 0000000..468c532 --- /dev/null +++ b/test/w3c/namespace/test253.scxml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the scxml event processor is used in both directions. If child process uses the +scxml event i/o processor to communicate with us, send it an event. It will send back success if +this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow +'scxml' as an alternative to the full url. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:invoke type="scxml" id="foo"> + <scxml:content> + <!-- inform parent we're running then wait for it to send us an event. If it uses the scxml event i/o + processor to do so, return success, otherwise return failure. --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send target="#_parent" event="childRunning"/> + </scxml:onentry> + <scxml:transition event="parentToChild" target="sub1"> + <scxml:assign location="Var2" expr="_event.origintype"/> + </scxml:transition> + </scxml:state> + <scxml:state id="sub1"> + <scxml:transition cond="Var2=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition cond="Var2=='scxml'" target="subFinal"> + <scxml:send target="#_parent" event="success"/> + </scxml:transition> + <scxml:transition target="subFinal"> + <scxml:send target="#_parent" event="failure"/> + </scxml:transition> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:state id="s01"> + <scxml:transition event="childRunning" target="s02"> + <scxml:assign location="Var1" expr="_event.origintype"/> + </scxml:transition> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03"> + <scxml:send target="#_foo" event="parentToChild"/> + </scxml:transition> + <scxml:transition cond="Var1=='scxml'" target="s03"> + <scxml:send target="#_foo" event="parentToChild"/> + </scxml:transition> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="success" target="pass"/> + <scxml:transition event="fail" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test276.scxml b/test/w3c/namespace/test276.scxml new file mode 100644 index 0000000..04a0bdc --- /dev/null +++ b/test/w3c/namespace/test276.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that values passed in from parent process override default values specified in the child, test276sub1.scxml. +The child returns event1 if var1 has value 1, event0 if it has default value 0. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:invoke type="scxml" src="file:test276sub1.scxml"> + <scxml:param name="Var1" expr="1"/> + </scxml:invoke> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="event0" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test276sub1.scxml b/test/w3c/namespace/test276sub1.scxml new file mode 100644 index 0000000..96851d1 --- /dev/null +++ b/test/w3c/namespace/test276sub1.scxml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- define var1 with default value 0. Parent will invoke this process setting var1 = 1. Return event1 if var1 == 1, event0 otherwise --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1==1" target="final"> + <scxml:send target="#_parent" event="event1"/> + </scxml:transition> + <scxml:transition target="final"> + <scxml:send target="#_parent" event="event0"/> + </scxml:transition> + </scxml:state> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test277.scxml b/test/w3c/namespace/test277.scxml new file mode 100644 index 0000000..6896f8e --- /dev/null +++ b/test/w3c/namespace/test277.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that platform creates undound variable if we assign an illegal value to it. Thus + we can assign to it later in state s1. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="return"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" cond="typeof Var1 === 'undefined' " target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="Var1" expr="1"/> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test278.scxml b/test/w3c/namespace/test278.scxml new file mode 100644 index 0000000..43a0e93 --- /dev/null +++ b/test/w3c/namespace/test278.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <!-- test that a variable can be accessed from a state that is outside its lexical scope --> + <scxml:state id="s0"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test279.scxml b/test/w3c/namespace/test279.scxml new file mode 100644 index 0000000..af2c2f7 --- /dev/null +++ b/test/w3c/namespace/test279.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- testing that in case of early binding variables are assigned values at init time, before + the state containing them is visited --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test280.scxml b/test/w3c/namespace/test280.scxml new file mode 100644 index 0000000..c268293 --- /dev/null +++ b/test/w3c/namespace/test280.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test late binding. var2 won't get bound until s1 is entered, so it shouldn't have a value in s0 and +accessing it should cause an error. It should get bound before the onentry code in s1 so it should be +possible access it there and assign its value to var1 --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" binding="late"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="typeof Var2 === 'undefined' " target="s1"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var2" expr="1"/> + </scxml:datamodel> + <scxml:onentry> + <scxml:assign location="Var1" expr="Var2"/> + </scxml:onentry> + <scxml:transition cond="Var1===Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test286.scxml b/test/w3c/namespace/test286.scxml new file mode 100644 index 0000000..d27589c --- /dev/null +++ b/test/w3c/namespace/test286.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case +where no error is raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="foo.bar.baz " expr="1"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test287.scxml b/test/w3c/namespace/test287.scxml new file mode 100644 index 0000000..53beb66 --- /dev/null +++ b/test/w3c/namespace/test287.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- a simple test that a legal value may be assigned to a valid data model location --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="1"/> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test288.scxml b/test/w3c/namespace/test288.scxml new file mode 100644 index 0000000..1a3331a --- /dev/null +++ b/test/w3c/namespace/test288.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- a simple test that a legal value may be assigned to a valid data model location +using child content --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1">123</scxml:assign> + </scxml:onentry> + <scxml:transition cond="Var1 == 123" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test294.scxml b/test/w3c/namespace/test294.scxml new file mode 100644 index 0000000..e401f1b --- /dev/null +++ b/test/w3c/namespace/test294.scxml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a param inside donedata ends up in the data field of the done event and +that content inside donedata sets the full value of the event.data field --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:transition event="done.state.s0" cond="_event.data['Var1']==1" target="s1"> + </scxml:transition> + <scxml:transition event="done.state.s0" target="fail"> + </scxml:transition> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:param name="Var1" expr="1"/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <scxml:state id="s1" initial="s11"> + <scxml:transition event="done.state.s1" cond="_event.data == 'foo'" target="pass"> + </scxml:transition> + <scxml:transition event="done.state.s1" target="fail"> + </scxml:transition> + <scxml:state id="s11"> + <scxml:transition target="s12"/> + </scxml:state> + <scxml:final id="s12"> + <scxml:donedata> + <scxml:content>foo</scxml:content> + </scxml:donedata> + </scxml:final> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test298.scxml b/test/w3c/namespace/test298.scxml new file mode 100644 index 0000000..9767fc3 --- /dev/null +++ b/test/w3c/namespace/test298.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:param name="Var3" location="foo.bar.baz "/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test301.scxml b/test/w3c/namespace/test301.scxml new file mode 100644 index 0000000..2e5dcbb --- /dev/null +++ b/test/w3c/namespace/test301.scxml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- the processor should reject this document because it can't download the script. +Therefore we fail if it runs at all. This test is valid only for datamodels that support scripting --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0"> + <scxml:script src="D:\foo"/> + <scxml:state id="s0"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test302.scxml b/test/w3c/namespace/test302.scxml new file mode 100644 index 0000000..7d8da19 --- /dev/null +++ b/test/w3c/namespace/test302.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a script is evaluated at load time. <conf:script> shoudl assign the value 1 to +Var1. Hence, if script is evaluated at download time, Var1 has a value in the initial state s0. +This test is valid only for datamodels that support scripting --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:script>var Var1 = 1</scxml:script> + <scxml:state id="s0"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test303.scxml b/test/w3c/namespace/test303.scxml new file mode 100644 index 0000000..1318da9 --- /dev/null +++ b/test/w3c/namespace/test303.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the +right point. This test is valid only for datamodels that support scripting --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="2"/> + <scxml:script>var Var1 = 1</scxml:script> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test304.scxml b/test/w3c/namespace/test304.scxml new file mode 100644 index 0000000..54febfb --- /dev/null +++ b/test/w3c/namespace/test304.scxml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a variable declared by a script can be accessed like any other part of the data model --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0" initial="s0"> + <scxml:script>var Var1 = 1</scxml:script> + <scxml:state id="s0"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test307.scxml b/test/w3c/namespace/test307.scxml new file mode 100644 index 0000000..4268ef4 --- /dev/null +++ b/test/w3c/namespace/test307.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0" initial="s0" binding="late"> + <!-- with binding=late, in s0 we access a variable that isn't created until we get to s1. Then in s1 +we access a non-existent substructure of a variable. We use log tags to report the values that both operations +yield, and whether there are errors. This is a manual test, since the tester must report whether the output +is the same in the two cases --> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:log label="entering s0 value of Var 1 is: " expr="Var1"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error" target="s1"> + <scxml:log label="error in state s0" expr="_event"/> + </scxml:transition> + <scxml:transition event="foo" target="s1"> + <scxml:log label="no error in s0" expr=""/> + </scxml:transition> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:onentry> + <scxml:log label="entering s1, value of non-existent substructure of Var 1 is: " expr="Var1.bar"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="error" target="final"> + <scxml:log label="error in state s1" expr="_event"/> + </scxml:transition> + <scxml:transition event="bar" target="final"> + <scxml:log label="No error in s1" expr=""/> + </scxml:transition> + </scxml:state> + <scxml:final id="final"/> +</scxml:scxml> diff --git a/test/w3c/namespace/test309.scxml b/test/w3c/namespace/test309.scxml new file mode 100644 index 0000000..223ccc9 --- /dev/null +++ b/test/w3c/namespace/test309.scxml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an expression that cannot be interpreted as a boolean is treated as false --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0"> + <scxml:transition cond="return" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test310.scxml b/test/w3c/namespace/test310.scxml new file mode 100644 index 0000000..9d5f392 --- /dev/null +++ b/test/w3c/namespace/test310.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- simple test of the in() predicate --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="p"> + <scxml:parallel id="p"> + <scxml:state id="s0"> + <scxml:transition cond="In('s1')" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"/> + </scxml:parallel> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test311.scxml b/test/w3c/namespace/test311.scxml new file mode 100644 index 0000000..61a134a --- /dev/null +++ b/test/w3c/namespace/test311.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that assignment to a non-existent location yields an error --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + <scxml:assign location="foo.bar.baz " expr="1"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event=".*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test312.scxml b/test/w3c/namespace/test312.scxml new file mode 100644 index 0000000..ad47cfd --- /dev/null +++ b/test/w3c/namespace/test312.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that assignment with an illegal expr raises an error --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="return"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event=".*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test313.scxml b/test/w3c/namespace/test313.scxml new file mode 100644 index 0000000..2799a8b --- /dev/null +++ b/test/w3c/namespace/test313.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- this is a manual test. The processor is allowed to reject this doc, but if it executes it with its illegal +expression, it must raise an error --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="return"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event=".*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test314.scxml b/test/w3c/namespace/test314.scxml new file mode 100644 index 0000000..cd80ce2 --- /dev/null +++ b/test/w3c/namespace/test314.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- this is a manual test because the processor is allowed to reject this document. But if it executes it, +it should not raise an error until it gets to s03 and evaluates the illegal expr --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:transition event="error.execution" target="fail"/> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition target="s03"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:onentry> + <scxml:assign location="Var1" expr="return"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event=".*" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test318.scxml b/test/w3c/namespace/test318.scxml new file mode 100644 index 0000000..a181bfd --- /dev/null +++ b/test/w3c/namespace/test318.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _event stays bound during the onexit and entry into the next state --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="bar"/> + <!-- _event should still be bound to 'foo' at this point --> + <scxml:assign location="Var1" expr="_event.name"/> + </scxml:onentry> + <scxml:transition cond="Var1=='foo'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test319.scxml b/test/w3c/namespace/test319.scxml new file mode 100644 index 0000000..e102084 --- /dev/null +++ b/test/w3c/namespace/test319.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _event is not bound before any event has been raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:if cond="_event"> + <scxml:raise event="bound"/> + <scxml:else/> + <scxml:raise event="unbound"/> + </scxml:if> + </scxml:onentry> + <scxml:transition event="unbound" target="pass"/> + <scxml:transition event="bound" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test321.scxml b/test/w3c/namespace/test321.scxml new file mode 100644 index 0000000..8e1b823 --- /dev/null +++ b/test/w3c/namespace/test321.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _sessionid is bound on startup --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_sessionid"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition cond="true" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test322.scxml b/test/w3c/namespace/test322.scxml new file mode 100644 index 0000000..ae970a4 --- /dev/null +++ b/test/w3c/namespace/test322.scxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _sessionid remains bound to the same value throught the session. this means that it can't +be assigned to --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_sessionid"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="_sessionid" expr="'otherName'"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s2"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition cond="Var1==_sessionid" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test323.scxml b/test/w3c/namespace/test323.scxml new file mode 100644 index 0000000..fde986d --- /dev/null +++ b/test/w3c/namespace/test323.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _name is bound on startup --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_name"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition cond="true" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test324.scxml b/test/w3c/namespace/test324.scxml new file mode 100644 index 0000000..b392a37 --- /dev/null +++ b/test/w3c/namespace/test324.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _name stays bound till the session ends. This means that it cannot be assigned to --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:transition cond="_name === 'machineName'" target="s1"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="_name" expr="'otherName'"/> + </scxml:onentry> + <scxml:transition cond="_name === 'machineName'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test325.scxml b/test/w3c/namespace/test325.scxml new file mode 100644 index 0000000..f7cbe77 --- /dev/null +++ b/test/w3c/namespace/test325.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or +how to test that the entries in it do represent I/O processors, since the set that each implementation +supports may be different. Suggestions welcome --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_ioprocessors"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test326.scxml b/test/w3c/namespace/test326.scxml new file mode 100644 index 0000000..a2212c7 --- /dev/null +++ b/test/w3c/namespace/test326.scxml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_ioprocessors"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="s1"/> + <scxml:transition cond="true" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="_ioprocessors" expr="'otherName'"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s2"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <scxml:assign location="Var2" expr="_ioprocessors"/> + </scxml:onentry> + <scxml:transition cond="Var1==Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test329.scxml b/test/w3c/namespace/test329.scxml new file mode 100644 index 0000000..a0202e1 --- /dev/null +++ b/test/w3c/namespace/test329.scxml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that none of the system variables can be modified --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"/> + <scxml:data id="Var4"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- get _event bound so we can use it in s1--> + <scxml:raise event="foo"/> + <scxml:assign location="Var1" expr="_sessionid"/> + <scxml:assign location="_sessionid" expr="27"/> + </scxml:onentry> + <scxml:transition event="foo" cond="Var1==_sessionid" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="Var2" expr="_event"/> + <scxml:assign location="_event" expr="27"/> + </scxml:onentry> + <scxml:transition cond="Var2==_event" target="s2"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <scxml:assign location="Var3" expr="_name"/> + <scxml:assign location="_name" expr="27"/> + </scxml:onentry> + <scxml:transition cond="Var3==_name" target="s3"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:onentry> + <scxml:assign location="Var4" expr="_ioprocessors"/> + <scxml:assign location="_ioprocessors" expr="27"/> + </scxml:onentry> + <scxml:transition cond="Var4==_ioprocessors" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test330.scxml b/test/w3c/namespace/test330.scxml new file mode 100644 index 0000000..a796d71 --- /dev/null +++ b/test/w3c/namespace/test330.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- check that the required fields are present in both internal and external events --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'origintype' in _event && 'invokeid' in _event && 'data' in _event" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'origintype' in _event && 'invokeid' in _event && 'data' in _event" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test331.scxml b/test/w3c/namespace/test331.scxml new file mode 100644 index 0000000..796254e --- /dev/null +++ b/test/w3c/namespace/test331.scxml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0" name="machineName"> + <!-- test that _event.type is set correctly for internal, platform, and external events --> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- internal event --> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" target="s1"> + <scxml:assign location="Var1" expr="_event.type"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1=='internal'" target="s2"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <!-- this will generate an error, which is a platform event --> + <scxml:assign location="foo.bar.baz " expr="1"/> + </scxml:onentry> + <scxml:transition event="error" target="s3"> + <scxml:assign location="Var1" expr="_event.type"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:transition cond="Var1=='platform'" target="s4"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s4"> + <scxml:onentry> + <!-- external event --> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" target="s5"> + <scxml:assign location="Var1" expr="_event.type"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s5"> + <scxml:transition cond="Var1=='external'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test332.scxml b/test/w3c/namespace/test332.scxml new file mode 100644 index 0000000..2ce9fbb --- /dev/null +++ b/test/w3c/namespace/test332.scxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that sendid is present in error events triggered by send errors --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- this will raise an error and also store the sendid in var1 --> + <scxml:send target="baz" event="foo" idlocation="Var1"/> + </scxml:onentry> + <scxml:transition event="error" target="s1"> + <!-- get the sendid out of the error event --> + <scxml:assign location="Var2" expr="_event.sendid"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <!-- make sure that the sendid in the error event matches the one generated when send executed --> + <scxml:transition cond="Var1===Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test333.scxml b/test/w3c/namespace/test333.scxml new file mode 100644 index 0000000..9a277b4 --- /dev/null +++ b/test/w3c/namespace/test333.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- make sure sendid is blank in a non-error event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="typeof _event.sendid === 'undefined' " target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test335.scxml b/test/w3c/namespace/test335.scxml new file mode 100644 index 0000000..f488f91 --- /dev/null +++ b/test/w3c/namespace/test335.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that origin field is blank for internal events --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="typeof _event.origin === 'undefined' " target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test336.scxml b/test/w3c/namespace/test336.scxml new file mode 100644 index 0000000..232e64e --- /dev/null +++ b/test/w3c/namespace/test336.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In +this case it's the same session, so if we get bar we succeed --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" target="s1"> + <scxml:send event="bar" targetexpr="_event.origin" typeexpr="_event.origintype"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:send event="baz"/> + </scxml:onentry> + <scxml:transition event="bar" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test337.scxml b/test/w3c/namespace/test337.scxml new file mode 100644 index 0000000..4eee728 --- /dev/null +++ b/test/w3c/namespace/test337.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that origintype is blank on internal events --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="typeof _event.origintype === 'undefined' " target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test338.scxml b/test/w3c/namespace/test338.scxml new file mode 100644 index 0000000..1f1e064 --- /dev/null +++ b/test/w3c/namespace/test338.scxml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the +case where the invoke doesn't work correctly --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke idlocation="Var1" type="http://www.w3.org/TR/scxml/"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:final id="sub0"> + <scxml:onentry> + <scxml:send target="#_parent" event="event1"/> + </scxml:onentry> + </scxml:final> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="event1" target="s1"> + <scxml:assign location="Var2" expr="_event.invokeid"/> + </scxml:transition> + <scxml:transition event="event0" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1===Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test339.scxml b/test/w3c/namespace/test339.scxml new file mode 100644 index 0000000..be559e7 --- /dev/null +++ b/test/w3c/namespace/test339.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="typeof _event.invokeid === 'undefined' " target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test342.scxml b/test/w3c/namespace/test342.scxml new file mode 100644 index 0000000..90d6b6d --- /dev/null +++ b/test/w3c/namespace/test342.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that eventexpr works and sets the name field of the resulting event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'foo'"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send eventexpr="Var1"/> + </scxml:onentry> + <scxml:transition event="foo" target="s1"> + <scxml:assign location="Var2" expr="_event.name"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1===Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test343.scxml b/test/w3c/namespace/test343.scxml new file mode 100644 index 0000000..df02209 --- /dev/null +++ b/test/w3c/namespace/test343.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that illegal <param> produces error.execution and empty event.data --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0" initial="s01"> + <!-- we should get the error before the done event --> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="done.state.s0" target="fail"/> + <scxml:transition event="done.state.s0" target="fail"> + </scxml:transition> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:param location="foo.bar.baz " name="someParam"/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <!-- if we get here, we received the error event. Now check that the done + event has empty event.data --> + <scxml:state id="s1"> + <scxml:transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test344.scxml b/test/w3c/namespace/test344.scxml new file mode 100644 index 0000000..35fce2b --- /dev/null +++ b/test/w3c/namespace/test344.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a cond expression that cannot be evaluated as a +boolean cond expression evaluates to false and causes error.execution to be raised. +In some languages, any valid expression/object can be converted to a boolean, so conf:nonBoolean will +have to be mapped onto something that produces a syntax error or something similarly invalid --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0"> + <scxml:transition cond="return" target="fail"/> + <scxml:transition target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test346.scxml b/test/w3c/namespace/test346.scxml new file mode 100644 index 0000000..000a514 --- /dev/null +++ b/test/w3c/namespace/test346.scxml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that any attempt to change the value of a system variable causes error.execution to be raised. +Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have +to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="_sessionid" expr="'otherName'"/> + <scxml:raise event="event1"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:assign location="_event" expr="'otherName'"/> + <scxml:raise event="event2"/> + </scxml:onentry> + <!-- throw out event1 if it's still around --> + <scxml:transition event="event1"/> + <scxml:transition event="error.execution" target="s2"/> + <!-- event1 would trigger this transition if we didn't drop it. We want this transition to have + a very general trigger to catch cases where the wrong error event was raised --> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <scxml:assign location="_ioprocessors" expr="'otherName'"/> + <scxml:raise event="event3"/> + </scxml:onentry> + <scxml:transition event="event2"/> + <scxml:transition event="error.execution" target="s3"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:onentry> + <scxml:assign location="_name" expr="'otherName'"/> + <scxml:raise event="event4"/> + </scxml:onentry> + <scxml:transition event="event3"/> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test347.scxml b/test/w3c/namespace/test347.scxml new file mode 100644 index 0000000..6c3e9b2 --- /dev/null +++ b/test/w3c/namespace/test347.scxml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the scxml event I/O processor works by sending events back and forth between an invoked child +and its parent process --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0" initial="s01"> + <scxml:invoke id="child" type="scxml"> + <scxml:content> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript" name="machineName"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_parent" event="childToParent"/> + </scxml:onentry> + <scxml:transition event="parentToChild" target="subFinal"/> + </scxml:state> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:onentry> + <scxml:send delay="20s" event="timeout"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:transition event="childToParent" target="s02"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_child" event="parentToChild"/> + </scxml:onentry> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="error" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test348.scxml b/test/w3c/namespace/test348.scxml new file mode 100644 index 0000000..d6f38a3 --- /dev/null +++ b/test/w3c/namespace/test348.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <!-- test that event param of send sets the name of the event --> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> + </scxml:onentry> + <scxml:transition event="s0Event" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test349.scxml b/test/w3c/namespace/test349.scxml new file mode 100644 index 0000000..93d2100 --- /dev/null +++ b/test/w3c/namespace/test349.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that value in origin field can be used to send an event back to the sender --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> + </scxml:onentry> + <scxml:transition event="s0Event" target="s2"> + <scxml:assign location="Var1" expr="_event.origin"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event2"/> + </scxml:onentry> + <scxml:transition event="s0Event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test350.scxml b/test/w3c/namespace/test350.scxml new file mode 100644 index 0000000..986f7d3 --- /dev/null +++ b/test/w3c/namespace/test350.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that target value is used to decide what session to deliver the event to. A session should be +able to send an event to itself using its own session ID as the target --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="'#_scxml_'"/> + <scxml:data id="Var2" expr="_sessionid"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="Var1 + Var2"/> + <scxml:send delay="5s" event="timeout"/> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event"/> + </scxml:onentry> + <scxml:transition event="s0Event" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test351.scxml b/test/w3c/namespace/test351.scxml new file mode 100644 index 0000000..1d98a85 --- /dev/null +++ b/test/w3c/namespace/test351.scxml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that sendid is set in event if present in send, blank otherwise --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + <scxml:data id="Var2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send delay="5s" event="timeout"/> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" id="send1" event="s0Event"/> + </scxml:onentry> + <scxml:transition event="s0Event" target="s1"> + <scxml:assign location="Var1" expr="_event.sendid"/> + </scxml:transition> + <scxml:transition event="*" target="fail"> + </scxml:transition> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1=='send1'" target="s2"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onentry> + <scxml:send delay="5s" event="timeout"/> + <scxml:send event="s0Event2"/> + </scxml:onentry> + <scxml:transition event="s0Event2" target="s3"> + <scxml:assign location="Var2" expr="_event.sendid"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:transition cond="!Var2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test352.scxml b/test/w3c/namespace/test352.scxml new file mode 100644 index 0000000..eb0ea3b --- /dev/null +++ b/test/w3c/namespace/test352.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test the origintype is 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor' --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send delay="5s" event="timeout"/> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> + </scxml:onentry> + <scxml:transition event="s0Event" target="s1"> + <scxml:assign location="Var1" expr="_event.origintype"/> + </scxml:transition> + <scxml:transition event="*" target="fail"> + </scxml:transition> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test354.scxml b/test/w3c/namespace/test354.scxml new file mode 100644 index 0000000..5c8db26 --- /dev/null +++ b/test/w3c/namespace/test354.scxml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that event.data can be populated using both namelist, param and <content> +and that correct values are used --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send delay="5s" event="timeout"/> + <scxml:send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="Var1"> + <scxml:param name="param1" expr="2"/> + </scxml:send> + </scxml:onentry> + <scxml:transition event="event1" target="s1"> + <scxml:assign location="Var2" expr="_event.data.Var1"/> + <scxml:assign location="Var3" expr="_event.data.param1"/> + </scxml:transition> + <scxml:transition event="*" target="fail"> + </scxml:transition> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var2==1" target="s2"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition cond="Var3==2" target="s3"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:onentry> + <scxml:send delay="5s" event="timeout"/> + <scxml:send event="event2"> + <scxml:content>123</scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="event2" cond="_event.data == 123" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test355.scxml b/test/w3c/namespace/test355.scxml new file mode 100644 index 0000000..7beec8c --- /dev/null +++ b/test/w3c/namespace/test355.scxml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test364.scxml b/test/w3c/namespace/test364.scxml new file mode 100644 index 0000000..10d7aee --- /dev/null +++ b/test/w3c/namespace/test364.scxml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that default initial states are entered when a compound state is entered. First we test +the 'initial' attribute, then the initial element, then default to the first child in document order. +If we get to s01111 we succeed, if any other state, failure. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" initial="s1" version="1.0"> + <scxml:state id="s1" initial="s11p112 s11p122"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s11" initial="s111"> + <scxml:state id="s111"/> + <scxml:parallel id="s11p1"> + <scxml:state id="s11p11" initial="s11p111"> + <scxml:state id="s11p111"/> + <scxml:state id="s11p112"> + <scxml:onentry> + <scxml:raise event="In-s11p112"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s11p12" initial="s11p121"> + <scxml:state id="s11p121"/> + <scxml:state id="s11p122"> + <scxml:transition event="In-s11p112" target="s2"/> + </scxml:state> + </scxml:state> + </scxml:parallel> + </scxml:state> + </scxml:state> + <scxml:state id="s2"> + <scxml:initial> + <scxml:transition target="s21p112 s21p122"/> + </scxml:initial> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s21" initial="s211"> + <scxml:state id="s211"/> + <scxml:parallel id="s21p1"> + <scxml:state id="s21p11" initial="s21p111"> + <scxml:state id="s21p111"/> + <scxml:state id="s21p112"> + <scxml:onentry> + <scxml:raise event="In-s21p112"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s21p12" initial="s21p121"> + <scxml:state id="s21p121"/> + <scxml:state id="s21p122"> + <scxml:transition event="In-s21p112" target="s3"/> + </scxml:state> + </scxml:state> + </scxml:parallel> + </scxml:state> + </scxml:state> + <scxml:state id="s3"> + <scxml:transition target="fail"/> + <scxml:state id="s31"> + <scxml:state id="s311"> + <scxml:state id="s3111"> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:state id="s3112"/> + <scxml:state id="s312"/> + <scxml:state id="s32"/> + </scxml:state> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test372.scxml b/test/w3c/namespace/test372.scxml new file mode 100644 index 0000000..d7c5f39 --- /dev/null +++ b/test/w3c/namespace/test372.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that entering a final state generates done.state.parentid after executing the onentry elements. +Var1 should be set to 2 (but not 3) by the time the event is raised --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s0final"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="done.state.s0" cond="Var1==2" target="pass"/> + <scxml:transition event="*" target="fail"/> + <scxml:final id="s0final"> + <scxml:onentry> + <scxml:assign location="Var1" expr="2"/> + </scxml:onentry> + <scxml:onexit> + <scxml:assign location="Var1" expr="3"/> + </scxml:onexit> + </scxml:final> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test375.scxml b/test/w3c/namespace/test375.scxml new file mode 100644 index 0000000..fe45ffb --- /dev/null +++ b/test/w3c/namespace/test375.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="event1"/> + </scxml:onentry> + <scxml:onentry> + <scxml:raise event="event2"/> + </scxml:onentry> + <scxml:transition event="event1" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test376.scxml b/test/w3c/namespace/test376.scxml new file mode 100644 index 0000000..daada35 --- /dev/null +++ b/test/w3c/namespace/test376.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but + the increment to var1 should happen anyways --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send target="baz" event="event1"/> + </scxml:onentry> + <scxml:onentry> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onentry> + <scxml:transition cond="Var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test377.scxml b/test/w3c/namespace/test377.scxml new file mode 100644 index 0000000..ddd9e0a --- /dev/null +++ b/test/w3c/namespace/test377.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onexit> + <scxml:raise event="event1"/> + </scxml:onexit> + <scxml:onexit> + <scxml:raise event="event2"/> + </scxml:onexit> + <scxml:transition target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event1" target="s2"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test378.scxml b/test/w3c/namespace/test378.scxml new file mode 100644 index 0000000..f7d2928 --- /dev/null +++ b/test/w3c/namespace/test378.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but + the increment to var1 should happen anyways --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onexit> + <scxml:send target="baz" event="event1"/> + </scxml:onexit> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test387.scxml b/test/w3c/namespace/test387.scxml new file mode 100644 index 0000000..63a6b8a --- /dev/null +++ b/test/w3c/namespace/test387.scxml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default +shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we +transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s3" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:transition event="enteringS011" target="s4"/> + <scxml:transition event="*" target="fail"/> + <scxml:history type="shallow" id="s0HistShallow"> + <scxml:transition target="s01"/> + </scxml:history> + <scxml:history type="deep" id="s0HistDeep"> + <scxml:transition target="s022"/> + </scxml:history> + <scxml:state id="s01" initial="s011"> + <scxml:state id="s011"> + <scxml:onentry> + <scxml:raise event="enteringS011"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s012"> + <scxml:onentry> + <scxml:raise event="enteringS012"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s02" initial="s021"> + <scxml:state id="s021"> + <scxml:onentry> + <scxml:raise event="enteringS021"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s022"> + <scxml:onentry> + <scxml:raise event="enteringS022"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + </scxml:state> + <scxml:state id="s1" initial="s11"> + <scxml:transition event="enteringS122" target="pass"/> + <scxml:transition event="*" target="fail"/> + <scxml:history type="shallow" id="s1HistShallow"> + <scxml:transition target="s11"/> + </scxml:history> + <scxml:history type="deep" id="s1HistDeep"> + <scxml:transition target="s122"/> + </scxml:history> + <scxml:state id="s11" initial="s111"> + <scxml:state id="s111"> + <scxml:onentry> + <scxml:raise event="enteringS111"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s112"> + <scxml:onentry> + <scxml:raise event="enteringS112"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s12" initial="s121"> + <scxml:state id="s121"> + <scxml:onentry> + <scxml:raise event="enteringS121"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s122"> + <scxml:onentry> + <scxml:raise event="enteringS122"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + </scxml:state> + <scxml:state id="s3"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition target="s0HistShallow"/> + </scxml:state> + <scxml:state id="s4"> + <scxml:transition target="s1HistDeep"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test388.scxml b/test/w3c/namespace/test388.scxml new file mode 100644 index 0000000..be1bb1a --- /dev/null +++ b/test/w3c/namespace/test388.scxml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that history states works correctly. The counter Var1 counts how many times +we have entered s0. The initial state is s012. We then transition to s1, which transitions +to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition +to s02, which transitions to s0's shallow history state. That should have value s01, and its initial +state is s011, so we should get entering.s011, otherwise failure.--> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s012" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onentry> + <!-- the first time through, go to s1, setting a timer just in case something hangs --> + <scxml:transition event="entering.s012" cond="Var1==1" target="s1"> + <scxml:send event="timeout" delay="2s"/> + </scxml:transition> + <!-- the second time, we should get entering.s012. If so, go to s2, otherwise fail --> + <scxml:transition event="entering.s012" cond="Var1==2" target="s2"/> + <scxml:transition event="entering" cond="Var1==2" target="fail"/> + <!-- the third time we should get entering-s011. If so, pass, otherwise fail --> + <scxml:transition event="entering.s011" cond="Var1==3" target="pass"/> + <scxml:transition event="entering" cond="Var1==3" target="fail"/> + <!-- if we timeout, the state machine is hung somewhere, so fail --> + <scxml:transition event="timeout" target="fail"/> + <scxml:history type="shallow" id="s0HistShallow"> + <scxml:transition target="s02"/> + </scxml:history> + <scxml:history type="deep" id="s0HistDeep"> + <scxml:transition target="s022"/> + </scxml:history> + <scxml:state id="s01" initial="s011"> + <scxml:state id="s011"> + <scxml:onentry> + <scxml:raise event="entering.s011"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s012"> + <scxml:onentry> + <scxml:raise event="entering.s012"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s02" initial="s021"> + <scxml:state id="s021"> + <scxml:onentry> + <scxml:raise event="entering.s021"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s022"> + <scxml:onentry> + <scxml:raise event="entering.s022"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition target="s0HistDeep"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition target="s0HistShallow"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test396.scxml b/test/w3c/namespace/test396.scxml new file mode 100644 index 0000000..1a818d2 --- /dev/null +++ b/test/w3c/namespace/test396.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the value in _event.name matches the event name used to match against transitions --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="foo" cond="_event.name == 'foo'" target="pass"/> + <scxml:transition event="foo" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test399.scxml b/test/w3c/namespace/test399.scxml new file mode 100644 index 0000000..e604c31 --- /dev/null +++ b/test/w3c/namespace/test399.scxml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the event name matching works correctly, including prefix matching and the fact +that the event attribute of transition may contain multiple event designators. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <!-- this will catch the failure case --> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <!-- test that an event can match against a transition with multiple descriptors --> + <scxml:transition event="foo bar" target="s02"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:onentry> + <scxml:raise event="bar"/> + </scxml:onentry> + <!-- test that an event can match the second descriptor as well --> + <scxml:transition event="foo bar" target="s03"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:onentry> + <scxml:raise event="foo.zoo"/> + </scxml:onentry> + <!-- test that a prefix descriptor matches --> + <scxml:transition event="foo bar" target="s04"/> + </scxml:state> + <scxml:state id="s04"> + <scxml:onentry> + <scxml:raise event="foos"/> + </scxml:onentry> + <!-- test that only token prefixes match --> + <scxml:transition event="foo" target="fail"/> + <scxml:transition event="foos" target="s05"/> + </scxml:state> + <scxml:state id="s05"> + <scxml:onentry> + <scxml:raise event="foo.zoo"/> + </scxml:onentry> + <!-- test that .* works at the end of a descriptor --> + <scxml:transition event="foo.*" target="s06"/> + </scxml:state> + <scxml:state id="s06"> + <scxml:onentry> + <scxml:raise event="foo"/> + </scxml:onentry> + <!-- test that "*" works by itself --> + <scxml:transition event="*" target="pass"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test401.scxml b/test/w3c/namespace/test401.scxml new file mode 100644 index 0000000..bea732b --- /dev/null +++ b/test/w3c/namespace/test401.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform +and operation that raises an error. Then check that the error event is processed first, even though +it was raised second --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"/> + <!-- assigning to a non-existent location should raise an error --> + <scxml:assign location="foo.bar.baz " expr="2"/> + </scxml:onentry> + <scxml:transition event="foo" target="fail"/> + <scxml:transition event="error" target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test402.scxml b/test/w3c/namespace/test402.scxml new file mode 100644 index 0000000..911b2ce --- /dev/null +++ b/test/w3c/namespace/test402.scxml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they +are pulled off the internal queue in order, and that prefix matching works on them. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <!-- catch the failure case --> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:onentry> + <!-- the first internal event. The error will be the second, and event2 will be the third --> + <scxml:raise event="event1"/> + <!-- assigning to a non-existent location should raise an error --> + <scxml:assign location="foo.bar.baz " expr="2"/> + </scxml:onentry> + <scxml:transition event="event1" target="s02"> + <scxml:raise event="event2"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="error" target="s03"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="event2" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test403a.scxml b/test/w3c/namespace/test403a.scxml new file mode 100644 index 0000000..7f75c7d --- /dev/null +++ b/test/w3c/namespace/test403a.scxml @@ -0,0 +1,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:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <!-- catch the failure case --> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="event2" target="pass"/> + <scxml:state id="s01"> + <scxml:onentry> + <!-- this should be caught by the first transition in this state, taking us to S02 --> + <scxml:raise event="event1"/> + </scxml:onentry> + <scxml:transition event="event1" target="s02"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s02"> + <scxml: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 --> + <scxml:raise event="event2"/> + </scxml:onentry> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="event2" cond="false" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test403b.scxml b/test/w3c/namespace/test403b.scxml new file mode 100644 index 0000000..9f874c0 --- /dev/null +++ b/test/w3c/namespace/test403b.scxml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that 'optimally enabled set' really is a set, specifically that if a transition is optimally enabled in +two different states, it is taken only once. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0" initial="p0"> + <!-- this transition should never be taken because a transition in a lower state should + always be selected --> + <scxml:transition event="event1"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:transition> + <scxml:parallel id="p0"> + <scxml:onentry> + <scxml:raise event="event1"/> + <scxml:raise event="event2"/> + </scxml:onentry> + <!-- this transition will be selected by both states p0s1 and p0s2, but should be executed only once --> + <scxml:transition event="event1"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:transition> + <scxml:state id="p0s1"> + <scxml:transition event="event2" cond="Var1==1" target="pass"/> + <scxml:transition event="event2" target="fail"/> + </scxml:state> + <scxml:state id="p0s2"/> + </scxml:parallel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test403c.scxml b/test/w3c/namespace/test403c.scxml new file mode 100644 index 0000000..6600e8d --- /dev/null +++ b/test/w3c/namespace/test403c.scxml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test 'optimally enabled set', specifically that preemption works correctly --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0" initial="p0"> + <scxml:onentry> + <scxml:raise event="event1"/> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="event2" target="fail"/> + <scxml:transition event="timeout" target="fail"/> + <scxml:parallel id="p0"> + <scxml:state id="p0s1"> + <scxml:transition event="event1"/> + <scxml:transition event="event2"/> + </scxml:state> + <scxml:state id="p0s2"> + <scxml:transition event="event1" target="p0s1"> + <scxml:raise event="event2"/> + </scxml:transition> + </scxml:state> + <scxml:state id="p0s3"> + <!-- this transition should be blocked by the one in p0s2--> + <scxml:transition event="event1" target="fail"/> + <!-- this transition will preempt the one that p0s2 inherits + from an ancestor --> + <scxml:transition event="event2" target="s1"/> + </scxml:state> + <scxml:state id="p0s4"> + <!-- this transition never gets preempted, should fire twice --> + <scxml:transition event="*"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:transition> + </scxml:state> + </scxml:parallel> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test404.scxml b/test/w3c/namespace/test404.scxml new file mode 100644 index 0000000..153c079 --- /dev/null +++ b/test/w3c/namespace/test404.scxml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties + before the executable content in the transitions. event1, event2, event3, event4 should be raised in that + order when s01p is exited --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01p"> + <scxml:parallel id="s01p"> + <scxml:onexit> + <!-- this should be the 3rd event raised --> + <scxml:raise event="event3"/> + </scxml:onexit> + <scxml:transition target="s02"> + <!-- this should be the fourth event raised --> + <scxml:raise event="event4"/> + </scxml:transition> + <scxml:state id="s01p1"> + <scxml:onexit> + <!-- this should be the second event raised --> + <scxml:raise event="event2"/> + </scxml:onexit> + </scxml:state> + <scxml:state id="s01p2"> + <!-- this should be the first event raised --> + <scxml:onexit> + <scxml:raise event="event1"/> + </scxml:onexit> + </scxml:state> + </scxml:parallel> + <scxml:state id="s02"> + <scxml:transition event="event1" target="s03"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="event2" target="s04"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s04"> + <scxml:transition event="event3" target="s05"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s05"> + <scxml:transition event="event4" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test405.scxml b/test/w3c/namespace/test405.scxml new file mode 100644 index 0000000..9c7ae9c --- /dev/null +++ b/test/w3c/namespace/test405.scxml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the executable content in the transitions is executed in document order after +the states are exited. event1, event2, event3, event4 should be raised in that order when the +state machine is entered --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01p"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:parallel id="s01p"> + <scxml:transition event="event1" target="s02"/> + <scxml:state id="s01p1" initial="s01p11"> + <scxml:state id="s01p11"> + <scxml:onexit> + <!-- this should be the second event raised --> + <scxml:raise event="event2"/> + </scxml:onexit> + <scxml:transition target="s01p12"> + <!-- this should be the third event raised --> + <scxml:raise event="event3"/> + </scxml:transition> + </scxml:state> + <scxml:state id="s01p12"/> + </scxml:state> + <!-- end s01p1 --> + <scxml:state id="s01p2" initial="s01p21"> + <scxml:state id="s01p21"> + <scxml:onexit> + <!-- this should be the first event raised --> + <scxml:raise event="event1"/> + </scxml:onexit> + <scxml:transition target="s01p22"> + <!-- this should be the fourth event raised --> + <scxml:raise event="event4"/> + </scxml:transition> + </scxml:state> + <scxml:state id="s01p22"/> + </scxml:state> + <!-- end s01p2 --> + </scxml:parallel> + <scxml:state id="s02"> + <scxml:transition event="event2" target="s03"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="event3" target="s04"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s04"> + <scxml:transition event="event4" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <!-- end s01 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test406.scxml b/test/w3c/namespace/test406.scxml new file mode 100644 index 0000000..c8d9b1d --- /dev/null +++ b/test/w3c/namespace/test406.scxml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Test that states are entered in entry order (parents before children with document order used to break ties) +after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that +order when the transition in s01 is taken --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s01"> + <scxml:transition target="s0p2"> + <!-- this should be the first event raised --> + <scxml:raise event="event1"/> + </scxml:transition> + </scxml:state> + <scxml:parallel id="s0p2"> + <scxml:transition event="event1" target="s03"/> + <scxml:state id="s01p21"> + <scxml:onentry> + <!-- third event --> + <scxml:raise event="event3"/> + </scxml:onentry> + </scxml:state> + <scxml:state id="s01p22"> + <scxml:onentry> + <!-- the fourth event --> + <scxml:raise event="event4"/> + </scxml:onentry> + </scxml:state> + <scxml:onentry> + <!-- this should be the second event raised --> + <scxml:raise event="event2"/> + </scxml:onentry> + </scxml:parallel> + <scxml:state id="s03"> + <scxml:transition event="event2" target="s04"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s04"> + <scxml:transition event="event3" target="s05"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s05"> + <scxml:transition event="event4" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <!-- end s0 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test407.scxml b/test/w3c/namespace/test407.scxml new file mode 100644 index 0000000..1adb3d8 --- /dev/null +++ b/test/w3c/namespace/test407.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- a simple test that onexit handlers work. var1 should be incremented when we leave s0 --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test409.scxml b/test/w3c/namespace/test409.scxml new file mode 100644 index 0000000..16fd5b4 --- /dev/null +++ b/test/w3c/namespace/test409.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that states are removed from the active states list as they are exited. When s01's onexit handler +fires, s011 should not be on the active state list, so in(S011) should be false, and event1 should not +be raised. Therefore the timeout should fire to indicate success --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'1s'"/> + </scxml:onentry> + <scxml:transition event="timeout" target="pass"/> + <scxml:transition event="event1" target="fail"/> + <scxml:state id="s01" initial="s011"> + <scxml:onexit> + <scxml:if cond="In('s011')"> + <scxml:raise event="event1"/> + </scxml:if> + </scxml:onexit> + <scxml:state id="s011"> + <scxml:transition target="s02"/> + </scxml:state> + </scxml:state> + <!-- end s01 --> + <scxml:state id="s02"/> + </scxml:state> + <!-- end s0 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test411.scxml b/test/w3c/namespace/test411.scxml new file mode 100644 index 0000000..e5f89b2 --- /dev/null +++ b/test/w3c/namespace/test411.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that states are added to the active states list as they are entered and before onentry handlers +are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler +fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or +timeout also indicates failure --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + <scxml:if cond="In('s01')"> + <scxml:raise event="event1"/> + </scxml:if> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="event2" target="pass"/> + <scxml:state id="s01"> + <scxml:onentry> + <scxml:if cond="In('s01')"> + <scxml:raise event="event2"/> + </scxml:if> + </scxml:onentry> + </scxml:state> + </scxml:state> + <!-- end s0 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test412.scxml b/test/w3c/namespace/test412.scxml new file mode 100644 index 0000000..0707f87 --- /dev/null +++ b/test/w3c/namespace/test412.scxml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that executable content in the <initial> transition executes after the onentry handler on the state +and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0" initial="s01"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="event2" target="pass"/> + <scxml:state id="s01"> + <scxml:onentry> + <scxml:raise event="event1"/> + </scxml:onentry> + <scxml:initial> + <scxml:transition target="s011"> + <scxml:raise event="event2"/> + </scxml:transition> + </scxml:initial> + <scxml:state id="s011"> + <scxml:onentry> + <scxml:raise event="event3"/> + </scxml:onentry> + <scxml:transition target="s02"/> + </scxml:state> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="event1" target="s03"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition event="event2" target="s04"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s04"> + <scxml:transition event="event3" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <!-- end s0 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test413.scxml b/test/w3c/namespace/test413.scxml new file mode 100644 index 0000000..d948dc2 --- /dev/null +++ b/test/w3c/namespace/test413.scxml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the state machine is put into the configuration specified by the initial element, without regard +to any other defaults. we should start off in s2p111 and s2p122. the atomic +states we should not enter all have immediate transitions to failure in them --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s2p112 s2p122" version="1.0" datamodel="ecmascript"> + <scxml:state id="s1"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2" initial="s2p1"> + <scxml:parallel id="s2p1"> + <!-- this transition will be triggered only if we end up in an illegal configuration where we're in + either s2p112 or s2p122, but not both of them --> + <scxml:transition target="fail"/> + <scxml:state id="s2p11" initial="s2p111"> + <scxml:state id="s2p111"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2p112"> + <scxml:transition cond="In('s2p122')" target="pass"/> + </scxml:state> + </scxml:state> + <!-- end s2p11 --> + <scxml:state id="s2p12" initial="s2p121"> + <scxml:state id="s2p121"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s2p122"> + <scxml:transition cond="In('s2p112')" target="pass"/> + </scxml:state> + </scxml:state> + </scxml:parallel> + </scxml:state> + <!-- end s2 --> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/prolog/test415.scxml b/test/w3c/namespace/test415.scxml index c2859c1..84bebb4 100644 --- a/test/w3c/prolog/test415.scxml +++ b/test/w3c/namespace/test415.scxml @@ -4,10 +4,10 @@ processing "event1" which is raised in the final state's on-entry handler. This is a manual test since there is no platform-independent way to test that event1 is not processed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="prolog"> - <final id="final"> - <onentry> - <raise event="event1"/> - </onentry> - </final> -</scxml> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="final" version="1.0" datamodel="ecmascript"> + <scxml:final id="final"> + <scxml:onentry> + <scxml:raise event="event1"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test416.scxml b/test/w3c/namespace/test416.scxml new file mode 100644 index 0000000..2b783a1 --- /dev/null +++ b/test/w3c/namespace/test416.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the done.state.id gets generated when we enter the final state of a compound state --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="ecmascript"> + <scxml:state id="s1" initial="s11"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s11" initial="s111"> + <scxml:transition event="done.state.s11" target="pass"/> + <scxml:state id="s111"> + <scxml:transition target="s11final"/> + </scxml:state> + <scxml:final id="s11final"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test417.scxml b/test/w3c/namespace/test417.scxml new file mode 100644 index 0000000..22ad78a --- /dev/null +++ b/test/w3c/namespace/test417.scxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we get the done.state.id event when all of a +parallel elements children enter final states. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="ecmascript"> + <scxml:state id="s1" initial="s1p1"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:parallel id="s1p1"> + <scxml:transition event="done.state.s1p1" target="pass"/> + <scxml:state id="s1p11" initial="s1p111"> + <scxml:state id="s1p111"> + <scxml:transition target="s1p11final"/> + </scxml:state> + <scxml:final id="s1p11final"/> + </scxml:state> + <scxml:state id="s1p12" initial="s1p121"> + <scxml:state id="s1p121"> + <scxml:transition target="s1p12final"/> + </scxml:state> + <scxml:final id="s1p12final"/> + </scxml:state> + </scxml:parallel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test419.scxml b/test/w3c/namespace/test419.scxml new file mode 100644 index 0000000..cb71b22 --- /dev/null +++ b/test/w3c/namespace/test419.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that eventless transitions take precedence over event-driven ones --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="ecmascript"> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="internalEvent"/> + <scxml:send event="externalEvent"/> + </scxml:onentry> + <scxml:transition event="*" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test421.scxml b/test/w3c/namespace/test421.scxml new file mode 100644 index 0000000..a76ac37 --- /dev/null +++ b/test/w3c/namespace/test421.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that internal events take priority over external ones, and that the processor +keeps pulling off internal events until it finds one that triggers a transition --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="ecmascript"> + <scxml:state id="s1" initial="s11"> + <scxml:onentry> + <scxml:send event="externalEvent"/> + <scxml:raise event="internalEvent1"/> + <scxml:raise event="internalEvent2"/> + <scxml:raise event="internalEvent3"/> + <scxml:raise event="internalEvent4"/> + </scxml:onentry> + <scxml:transition event="externalEvent" target="fail"/> + <scxml:state id="s11"> + <scxml:transition event="internalEvent3" target="s12"/> + </scxml:state> + <scxml:state id="s12"> + <scxml:transition event="internalEvent4" target="pass"/> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test422.scxml b/test/w3c/namespace/test422.scxml new file mode 100644 index 0000000..a0b5eee --- /dev/null +++ b/test/w3c/namespace/test422.scxml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Test that at the end of a macrostep, the processor executes all invokes in states +that have been entered and not exited during the step. (The invokes are supposed to be executed +in document order, but we can test that since each invocation is separate and they may take +different amounts to time to start up.) In this case, there are three invoke statements, +in states s1, s11 and s12. Each invoked process returns an event named after its parent state. +The invokes in s1 and s12 should execute, but not the one +in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermore, when the timeout fires, var1 should equal 2.--> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s1" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s1" initial="s11"> + <scxml:onentry> + <scxml:send event="timeout" delayexpr="'2s'"/> + </scxml:onentry> + <scxml:transition event="invokeS1 invokeS12"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:transition> + <scxml:transition event="invokeS11" target="fail"/> + <scxml:transition event="timeout" cond="Var1==2" target="pass"/> + <scxml:transition event="timeout" target="fail"/> + <scxml:invoke> + <scxml:content> + <!-- when invoked, send 'foo' to parent, then terminate. --> + <scxml:scxml initial="sub0" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub0"> + <scxml:onentry> + <scxml:send target="#_parent" event="invokeS1"/> + </scxml:onentry> + <scxml:transition target="subFinal0"/> + </scxml:state> + <scxml:final id="subFinal0"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:state id="s11"> + <scxml:invoke> + <scxml:content> + <!-- when invoked, send 'foo' to parent, then terminate. --> + <scxml:scxml initial="sub1" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub1"> + <scxml:onentry> + <scxml:send target="#_parent" event="invokeS11"/> + </scxml:onentry> + <scxml:transition target="subFinal1"/> + </scxml:state> + <scxml:final id="subFinal1"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition target="s12"/> + </scxml:state> + <scxml:state id="s12"> + <scxml:invoke> + <scxml:content> + <!-- when invoked, send 'foo' to parent, then terminate. --> + <scxml:scxml initial="sub2" version="1.0" datamodel="ecmascript"> + <scxml:state id="sub2"> + <scxml:onentry> + <scxml:send target="#_parent" event="invokeS12"/> + </scxml:onentry> + <scxml:transition target="subFinal2"/> + </scxml:state> + <scxml:final id="subFinal2"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test423.scxml b/test/w3c/namespace/test423.scxml new file mode 100644 index 0000000..db49702 --- /dev/null +++ b/test/w3c/namespace/test423.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="externalEvent1"/> + <scxml:send event="externalEvent2" delayexpr="'1s'"/> + <scxml:raise event="internalEvent"/> + </scxml:onentry> + <!-- in this state we should process only internalEvent --> + <scxml:transition event="internalEvent" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <!-- in this state we ignore externalEvent1 and wait for externalEvent2 --> + <scxml:transition event="externalEvent2" target="pass"/> + <scxml:transition event="internalEvent" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test444.scxml b/test/w3c/namespace/test444.scxml new file mode 100644 index 0000000..284f896 --- /dev/null +++ b/test/w3c/namespace/test444.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that <data> creates a new ecmascript variable. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <!-- test that var1 can be used as an ecmascript variable --> + <scxml:transition cond="++var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test445.scxml b/test/w3c/namespace/test445.scxml new file mode 100644 index 0000000..c75d68d --- /dev/null +++ b/test/w3c/namespace/test445.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that ecmascript objects defined by <data> have value undefined if <data> does not assign a value --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="var1==undefined" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test446.scxml b/test/w3c/namespace/test446.scxml new file mode 100644 index 0000000..8cd84f2 --- /dev/null +++ b/test/w3c/namespace/test446.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that if the child of <data> is JSON, the processor + assigns it as the value of the var --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="var1">[1, 2, 3]</scxml:data> + <scxml:data id="var2" src="file:test446.txt"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="var1 instanceof Array" target="s1"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="var2 instanceof Array" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test446.txt b/test/w3c/namespace/test446.txt index 3a26a2e..3a26a2e 100644 --- a/test/w3c/xpath/test446.txt +++ b/test/w3c/namespace/test446.txt diff --git a/test/w3c/namespace/test448.scxml b/test/w3c/namespace/test448.scxml new file mode 100644 index 0000000..9cd357c --- /dev/null +++ b/test/w3c/namespace/test448.scxml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that all ecmascript objects are placed in a single global scope --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <!-- test that a parent state can access a variable defined in a child --> + <scxml:transition cond="var1==1" target="s1"/> + <scxml:transition target="fail"/> + <scxml:state id="s01"> + <scxml:datamodel> + <scxml:data id="var1" expr="1"/> + </scxml:datamodel> + </scxml:state> + </scxml:state> + <scxml:state id="s1" initial="s01p"> + <scxml:parallel id="s01p"> + <scxml:state id="s01p1"> + <!-- test that we can access a variable defined in a parallel sibling state --> + <scxml:transition cond="var2==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s01p2"> + <scxml:datamodel> + <scxml:data id="var2" expr="1"/> + </scxml:datamodel> + </scxml:state> + </scxml:parallel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test449.scxml b/test/w3c/namespace/test449.scxml new file mode 100644 index 0000000..becc192 --- /dev/null +++ b/test/w3c/namespace/test449.scxml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that ecmascript objects are converted to booleans inside cond --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:transition cond="'foo'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test451.scxml b/test/w3c/namespace/test451.scxml new file mode 100644 index 0000000..9d5f392 --- /dev/null +++ b/test/w3c/namespace/test451.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- simple test of the in() predicate --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="p"> + <scxml:parallel id="p"> + <scxml:state id="s0"> + <scxml:transition cond="In('s1')" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"/> + </scxml:parallel> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test452.scxml b/test/w3c/namespace/test452.scxml new file mode 100644 index 0000000..22b0ccb --- /dev/null +++ b/test/w3c/namespace/test452.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we can assign to any location in the datamodel. In this case, we just test that we can assign +to a substructure (not the top level variable). This may not be the most idiomatic way to write the test --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="foo" expr="0"/> + </scxml:datamodel> + <scxml:script> + function testobject() { + this.bar = 0;} + </scxml:script> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="foo" expr="new testobject();"/> + <!-- try to assign to foo's bar property --> + <scxml:assign location="foo.bar" expr="1"/> + <scxml:raise event="event1"/> + </scxml:onentry> + <!-- test that we have assigned to foo's bar property --> + <scxml:transition event="event1" cond="foo.bar == 1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test453.scxml b/test/w3c/namespace/test453.scxml new file mode 100644 index 0000000..5ccc4b3 --- /dev/null +++ b/test/w3c/namespace/test453.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we can use any ecmascript expression as a value expression. +In this case, we just test that we can assign +a function to a variable and then call it. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="var1" expr="function(invar) {return invar + 1;}"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:raise event="event1"/> + </scxml:onentry> + <!-- test that we can call the function --> + <scxml:transition event="event1" cond="var1(2) == 3" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test456.scxml b/test/w3c/namespace/test456.scxml new file mode 100644 index 0000000..05851a0 --- /dev/null +++ b/test/w3c/namespace/test456.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we can't test that _any_ ecmascript is valid inside <script>, so we +just run a simple one and check that it can update the data model. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:script> + Var1+=1 + </scxml:script> + </scxml:onentry> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test457.scxml b/test/w3c/namespace/test457.scxml new file mode 100644 index 0000000..05cdd70 --- /dev/null +++ b/test/w3c/namespace/test457.scxml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. + the legal values for the 'item' attribute on foreach are legal ECMAScript variable names.. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <scxml:data id="Var2"/> + <scxml:data id="Var3"/> + <scxml:data id="Var4" expr="7"/> + <scxml:data id="Var5" expr="[1,2,3]"/> + <scxml:data id="Var6"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <!-- invalid array, legal item --> + <scxml:foreach item="Var2" index="Var3" array="Var4"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:foreach> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <!-- illegal item, legal array --> + <scxml:foreach item="'continue'" index="Var3" array="Var5"> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:foreach> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="s2"/> + <scxml:transition event="bar" target="fail"/> + </scxml:state> + <scxml:state id="s2"> + <!-- check that var1 has its original value (so executable content never got executed --> + <scxml:transition cond="Var1==0" target="s3"/> + <scxml:transition target="fail"/> + </scxml:state> + <!-- finally check that a legal array works properly --> + <scxml:state id="s3"> + <scxml:onentry> + <scxml:assign location="Var6" expr="0"/> + <scxml:foreach item="Var2" array="Var5"> + <scxml:assign location="Var6" expr="Var6 + Var2"/> + </scxml:foreach> + </scxml:onentry> + <scxml:transition cond="Var6==6" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test459.scxml b/test/w3c/namespace/test459.scxml new file mode 100644 index 0000000..0489c9a --- /dev/null +++ b/test/w3c/namespace/test459.scxml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current +value with the previous value, which is stored in var1. The current value should always be larger. If +it ever isn't, set Var4 to 0, indicating failure. Also check that the final value of the index +is 2 (meaning that the initial value was 0, not 1) --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- contains the previous value --> + <scxml:data id="Var2"/> + <!-- the item which will contain the current value --> + <scxml:data id="Var3"/> + <!-- the index --> + <scxml:data id="Var4" expr="[1,2,3]"/> + <scxml:data id="Var5" expr="1"/> + <!-- 1 if success, 0 if failure --> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var2" array="Var4" index="Var3"> + <scxml:if cond="Var1<Var2"> + <scxml:assign location="Var1" expr="Var2"/> + <scxml:else/> + <!-- values are out of order, record failure --> + <scxml:assign location="Var5" expr="0"/> + </scxml:if> + </scxml:foreach> + </scxml:onentry> + <!-- check that var1 has its original value --> + <scxml:transition cond="Var4==0 | Var3 != 2" target="fail"/> + <scxml:transition target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test460.scxml b/test/w3c/namespace/test460.scxml new file mode 100644 index 0000000..61a5f50 --- /dev/null +++ b/test/w3c/namespace/test460.scxml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that <foreach> does a shallow copy, so that modifying the array does not change +the iteration behavior. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="[1,2,3]"/> + <scxml:data id="Var2" expr="0"/> + <!-- counts the number of iterations --> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var3" array="Var1"> + <scxml:assign location="Var1" expr="[].concat(Var1, [4])"/> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:foreach> + </scxml:onentry> + <scxml:transition cond="Var2==3" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test487.scxml b/test/w3c/namespace/test487.scxml new file mode 100644 index 0000000..0d3e7b3 --- /dev/null +++ b/test/w3c/namespace/test487.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test illegal assignment. error.execution should be raised. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1" expr="return"/> + <scxml:raise event="event"/> + </scxml:onentry> + <scxml:transition event="error.execution" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test488.scxml b/test/w3c/namespace/test488.scxml new file mode 100644 index 0000000..35d9bc3 --- /dev/null +++ b/test/w3c/namespace/test488.scxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that illegal expr in <param> produces error.execution and empty event.data --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0" initial="s01"> + <!-- we should get the error before the done event --> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="done.state.s0" target="fail"/> + <scxml:transition event="done.state.s0" target="fail"> + </scxml:transition> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:param expr="return" name="someParam"/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <!-- if we get here, we received the error event. Now check that the done + event has empty event.data --> + <scxml:state id="s1"> + <scxml:transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test495.scxml b/test/w3c/namespace/test495.scxml new file mode 100644 index 0000000..7278eef --- /dev/null +++ b/test/w3c/namespace/test495.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the scxml event i/o processor puts events in the correct queues.--> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- default target is external queue --> + <scxml:send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> + <scxml:send event="event2" target="#_internal" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> + </scxml:onentry> + <!-- we should get the internal event first --> + <scxml:transition event="event1" target="fail"/> + <scxml:transition event="event2" target="s1"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="event1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test496.scxml b/test/w3c/namespace/test496.scxml new file mode 100644 index 0000000..c4d25dc --- /dev/null +++ b/test/w3c/namespace/test496.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event" target="#_scxml_foo"/> + <scxml:raise event="foo"/> + </scxml:onentry> + <scxml:transition event="error.communication" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test500.scxml b/test/w3c/namespace/test500.scxml new file mode 100644 index 0000000..aaea902 --- /dev/null +++ b/test/w3c/namespace/test500.scxml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that location field is found inside entry for SCXML Event I/O processor --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test501.scxml b/test/w3c/namespace/test501.scxml new file mode 100644 index 0000000..7b22872 --- /dev/null +++ b/test/w3c/namespace/test501.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send targetexpr="Var1" event="foo"/> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:transition event="foo" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test503.scxml b/test/w3c/namespace/test503.scxml new file mode 100644 index 0000000..b6a2fd3 --- /dev/null +++ b/test/w3c/namespace/test503.scxml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a targetless transition does not exit and reenter its source state --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- how often we have exited s2 --> + <scxml:data id="Var2" expr="0"/> + <!-- how often the targetless transition in s2 has been executed --> + </scxml:datamodel> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition target="s2"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition event="foo"> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:transition> + <!-- make sure the transition on foo was actually taken --> + <scxml:transition event="bar" cond="Var2==1" target="s3"/> + <scxml:transition event="bar" target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <!-- make sure that s2 was exited only once --> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test504.scxml b/test/w3c/namespace/test504.scxml new file mode 100644 index 0000000..4bd5df1 --- /dev/null +++ b/test/w3c/namespace/test504.scxml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an external transition exits all states up the the LCCA --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- how often we have exited p --> + <scxml:data id="Var2" expr="0"/> + <!-- how often we have exited ps1 --> + <scxml:data id="Var3" expr="0"/> + <!-- how often we have exited ps2 --> + <scxml:data id="Var4" expr="0"/> + <!-- how often the transition for foo has been taken --> + <scxml:data id="Var5" expr="0"/> + <!-- how often we have exited s2 --> + </scxml:datamodel> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition target="p"/> + </scxml:state> + <scxml:state id="s2"> + <scxml:onexit> + <scxml:assign location="Var5" expr="Var5 + 1"/> + </scxml:onexit> + <scxml:parallel id="p"> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition event="foo" target="ps1"> + <scxml:assign location="Var4" expr="Var4 + 1"/> + </scxml:transition> + <!-- make sure the transition on foo was actually taken --> + <scxml:transition event="bar" cond="Var4==1" target="s3"/> + <scxml:transition event="bar" target="fail"/> + <scxml:state id="ps1"> + <scxml:onexit> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:onexit> + </scxml:state> + <scxml:state id="ps2"> + <scxml:onexit> + <scxml:assign location="Var3" expr="Var3 + 1"/> + </scxml:onexit> + </scxml:state> + </scxml:parallel> + </scxml:state> + <scxml:state id="s3"> + <!-- make sure that p was exited twice --> + <scxml:transition cond="Var1==2" target="s4"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s4"> + <!-- make sure that ps1 was exited twice --> + <scxml:transition cond="Var2==2" target="s5"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s5"> + <!-- make sure that ps2 was exited twice --> + <scxml:transition cond="Var3==2" target="s6"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s6"> + <!-- make sure that s1 was exited once --> + <scxml:transition cond="Var5==1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test505.scxml b/test/w3c/namespace/test505.scxml new file mode 100644 index 0000000..c8de568 --- /dev/null +++ b/test/w3c/namespace/test505.scxml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an internal transition does not exit its source state --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- how often we have exited s1 --> + <scxml:data id="Var2" expr="0"/> + <!-- how often we have exited s11 --> + <scxml:data id="Var3" expr="0"/> + <!-- how often the transition for foo has been taken --> + </scxml:datamodel> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition event="foo" type="internal" target="s11"> + <scxml:assign location="Var3" expr="Var3 + 1"/> + </scxml:transition> + <!-- make sure the transition on foo was actually taken --> + <scxml:transition event="bar" cond="Var3==1" target="s2"/> + <scxml:transition event="bar" target="fail"/> + <scxml:state id="s11"> + <scxml:onexit> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:onexit> + </scxml:state> + </scxml:state> + <scxml:state id="s2"> + <!-- make sure that s1 was exited once --> + <scxml:transition cond="Var1==1" target="s3"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <!-- make sure that s11 was exited twice --> + <scxml:transition cond="Var2==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test506.scxml b/test/w3c/namespace/test506.scxml new file mode 100644 index 0000000..09f6439 --- /dev/null +++ b/test/w3c/namespace/test506.scxml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an internal transition whose targets are not proper descendants of its source state +behaves like an external transition --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- how often we have exited s2 --> + <scxml:data id="Var2" expr="0"/> + <!-- how often we have exited s21 --> + <scxml:data id="Var3" expr="0"/> + <!-- how often the transition for foo has been taken --> + </scxml:datamodel> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition target="s2"/> + </scxml:state> + <scxml:state id="s2" initial="s21"> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition event="foo" type="internal" target="s2"> + <scxml:assign location="Var3" expr="Var3 + 1"/> + </scxml:transition> + <!-- make sure the transition on foo was actually taken --> + <scxml:transition event="bar" cond="Var3==1" target="s3"/> + <scxml:transition event="bar" target="fail"/> + <scxml:state id="s21"> + <scxml:onexit> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:onexit> + </scxml:state> + </scxml:state> + <scxml:state id="s3"> + <!-- make sure that s2 was exited twice --> + <scxml:transition cond="Var1==2" target="s4"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s4"> + <!-- make sure that s21 was exited twice --> + <scxml:transition cond="Var2==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test509.scxml b/test/w3c/namespace/test509.scxml new file mode 100644 index 0000000..afd7264 --- /dev/null +++ b/test/w3c/namespace/test509.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages +at the accessURI --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> + </scxml:onentry> + <!-- if the event was send by http and we get it, we succeed --> + <scxml:transition event="test" cond="_event.raw.search('POST') !== -1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test510.scxml b/test/w3c/namespace/test510.scxml new file mode 100644 index 0000000..5a605f2 --- /dev/null +++ b/test/w3c/namespace/test510.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that Basic HTTP messages go into external queue. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> + <!-- this creates an internal event --> + <scxml:raise event="internal"/> + </scxml:onentry> + <!-- we should get 'internal' first, then 'test' --> + <scxml:transition event="internal" target="s1"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition event="test" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test513.txt b/test/w3c/namespace/test513.txt index 08e9b01..08e9b01 100644 --- a/test/w3c/xpath/test513.txt +++ b/test/w3c/namespace/test513.txt diff --git a/test/w3c/namespace/test518.scxml b/test/w3c/namespace/test518.scxml new file mode 100644 index 0000000..6a3b4c8 --- /dev/null +++ b/test/w3c/namespace/test518.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that namelist values get encoded as POST parameters. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" namelist="Var1" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> + </scxml:onentry> + <scxml:transition event="test" cond="_event.raw.search(/Var1=2/) !== -1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test519.scxml b/test/w3c/namespace/test519.scxml new file mode 100644 index 0000000..202c806 --- /dev/null +++ b/test/w3c/namespace/test519.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that <param> values get encoded as POST parameters. . --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + <scxml:param name="param1" expr="1"/> + </scxml:send> + </scxml:onentry> + <!-- if other end sends us back this event, we succeed --> + <scxml:transition event="test" cond="_event.raw.search('param1=1') !== -1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test520.scxml b/test/w3c/namespace/test520.scxml new file mode 100644 index 0000000..87819a3 --- /dev/null +++ b/test/w3c/namespace/test520.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that <content> gets sent as the body of the message. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + <scxml:content>this is some content</scxml:content> + </scxml:send> + </scxml:onentry> + <!-- if other end sends us back this event, we succeed. Test for two common + ways of encoding --> + <scxml:transition event="HTTP.POST" cond="_event.raw.search(/this+is+some+content/) !== -1" target="pass"/> + <scxml:transition event="HTTP.POST" cond="_event.raw.search(/this%20is%20some%20content/) !== -1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test521.scxml b/test/w3c/namespace/test521.scxml new file mode 100644 index 0000000..2844c79 --- /dev/null +++ b/test/w3c/namespace/test521.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the processor raises error.communication if it cannot dispatch the event. +(To create an undispatchable event, we choose a non-existent session as target). If it raises +the error event, we succeed. Otherwise we eventually timeout and fail. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- should cause an error --> + <scxml:send target="#_scxml_foo" event="event2"/> + <!-- this will get added to the external event queue after the error has been raised --> + <scxml:send event="timeout"/> + </scxml:onentry> + <!-- once we've entered the state, we should check for internal events first --> + <scxml:transition event="error.communication" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test522.scxml b/test/w3c/namespace/test522.scxml new file mode 100644 index 0000000..5e5eac5 --- /dev/null +++ b/test/w3c/namespace/test522.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that location field the entry for Basic HTTP Event I/O processor can be used +to send a message to the processor --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors['basichttp']['location']"/> + </scxml:onentry> + <!-- the event we receive should be called 'test', but that's not actually + required for this test. Only that the send deliver some event to us. So if + we get something other than timeout or error, we call it success --> + <scxml:transition event="timeout" target="fail"/> + <scxml:transition event="error" target="fail"/> + <scxml:transition event="*" target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test525.scxml b/test/w3c/namespace/test525.scxml new file mode 100644 index 0000000..17d2391 --- /dev/null +++ b/test/w3c/namespace/test525.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that <foreach> does a shallow copy, so that modifying the array does not change +the iteration behavior. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1"> + [1,2,3] + </scxml:data> + <scxml:data id="Var2" expr="0"/> + <!-- counts the number of iterations --> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:foreach item="Var3" array="Var1"> + <scxml:assign location="Var1" expr="[].concat(Var1, [4])"/> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:foreach> + </scxml:onentry> + <scxml:transition cond="Var2==3" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test527.scxml b/test/w3c/namespace/test527.scxml new file mode 100644 index 0000000..216f300 --- /dev/null +++ b/test/w3c/namespace/test527.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- simple test that 'expr' works with <content> --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0" initial="s01"> + <scxml:transition event="done.state.s0" cond="_event.data == 'foo'" target="pass"> + </scxml:transition> + <scxml:transition event="done.state.s0" target="fail"> + </scxml:transition> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:content expr="'foo'"/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test528.scxml b/test/w3c/namespace/test528.scxml new file mode 100644 index 0000000..df6090a --- /dev/null +++ b/test/w3c/namespace/test528.scxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that illegal 'expr' produces error.execution and empty event.data --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0" initial="s01"> + <!-- we should get the error before the done event --> + <scxml:transition event="error.execution" target="s1"/> + <scxml:transition event="done.state.s0" target="fail"/> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:content expr="return"/> + </scxml:donedata> + </scxml:final> + </scxml:state> + <!-- if we get here, we received the error event. Now check that the done + event has empty event.data --> + <scxml:state id="s1"> + <scxml:transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test529.scxml b/test/w3c/namespace/test529.scxml new file mode 100644 index 0000000..274fd6a --- /dev/null +++ b/test/w3c/namespace/test529.scxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- simple test that children workn with <content> --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="ecmascript" initial="s0"> + <scxml:state id="s0" initial="s01"> + <scxml:transition event="done.state.s0" cond="_event.data == 21" target="pass"> + </scxml:transition> + <scxml:transition event="done.state.s0" target="fail"> + </scxml:transition> + <scxml:state id="s01"> + <scxml:transition target="s02"/> + </scxml:state> + <scxml:final id="s02"> + <scxml:donedata> + <scxml:content>21</scxml:content> + </scxml:donedata> + </scxml:final> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test530.scxml b/test/w3c/namespace/test530.scxml new file mode 100644 index 0000000..7b31c31 --- /dev/null +++ b/test/w3c/namespace/test530.scxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that <content> child is evaluated when <invoke> is. Var1 is initialized +with an integer value, then set to an scxml script in the onentry to s0. If <content> +is evaluated at the right time, we should get invoke.done, otherwise an error --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="1"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:assign location="Var1"> + <scxml:scxml version="1.0"> + <scxml:final/> + </scxml:scxml> + </scxml:assign> + <scxml:send event="timeout" delay="2s"/> + </scxml:onentry> + <scxml:invoke type="http://www.w3.org/TR/scxml/"> + <scxml:content expr="Var1"/> + </scxml:invoke> + <scxml:transition event="done.invoke" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test531.scxml b/test/w3c/namespace/test531.scxml new file mode 100644 index 0000000..f206d12 --- /dev/null +++ b/test/w3c/namespace/test531.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that the value of the <param> _scxmleventname gets used as the name +of the raised event. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + <scxml:send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + <scxml:param name="_scxmleventname" expr="'test'"/> + </scxml:send> + </scxml:onentry> + <!-- if we get an event named 'test' we succeed. Otherwise fail --> + <scxml:transition event="test" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test532.scxml b/test/w3c/namespace/test532.scxml new file mode 100644 index 0000000..252bd87 --- /dev/null +++ b/test/w3c/namespace/test532.scxml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that if _scxmleventname is not present, the name of the HTTP method is used +as the name of the resulting event. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + <scxml:send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + <!-- this content will be ignored, but it's here to make sure we have a message body --> + <scxml:content>some content</scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="HTTP.POST" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test533.scxml b/test/w3c/namespace/test533.scxml new file mode 100644 index 0000000..b2d45e2 --- /dev/null +++ b/test/w3c/namespace/test533.scxml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that an internal transition whose source state is not compound does exit its source state --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s1" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + <!-- how often we have exited p --> + <scxml:data id="Var2" expr="0"/> + <!-- how often we have exited ps1 --> + <scxml:data id="Var3" expr="0"/> + <!-- how often we have exited ps2 --> + <scxml:data id="Var4" expr="0"/> + <!-- how often the transition for foo has been taken --> + </scxml:datamodel> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:raise event="foo"/> + <scxml:raise event="bar"/> + </scxml:onentry> + <scxml:transition target="p"/> + </scxml:state> + <scxml:parallel id="p"> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:transition event="foo" type="internal" target="ps1"> + <scxml:assign location="Var4" expr="Var4 + 1"/> + </scxml:transition> + <!-- make sure the transition on foo was actually taken --> + <scxml:transition event="bar" cond="Var4==1" target="s2"/> + <scxml:transition event="bar" target="fail"/> + <scxml:state id="ps1"> + <scxml:onexit> + <scxml:assign location="Var2" expr="Var2 + 1"/> + </scxml:onexit> + </scxml:state> + <scxml:state id="ps2"> + <scxml:onexit> + <scxml:assign location="Var3" expr="Var3 + 1"/> + </scxml:onexit> + </scxml:state> + </scxml:parallel> + <scxml:state id="s2"> + <!-- make sure that p was exited twice --> + <scxml:transition cond="Var1==2" target="s3"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <!-- make sure that ps1 was exited twice --> + <scxml:transition cond="Var2==2" target="s4"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s4"> + <!-- make sure that ps2 was exited twice --> + <scxml:transition cond="Var3==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test534.scxml b/test/w3c/namespace/test534.scxml new file mode 100644 index 0000000..bb70433 --- /dev/null +++ b/test/w3c/namespace/test534.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="30s"/> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + </scxml:send> + </scxml:onentry> + <!-- if other end sends us back this event, we succeed --> + <scxml:transition event="test" cond="_event.raw.search('_scxmleventname=test') !== -1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test539.txt b/test/w3c/namespace/test539.txt index de1b0a1..de1b0a1 100644 --- a/test/w3c/xpath/test539.txt +++ b/test/w3c/namespace/test539.txt diff --git a/test/w3c/xpath/test540.txt b/test/w3c/namespace/test540.txt index 2191239..2191239 100644 --- a/test/w3c/xpath/test540.txt +++ b/test/w3c/namespace/test540.txt diff --git a/test/w3c/namespace/test550.scxml b/test/w3c/namespace/test550.scxml new file mode 100644 index 0000000..af557b7 --- /dev/null +++ b/test/w3c/namespace/test550.scxml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that expr can be used to assign a value to a var. This test uses early binding --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript" binding="early"> + <scxml:state id="s0"> + <scxml:transition cond="Var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var1" expr="2"/> + </scxml:datamodel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test551.scxml b/test/w3c/namespace/test551.scxml new file mode 100644 index 0000000..74dce72 --- /dev/null +++ b/test/w3c/namespace/test551.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that inline content can be used to assign a value to a var. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" binding="early" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:datamodel> + <scxml:data id="Var1"> + [1,2,3] + </scxml:data> + </scxml:datamodel> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test552.scxml b/test/w3c/namespace/test552.scxml new file mode 100644 index 0000000..22b7572 --- /dev/null +++ b/test/w3c/namespace/test552.scxml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that src content can be used to assign a value to a var. Edit +test552.txt to have a value that's legal for the datamodel in question --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" src="file:test552.txt"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="Var1" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test552.txt b/test/w3c/namespace/test552.txt index d8263ee..d8263ee 100644 --- a/test/w3c/xpath/test552.txt +++ b/test/w3c/namespace/test552.txt diff --git a/test/w3c/namespace/test553.scxml b/test/w3c/namespace/test553.scxml new file mode 100644 index 0000000..a0b42ec --- /dev/null +++ b/test/w3c/namespace/test553.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- we test that the processor does not dispatch the event if evaluation +of <send>'s args causes an error.. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- timeout event --> + <scxml:send event="timeout" delayexpr="'1s'"/> + <!-- generate an invalid namelist --> + <scxml:send event="event1" namelist=""foo"/> + </scxml:onentry> + <!-- if we get the timeout before event1, we assume that event1 hasn't been sent + We ignore the error event here because this assertion doesn't mention it --> + <scxml:transition event="timeout" target="pass"/> + <scxml:transition event="event1" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test554.scxml b/test/w3c/namespace/test554.scxml new file mode 100644 index 0000000..d3e51fa --- /dev/null +++ b/test/w3c/namespace/test554.scxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that if the evaluation of <invoke>'s args causes an error, the +invocation is cancelled. In this test, that means that we don't get done.invoke +before the timer goes off. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timer" delayexpr="'1s'"/> + </scxml:onentry> + <!-- reference an invalid namelist --> + <scxml:invoke type="http://www.w3.org/TR/scxml/" namelist=""foo"> + <scxml:content> + <scxml:scxml initial="subFinal" version="1.0" datamodel="ecmascript"> + <scxml:final id="subFinal"/> + </scxml:scxml> + </scxml:content> + </scxml:invoke> + <scxml:transition event="timer" target="pass"/> + <scxml:transition event="done.invoke" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test557.scxml b/test/w3c/namespace/test557.scxml new file mode 100644 index 0000000..1175edd --- /dev/null +++ b/test/w3c/namespace/test557.scxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that if the child of <data> is XML, or if XML is loaded via src=, the processor + assigns it as the value of the var --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="var1"> + <books> + <book title="title1"/> + <book title="title2"/> + </books> + </scxml:data> + <scxml:data id="var2" src="file:test557.txt"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="var1.getElementsByTagName('book')[0].getAttribute('title') == 'title1'" target="s1"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="var2.getElementsByTagName('book')[1].getAttribute('title') == 'title2'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test557.txt b/test/w3c/namespace/test557.txt index a8e51da..a8e51da 100644 --- a/test/w3c/xpath/test557.txt +++ b/test/w3c/namespace/test557.txt diff --git a/test/w3c/namespace/test558.scxml b/test/w3c/namespace/test558.scxml new file mode 100644 index 0000000..53a758b --- /dev/null +++ b/test/w3c/namespace/test558.scxml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that if the child of <data> is not XML, or if XML is loaded via src=, + the processor treats the value as a string, does whitespace normalization and assigns it to the var.--> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="var1"> +this is +a string +</scxml:data> + <scxml:data id="var2" src="file:test558.txt"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:transition cond="var1 == 'this is a string'" target="s1"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="var2 == 'this is a string'" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/xpath/test558.txt b/test/w3c/namespace/test558.txt index bb2bcc7..bb2bcc7 100644 --- a/test/w3c/xpath/test558.txt +++ b/test/w3c/namespace/test558.txt diff --git a/test/w3c/namespace/test560.scxml b/test/w3c/namespace/test560.scxml new file mode 100644 index 0000000..b20ab50 --- /dev/null +++ b/test/w3c/namespace/test560.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that processor creates correct structure in + _event.data when receiving KVPs in an event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"> + <scxml:param name="aParam" expr="1"/> + </scxml:send> + </scxml:onentry> + <scxml:transition event="foo" cond="_event.data.aParam == 1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test561.scxml b/test/w3c/namespace/test561.scxml new file mode 100644 index 0000000..ea6549b --- /dev/null +++ b/test/w3c/namespace/test561.scxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that processor creates an ECMAScript DOM object + _event.data when receiving XML in an event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"> + <scxml:content> + <books> + <book title="title1"/> + <book title="title2"/> + </books> + </scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="foo" cond="_event.data.getElementsByTagName('book')[1].getAttribute('title') == 'title2'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test562.scxml b/test/w3c/namespace/test562.scxml new file mode 100644 index 0000000..0e103f6 --- /dev/null +++ b/test/w3c/namespace/test562.scxml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that processor creates space normalized string in + _event.data when receiving anything other than KVPs or XML in an event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"> + <scxml:content> +this is a +string +</scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="foo" cond="_event.data == 'this is a string'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test567.scxml b/test/w3c/namespace/test567.scxml new file mode 100644 index 0000000..9550c39 --- /dev/null +++ b/test/w3c/namespace/test567.scxml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that any content in the message other than _scxmleventname is used to populate +_event.data. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="2"/> + </scxml:datamodel> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="timeout" delay="3s"/> + <!-- in this case, 'test' will be placed in _scxmleventname. The <param> should + be used to populate _event.data --> + <scxml:send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> + <scxml:param name="param1" expr="2"/> + </scxml:send> + </scxml:onentry> + <!-- if we get this event, we succeed --> + <scxml:transition event="test" target="s1"> + <scxml:assign location="Var1" expr="_event.data.param1"/> + </scxml:transition> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:transition cond="Var1==2" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test569.scxml b/test/w3c/namespace/test569.scxml new file mode 100644 index 0000000..c981e08 --- /dev/null +++ b/test/w3c/namespace/test569.scxml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that location field is found inside entry for SCXML Event I/O processor in the ECMAScript +data model. The tests for the relevant event i/o processors will test that it can be used to +send events. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:transition cond="_ioprocessors['scxml'].location" target="pass"/> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test570.scxml b/test/w3c/namespace/test570.scxml new file mode 100644 index 0000000..486c95f --- /dev/null +++ b/test/w3c/namespace/test570.scxml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that we generate done.state.id when all a parallel state's children are in final states --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="p0" datamodel="ecmascript" version="1.0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:parallel id="p0"> + <scxml:onentry> + <scxml:send event="timeout" delay="2s"/> + <scxml:raise event="e1"/> + <scxml:raise event="e2"/> + </scxml:onentry> + <!-- record that we get the first done event --> + <scxml:transition event="done.state.p0s1"> + <scxml:assign location="Var1" expr="1"/> + </scxml:transition> + <!-- we should get the second done event before done.state.p0 --> + <scxml:transition event="done.state.p0s2" target="s1"/> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="p0s1" initial="p0s11"> + <scxml:state id="p0s11"> + <scxml:transition event="e1" target="p0s1final"/> + </scxml:state> + <scxml:final id="p0s1final"/> + </scxml:state> + <scxml:state id="p0s2" initial="p0s21"> + <scxml:state id="p0s21"> + <scxml:transition event="e2" target="p0s2final"/> + </scxml:state> + <scxml:final id="p0s2final"/> + </scxml:state> + </scxml:parallel> + <scxml:state id="s1"> + <!-- if we get done.state.p0, success --> + <scxml:transition event="done.state.p0" cond="Var1==1" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test576.scxml b/test/w3c/namespace/test576.scxml new file mode 100644 index 0000000..07a372b --- /dev/null +++ b/test/w3c/namespace/test576.scxml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and +test that both are entered. --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s11p112 s11p122" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:transition target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:onentry> + <scxml:send event="timeout" delay="1s"/> + </scxml:onentry> + <scxml:transition event="timeout" target="fail"/> + <scxml:state id="s11" initial="s111"> + <scxml:state id="s111"/> + <scxml:parallel id="s11p1"> + <scxml:state id="s11p11" initial="s11p111"> + <scxml:state id="s11p111"/> + <scxml:state id="s11p112"> + <scxml:onentry> + <scxml:raise event="In-s11p112"/> + </scxml:onentry> + </scxml:state> + </scxml:state> + <scxml:state id="s11p12" initial="s11p121"> + <scxml:state id="s11p121"/> + <scxml:state id="s11p122"> + <scxml:transition event="In-s11p112" target="pass"/> + </scxml:state> + </scxml:state> + </scxml:parallel> + </scxml:state> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test577.scxml b/test/w3c/namespace/test577.scxml new file mode 100644 index 0000000..28a28a3 --- /dev/null +++ b/test/w3c/namespace/test577.scxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that that <send> without target in basichttp event i/o processor +causes error.communication to get added to internal queue . --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" datamodel="ecmascript" version="1.0"> + <scxml:state id="s0"> + <scxml:onentry> + <!-- sent by scxml event i/o processor, added to external queue --> + <scxml:send event="event1"/> + <!-- should put error.communication on internal queue --> + <scxml:send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> + </scxml:onentry> + <scxml:transition event="error.communication" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test578.scxml b/test/w3c/namespace/test578.scxml new file mode 100644 index 0000000..b0e3ff7 --- /dev/null +++ b/test/w3c/namespace/test578.scxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- in the ECMA data model, test that processor creates an ECMAScript object + _event.data when receiving JSON in an event --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" initial="s0" version="1.0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:onentry> + <scxml:send event="foo"> + <scxml:content>{ "productName" : "bar", "size" : 27 }</scxml:content> + </scxml:send> + </scxml:onentry> + <scxml:transition event="foo" cond="_event.data.productName == 'bar'" target="pass"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test579.scxml b/test/w3c/namespace/test579.scxml new file mode 100644 index 0000000..03b0e37 --- /dev/null +++ b/test/w3c/namespace/test579.scxml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, +the executable content inside the <initial> transition. However the Processor MUST +execute this content only if there is no stored history. Once the history state's +parent state has been visited and exited, the default history content must not be executed --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="s0" datamodel="ecmascript"> + <scxml:state id="s0"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:initial> + <scxml:transition target="sh1"> + <scxml:raise event="event2"/> + </scxml:transition> + </scxml:initial> + <scxml:onentry> + <scxml:send delayexpr="'1s'" event="timeout"/> + <scxml:raise event="event1"/> + </scxml:onentry> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + <scxml:history id="sh1"> + <scxml:transition target="s01"> + <scxml:raise event="event3"/> + </scxml:transition> + </scxml:history> + <scxml:state id="s01"> + <scxml:transition event="event1" target="s02"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s02"> + <scxml:transition event="event2" target="s03"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s03"> + <scxml:transition cond="Var1==0" event="event3" target="s0"/> + <scxml:transition cond="Var1==1" event="event1" target="s2"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + </scxml:state> + <scxml:state id="s2"> + <scxml:transition event="event2" target="s3"/> + <scxml:transition event="*" target="fail"/> + </scxml:state> + <scxml:state id="s3"> + <scxml:transition event="event3" target="fail"/> + <scxml:transition event="timeout" target="pass"/> + </scxml:state> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/namespace/test580.scxml b/test/w3c/namespace/test580.scxml new file mode 100644 index 0000000..8744e2d --- /dev/null +++ b/test/w3c/namespace/test580.scxml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- test that a history state never ends up part of the configuration --> +<scxml:scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" xmlns:scxml="http://www.w3.org/2005/07/scxml" version="1.0" initial="p1" datamodel="ecmascript"> + <scxml:datamodel> + <scxml:data id="Var1" expr="0"/> + </scxml:datamodel> + <scxml:parallel id="p1"> + <scxml:onentry> + <scxml:send delay="2s" event="timeout"/> + </scxml:onentry> + <scxml:state id="s0"> + <scxml:transition cond="In('sh1')" target="fail"/> + <scxml:transition event="timeout" target="fail"/> + </scxml:state> + <scxml:state id="s1"> + <scxml:initial> + <scxml:transition target="sh1"/> + </scxml:initial> + <scxml:history id="sh1"> + <scxml:transition target="s11"/> + </scxml:history> + <scxml:state id="s11"> + <scxml:transition cond="In('sh1')" target="fail"/> + <scxml:transition target="s12"/> + </scxml:state> + <scxml:state id="s12"/> + <scxml:transition cond="In('sh1')" target="fail"/> + <scxml:transition cond="Var1==0" target="sh1"/> + <scxml:transition cond="Var1==1" target="pass"/> + <scxml:onexit> + <scxml:assign location="Var1" expr="Var1 + 1"/> + </scxml:onexit> + </scxml:state> + </scxml:parallel> + <scxml:final id="pass"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'pass'"/> + </scxml:onentry> + </scxml:final> + <scxml:final id="fail"> + <scxml:onentry> + <scxml:log label="Outcome" expr="'fail'"/> + </scxml:onentry> + </scxml:final> +</scxml:scxml> diff --git a/test/w3c/prolog/test144.scxml b/test/w3c/prolog/test144.scxml deleted file mode 100644 index 553c73b..0000000 --- a/test/w3c/prolog/test144.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that events are inserted into the queue in the order in which they are raised. If -foo occurs before bar, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition event="foo" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test147.scxml b/test/w3c/prolog/test147.scxml deleted file mode 100644 index d900aa3..0000000 --- a/test/w3c/prolog/test147.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the first clause that evaluates to true - and only that clause - is executed. -Only one event should be raised, and it should be bar --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <elseif cond="true"/> - <raise event="bar"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <else/> - <raise event="baz"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bar" cond="X = 1, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test148.scxml b/test/w3c/prolog/test148.scxml deleted file mode 100644 index fa6fe4b..0000000 --- a/test/w3c/prolog/test148.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the else clause executes if <if> and <elseif> evaluate to false. -Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause -fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <elseif cond="false"/> - <raise event="bar"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <else/> - <raise event="baz"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="baz" cond="X = 1, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test149.scxml b/test/w3c/prolog/test149.scxml deleted file mode 100644 index 9a3e107..0000000 --- a/test/w3c/prolog/test149.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that neither if clause executes, so that bat is the only event raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <elseif cond="false"/> - <raise event="bar"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bat" cond="X = 0, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test150.scxml b/test/w3c/prolog/test150.scxml deleted file mode 100644 index 770e672..0000000 --- a/test/w3c/prolog/test150.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - <data id="var3"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="var1" index="var2" array="var3(X), member(M, X)"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="var4" index="var5" array="var3(X), member(M, X)"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var4 is bound --> - <transition cond="var4" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test151.scxml b/test/w3c/prolog/test151.scxml deleted file mode 100644 index e3a6ca2..0000000 --- a/test/w3c/prolog/test151.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - <data id="var3"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="var1" index="var2" array="var3(X), member(M, X)"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="var4" index="var5" array="var3(X), member(M, X)"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var5 is bound --> - <transition cond="var5" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test152.scxml b/test/w3c/prolog/test152.scxml deleted file mode 100644 index d5473c6..0000000 --- a/test/w3c/prolog/test152.scxml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an illegal array or item value causes error.execution and results in executable content -not being executed. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="0"/> - <data id="var2"/> - <data id="var3"/> - <data id="var4" expr="7"/> - <data id="var5"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- invalid array, legal item --> - <foreach item="var2" index="var3" array="var4"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </foreach> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <!-- illegal item, legal array --> - <foreach item="'continue'" index="var3" array="var5(X), member(M, X)"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </foreach> - <raise event="bar"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="bar" target="fail"/> - </state> - <state id="s2"> - <!-- check that var1 has its original value (so executable content never got executed --> - <transition cond="X = 0, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test153.scxml b/test/w3c/prolog/test153.scxml deleted file mode 100644 index daedac0..0000000 --- a/test/w3c/prolog/test153.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current -value with the previous value, which is stored in var1. The current value should always be larger. If -it ever isn't, set Var4 to 0, indicating failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- contains the previous value --> - <data id="var2"/> - <!-- the item which will contain the current value --> - <data id="var3"> - [1,2,3] - </data> - <data id="var4" expr="1"/> - <!-- 1 if success, 0 if failure --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="var2" array="var3(X), member(M, X)"> - <if cond="var1<var2"> - <assign location="var1" expr="var2"/> - <else/> - <!-- values are out of order, record failure --> - <assign location="var4" expr="0"/> - </if> - </foreach> - </onentry> - <!-- check that var1 has its original value --> - <transition cond="X = 0, var4(X)" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test155.scxml b/test/w3c/prolog/test155.scxml deleted file mode 100644 index db32543..0000000 --- a/test/w3c/prolog/test155.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable -content sums the items into var1 so it should be 6 at the end --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <data id="var2"/> - <data id="var3"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="var2" array="var3(X), member(M, X)"> - <assign location="var1" expr="var1 + Var2"/> - </foreach> - </onentry> - <transition cond="X = 6, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test156.scxml b/test/w3c/prolog/test156.scxml deleted file mode 100644 index e94016f..0000000 --- a/test/w3c/prolog/test156.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an error causes the foreach to stop execution. The second piece of executable content -should cause an error, so var1 should be incremented only once --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <data id="var2"/> - <data id="var3"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="var2" array="var3(X), member(M, X)"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - <!-- assign an illegal value to a non-existent var --> - <assign location="var5" expr="return"/> - </foreach> - </onentry> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test158.scxml b/test/w3c/prolog/test158.scxml deleted file mode 100644 index 91d76ce..0000000 --- a/test/w3c/prolog/test158.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test159.scxml b/test/w3c/prolog/test159.scxml deleted file mode 100644 index 28afe9f..0000000 --- a/test/w3c/prolog/test159.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. -The send tag will raise an error so var1 should not be incremented. If it is fail, otherwise succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="thisWillFail" target="baz"/> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onentry> - <transition cond="X = 1, var1(X)" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test172.scxml b/test/w3c/prolog/test172.scxml deleted file mode 100644 index 1ab596c..0000000 --- a/test/w3c/prolog/test172.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that eventexpr uses the current value of var1, not its initial value --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="'event1'"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="'event2'"/> - <send eventexpr="var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test173.scxml b/test/w3c/prolog/test173.scxml deleted file mode 100644 index e7c85f3..0000000 --- a/test/w3c/prolog/test173.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that targetexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="'#_internal'"/> - <send targetexpr="var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test174.scxml b/test/w3c/prolog/test174.scxml deleted file mode 100644 index 1b4ae5e..0000000 --- a/test/w3c/prolog/test174.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typeexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"/> - <send typeexpr="var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test175.scxml b/test/w3c/prolog/test175.scxml deleted file mode 100644 index e99f57b..0000000 --- a/test/w3c/prolog/test175.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayexpr uses the current value of var1, not its initial value -(If it uses the initial value, event2 will be generated first, before event1. If it uses the current value, -event1 will be raised first. Succeed if event1 occurs before event2, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="'0s'"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="'1s'"/> - <send delayexpr="var1" event="event2"/> - <send delayexpr="'.5s'" event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="event2" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test176.scxml b/test/w3c/prolog/test176.scxml deleted file mode 100644 index bf7a339..0000000 --- a/test/w3c/prolog/test176.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <param> uses the current value of var1, not its initial value. If the value of -aParam in event1 is 2 so that var2 gets set to 2, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="2"/> - <send event="event1"> - <param name="aParam" expr="var1"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="var2" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="X = 2, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test178.scxml b/test/w3c/prolog/test178.scxml deleted file mode 100644 index 6476440..0000000 --- a/test/w3c/prolog/test178.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that multiple key/value pairs are included, even when the keys are the same. -This is a manual test. The tester must look at the log output and verify that both -keys are there. (This test uses the SCXML Event I/O processor, which is the only -one that all platforms must support. It does not specify the message format, so -we cannot test _event.raw directly. Therefore we print it out for visual -inspection.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="var1" expr="2"/> - <param name="var1" expr="3"/> - </send> - </onentry> - <transition event="event1" target="final"> - <log label="_event " expr="_event.raw"/> - </transition> - <transition event="*" target="fail"/> - </state> - <final id="final"/> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test179.scxml b/test/w3c/prolog/test179.scxml deleted file mode 100644 index d304167..0000000 --- a/test/w3c/prolog/test179.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <content> can be used to populate body of a message --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="event1"> - <content>123</content> - </send> - </onentry> - <transition event="event1" cond="_event.data == 123" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test183.scxml b/test/w3c/prolog/test183.scxml deleted file mode 100644 index 38e6f73..0000000 --- a/test/w3c/prolog/test183.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> stores the value of the sendid in idlocation. If it does, -var1 has a value and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" idlocation="var1"/> - </onentry> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test185.scxml b/test/w3c/prolog/test185.scxml deleted file mode 100644 index 8ffe367..0000000 --- a/test/w3c/prolog/test185.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> respects the delay specification. If it does, event1 arrives before event2 - and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="event2" delayexpr="'1s'"/> - <send event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test186.scxml b/test/w3c/prolog/test186.scxml deleted file mode 100644 index cf48f54..0000000 --- a/test/w3c/prolog/test186.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the -message is actually sent. If it does, aParam will have the value of 1 (even though var1 has been incremented -in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" delayexpr="'1s'"> - <param name="aParam" expr="var1"/> - </send> - <assign location="var1" expr="2"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="var2" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="X = 1, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test187.scxml b/test/w3c/prolog/test187.scxml deleted file mode 100644 index b59d404..0000000 --- a/test/w3c/prolog/test187.scxml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayed <send> is not sent if the sending session terminates. In this case, -a subscript is invoked which sends the event childToParent delayed by 1 second, and then terminates. The -parent session, should not receive childToParent. If it does, we fail. Otherwise the -10 sec timer expires and we pass --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delayexpr="'1s'"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- exit before the delayed send can execute --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent" delayexpr="'.5s'"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="fail"/> - <transition event="timeout" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test189.scxml b/test/w3c/prolog/test189.scxml deleted file mode 100644 index 713cb6a..0000000 --- a/test/w3c/prolog/test189.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <!-- goes to the external queue --> - <send event="event2"/> - <!-- to the internal queue --> - <send event="event1" target="#_internal"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="pass"/> - <transition event="event2" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test190.scxml b/test/w3c/prolog/test190.scxml deleted file mode 100644 index be5fd5e..0000000 --- a/test/w3c/prolog/test190.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first). we have to make sure that event2 -is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="'#_scxml_'"/> - <data id="var2" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="var1 + Var2"/> - <!-- goes to the external queue --> - <send event="event2" targetexpr="var1"/> - <!-- to the internal queue --> - <raise event="event1"/> - <!-- this should get added to the external queue after event2 --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <!-- now check that we get event2 and not a timeout --> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test191.scxml b/test/w3c/prolog/test191.scxml deleted file mode 100644 index 11d03c0..0000000 --- a/test/w3c/prolog/test191.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event -childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we -pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- send an event to the parent session using #_parent as the target --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test192.scxml b/test/w3c/prolog/test192.scxml deleted file mode 100644 index 7c461e4..0000000 --- a/test/w3c/prolog/test192.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us -childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. -If it receives this event, it sends sends the event eventReceived to its parent session (ths session). -If we get this event, we pass, otherwise the child script eventually times out sends invoke.done and we fail. -We also set a timeout in this process to make sure the test doesn't hang --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="scxml" id="invokedChild"> - <content> - <!-- let the parent session know we're running by sending childToParent, then wait for parentToChild. - If we get it, send eventReceived. If we don't we eventually time out --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="parentToChild" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <send target="#_invokedChild" event="parentToChild"/> - </transition> - </state> - <state id="s02"> - <transition event="eventReceived" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test193.scxml b/test/w3c/prolog/test193.scxml deleted file mode 100644 index 574ba84..0000000 --- a/test/w3c/prolog/test193.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that omitting target and targetexpr of <send> when using the -SCXML event i/o processor puts the event on the external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="internal"/> - <!-- this should put event1 in the external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="event1" target="fail"/> - <transition event="internal" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="timeout" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test194.scxml b/test/w3c/prolog/test194.scxml deleted file mode 100644 index cfdc689..0000000 --- a/test/w3c/prolog/test194.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, -we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <!-- should cause an error --> - <send target="baz" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test198.scxml b/test/w3c/prolog/test198.scxml deleted file mode 100644 index 026fcad..0000000 --- a/test/w3c/prolog/test198.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell -what processor was used is to look at the origintype of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" cond=" _event.origintype == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test199.scxml b/test/w3c/prolog/test199.scxml deleted file mode 100644 index c1e6c33..0000000 --- a/test/w3c/prolog/test199.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that using an invalid send type results in error.execution --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send type="27" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test200.scxml b/test/w3c/prolog/test200.scxml deleted file mode 100644 index a861a02..0000000 --- a/test/w3c/prolog/test200.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the scxml event i/o processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test201.scxml b/test/w3c/prolog/test201.scxml deleted file mode 100644 index b04be33..0000000 --- a/test/w3c/prolog/test201.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the basic http event i/o processor. This is an optional -test since platforms are not required to support basic http event i/o --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors['basichttp']['location']" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test205.scxml b/test/w3c/prolog/test205.scxml deleted file mode 100644 index 364a8d5..0000000 --- a/test/w3c/prolog/test205.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor doesn't change the message. We can't test that it never does this, but -at least we can check that the event name and included data are the same as we sent. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="aParam" expr="1"/> - </send> - <send event="timeout"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="var1" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test207.scxml b/test/w3c/prolog/test207.scxml deleted file mode 100644 index 860a307..0000000 --- a/test/w3c/prolog/test207.scxml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies -us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event - event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event -raised in another session, but the spec doesn't define any way to refer to an event in another process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- when invoked, we raise a delayed event1 with sendid 'foo' and notify our parent. Then we wait. - If event1 occurs, the parent hasn't succeeded in canceling it and we return pass. If event2 occurs - it means event1 was canceled (because event2 is delayed longer than event1) and we return 'fail'. --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="event1" id="foo" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <send target="#_parent" event="childToParent"/> - </onentry> - <transition event="event1" target="subFinal"> - <send target="#_parent" event="pass"/> - </transition> - <transition event="*" target="subFinal"> - <send target="#_parent" event="fail"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childToParent" target="s02"> - <cancel sendid="foo"/> - </transition> - </state> - <state id="s02"> - <transition event="pass" target="pass"/> - <transition event="fail" target="fail"/> - <transition event="timeout" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test208.scxml b/test/w3c/prolog/test208.scxml deleted file mode 100644 index 6211869..0000000 --- a/test/w3c/prolog/test208.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that cancel works. We cancel delayed event1. If cancel works, we get event2 first and pass. If -we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send id="foo" event="event1" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <cancel sendid="foo"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test210.scxml b/test/w3c/prolog/test210.scxml deleted file mode 100644 index efcde02..0000000 --- a/test/w3c/prolog/test210.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that sendidexpr works with cancel. If it takes the most recent value of var1, it should cancel -delayed event1. Thus we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="'bar'"/> - </datamodel> - <state id="s0"> - <onentry> - <send id="foo" event="event1" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <assign location="var1" expr="'foo'"/> - <cancel sendidexpr="var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test215.scxml b/test/w3c/prolog/test215.scxml deleted file mode 100644 index 948fd96..0000000 --- a/test/w3c/prolog/test215.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If -the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - <assign location="var1" expr="'http://www.w3.org/TR/scxml/'"/> - </onentry> - <invoke typeexpr="var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" datamodel="prolog" version="1.0"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test216.scxml b/test/w3c/prolog/test216.scxml deleted file mode 100644 index 6b45034..0000000 --- a/test/w3c/prolog/test216.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that srcexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (assuming that there is no script named 'foo'). If -the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - <assign location="var1" expr="'file:test216sub1.scxml'"/> - </onentry> - <invoke srcexpr="var1" type="http://www.w3.org/TR/scxml"/> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test216sub1.scxml b/test/w3c/prolog/test216sub1.scxml deleted file mode 100644 index 53ff2d6..0000000 --- a/test/w3c/prolog/test216sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="prolog"> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test220.scxml b/test/w3c/prolog/test220.scxml deleted file mode 100644 index d0cde37..0000000 --- a/test/w3c/prolog/test220.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the scxml type is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test223.scxml b/test/w3c/prolog/test223.scxml deleted file mode 100644 index c92fab9..0000000 --- a/test/w3c/prolog/test223.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that idlocation is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test224.scxml b/test/w3c/prolog/test224.scxml deleted file mode 100644 index 11753f7..0000000 --- a/test/w3c/prolog/test224.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id has the form stateid.platformid. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - <data id="var2" expr="'s0.'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml version="1.0" initial="subFinal" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="(function(str, starts){if (starts === '') return true;if (str == null || starts == null) return false;str = String(str); starts = String(starts);return str.length >= starts.length && str.slice(0, starts.length) === starts;})(var1, Var2)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test225.scxml b/test/w3c/prolog/test225.scxml deleted file mode 100644 index 2d6e550..0000000 --- a/test/w3c/prolog/test225.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="var1"> - <content> - <scxml initial="subFinal1" version="1.0" datamodel="prolog"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="var2"> - <content> - <scxml initial="subFinal2" version="1.0" datamodel="prolog"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="var1===Var2" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test226.scxml b/test/w3c/prolog/test226.scxml deleted file mode 100644 index 5635c19..0000000 --- a/test/w3c/prolog/test226.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is basically just a test that invoke works correctly and that you can pass data -to the invoked process. If the invoked session finds aParam==1, it exits, signalling -success. otherwise it will hang and the timeout in this doc signifies failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test226sub1.scxml"> - <param name="var1" expr="1"/> - </invoke> - <transition event="varBound" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test226sub1.scxml b/test/w3c/prolog/test226sub1.scxml deleted file mode 100644 index c2e856c..0000000 --- a/test/w3c/prolog/test226sub1.scxml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, if var1 has a value notify parent. Then terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="final"> - <send target="#_parent" event="varBound"/> - </transition> - <transition target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test228.scxml b/test/w3c/prolog/test228.scxml deleted file mode 100644 index a695cfb..0000000 --- a/test/w3c/prolog/test228.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the invokeid is included in events returned from the invoked process. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="s1"> - <assign location="var1" expr="_event.invokeid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="var1=='foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test229.scxml b/test/w3c/prolog/test229.scxml deleted file mode 100644 index 4ecc238..0000000 --- a/test/w3c/prolog/test229.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that autofoward works. If the child process receives back a copy of the -childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note -that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise -it eventually times out and the done.invoke signals failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. - If it is forwarded back to us, send - eventReceived to signal success and terminate. - Otherwise wait for timer to expire and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent"/> - <transition event="eventReceived" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test230.scxml b/test/w3c/prolog/test230.scxml deleted file mode 100644 index 066362b..0000000 --- a/test/w3c/prolog/test230.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a manual test that an autofowarded event has the same fields and values as the original event. -the child process sends the parent process an event which is forwarded back to it. -Both the parent and child process print out the contents of the event. The tester -must check if they are the same and report his result. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. If it is forwarded back to us, print out its - fields and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <log label="name is " expr="_event.name"/> - <log label="type is " expr="_event.type"/> - <log label="sendid is " expr="_event.sendid"/> - <log label="origin is " expr="_event.origin"/> - <log label="origintype is " expr="_event.origintype"/> - <log label="invokeid is " expr="_event.invokeid"/> - <log label="data is " expr="_event.data"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="final"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <log label="name is " expr="_event.name"/> - <log label="type is " expr="_event.type"/> - <log label="sendid is " expr="_event.sendid"/> - <log label="origin is " expr="_event.origin"/> - <log label="origintype is " expr="_event.origintype"/> - <log label="invokeid is " expr="_event.invokeid"/> - <log label="data is " expr="_event.data"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <!-- wait till we get the done event to ensure that the child process has time to print out its results --> - <transition event="done.invoke" target="final"/> - </state> - </state> - <final id="final"/> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test232.scxml b/test/w3c/prolog/test232.scxml deleted file mode 100644 index f3d3186..0000000 --- a/test/w3c/prolog/test232.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a parent process can receive multiple events from a child process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent1"/> - <send target="#_parent" event="childToParent2"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent1" target="s02"/> - </state> - <state id="s02"> - <transition event="childToParent2" target="s03"/> - </state> - <state id="s03"> - <transition event="done.invoke" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test233.scxml b/test/w3c/prolog/test233.scxml deleted file mode 100644 index d67aa2d..0000000 --- a/test/w3c/prolog/test233.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that finalize markup runs before the event is processed. The invoked process will -return 2 in _event.data.aParam, so that new value should be in force when we select -the transtitions. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="var1" expr="_event.data.aParam"/> - </finalize> - </invoke> - <transition event="childToParent" cond="X = 2, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test234.scxml b/test/w3c/prolog/test234.scxml deleted file mode 100644 index 6f11dab..0000000 --- a/test/w3c/prolog/test234.scxml +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that only finalize markup in the invoking state runs. the first invoked process will -return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. -Only the first finalize should execute. So when we get to s1 var1 should have value 2 but -var2 should still be set to 1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - <data id="var2" expr="1"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="p01"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="prolog"> - <final id="subFinal1"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="var1" expr="_event.data.aParam"/> - </finalize> - </invoke> - <transition event="childToParent" cond="X = 2, var1(X)" target="s1"/> - <transition event="childToParent" target="fail"/> - </state> - <state id="p02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="sub0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - <finalize> - <assign location="var2" expr="_event.data.aParam"/> - </finalize> - </invoke> - </state> - </parallel> - <state id="s1"> - <transition cond="X = 1, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test235.scxml b/test/w3c/prolog/test235.scxml deleted file mode 100644 index acc4b61..0000000 --- a/test/w3c/prolog/test235.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event has the right id. the invoked child terminates immediately -and should generate done.invoke.foo --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke.foo" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test236.scxml b/test/w3c/prolog/test236.scxml deleted file mode 100644 index 9cc1a27..0000000 --- a/test/w3c/prolog/test236.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event is the last event we receive. the invoked process sends childToParent -in the exit handler of its final state. We should get it before the done.invoke, and we should get no -events after the done.invoke. Hence timeout indicates success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </final> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="s1"/> - <transition event="done.invoke" target="fail"/> - </state> - <state id="s1"> - <!-- here we should get done.invoke --> - <transition event="done.invoke" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="timeout" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test237.scxml b/test/w3c/prolog/test237.scxml deleted file mode 100644 index a3ec4c5..0000000 --- a/test/w3c/prolog/test237.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We -sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. -If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by -the time timeout2 fires, success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout1" delayexpr="'1s'"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, sleep for 2 secs then terminate. Parent will try to cancel this session --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout1" target="s1"/> - </state> - <state id="s1"> - <onentry> - <send event="timeout2" delayexpr="'1.5s'"/> - </onentry> - <!-- here we should NOT get done.invoke --> - <transition event="done.invoke" target="fail"/> - <transition event="*" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test239.scxml b/test/w3c/prolog/test239.scxml deleted file mode 100644 index 05a4b05..0000000 --- a/test/w3c/prolog/test239.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup can be specified both by 'src' and by <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test239sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test239sub1.scxml. --> - <content> - <scxml version="1.0" initial="final" datamodel="prolog"> - <final id="final"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test239sub1.scxml b/test/w3c/prolog/test239sub1.scxml deleted file mode 100644 index 7ca8049..0000000 --- a/test/w3c/prolog/test239sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="prolog"> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test240.scxml b/test/w3c/prolog/test240.scxml deleted file mode 100644 index 8fa7804..0000000 --- a/test/w3c/prolog/test240.scxml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified both by 'namelist' and by <param>. -invoked child will return success if its Var1 is set to 1, failure otherwise. This -test will fail schema validation because of the multiple occurences of Var1, but -should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="var1===1" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="fail"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="X = 1, var1(X)" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="failure" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test241.scxml b/test/w3c/prolog/test241.scxml deleted file mode 100644 index 287f6f7..0000000 --- a/test/w3c/prolog/test241.scxml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- The child process will return success ifits Var1 is set to 1, failure otherwise. For this test -we try passing in Var1 by param and by namelist and check that we either get two successes -or two failures. This test will fail schema validation due to multiple declarations of -Var1, but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="X = 1, var1(X)" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="s03"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="X = 1, var1(X)" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal2"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got success in s01, so we need to do so here --> - <transition event="success" target="pass"/> - <transition event="failure" target="fail"/> - </state> - <state id="s03"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="var1" expr="1"/> - <content> - <scxml initial="sub03" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub03"> - <transition cond="X = 1, var1(X)" target="subFinal3"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal3"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal3"/> - </scxml> - </content> - </invoke> - <!-- we got failure in s01, so we need to do so here --> - <transition event="failure" target="pass"/> - <transition event="success" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test242.scxml b/test/w3c/prolog/test242.scxml deleted file mode 100644 index df5e563..0000000 --- a/test/w3c/prolog/test242.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup specified by 'src' and by <content> is treated the same way. That means that -either we get done.invoke in both cases or in neither case (in which case we timeout) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout1" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test242sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - <transition event="timeout1" target="s03"/> - </state> - <state id="s02"> - <onentry> - <send event="timeout2" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="prolog"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <!-- we got done.invoke last time, so we need it this time too --> - <transition event="done.invoke" target="pass"/> - <transition event="timeout2" target="fail"/> - </state> - <state id="s03"> - <onentry> - <send event="timeout3" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal2" datamodel="prolog"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got timeout last time, so we need it this time too --> - <transition event="timeout3" target="pass"/> - <transition event="done.invoke" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test242sub1.scxml b/test/w3c/prolog/test242sub1.scxml deleted file mode 100644 index 7ca8049..0000000 --- a/test/w3c/prolog/test242sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="prolog"> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test243.scxml b/test/w3c/prolog/test243.scxml deleted file mode 100644 index 76b66e0..0000000 --- a/test/w3c/prolog/test243.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by param. -test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="var1" expr="1"/> - <content> - <scxml version="1.0" initial="sub0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="X = 1, var1(X)" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test244.scxml b/test/w3c/prolog/test244.scxml deleted file mode 100644 index 7e1e29d..0000000 --- a/test/w3c/prolog/test244.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by namelist. -invoked child will return success ifits Var1 is set to 1, failure otherwise. -This test will fail schema validation due to multiple occurrences of Var1, -but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="var1"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="X = 1, var1(X)" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test245.scxml b/test/w3c/prolog/test245.scxml deleted file mode 100644 index 3ff9866..0000000 --- a/test/w3c/prolog/test245.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that non-existent datamodel values are not set. Var2 is not defined in -invoked child's datamodel. It will will return success if its Var2 remains unbound, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var2" expr="3"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="var2"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <transition cond="var2" target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test247.scxml b/test/w3c/prolog/test247.scxml deleted file mode 100644 index 7db10ac..0000000 --- a/test/w3c/prolog/test247.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get done.invoke. timeout indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="timeout" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test250.scxml b/test/w3c/prolog/test250.scxml deleted file mode 100644 index 6eeb1a6..0000000 --- a/test/w3c/prolog/test250.scxml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the onexit handlers run in the invoked process if it is cancelled. This has to be a -manual test, since this process won't accept any events from the child process once it has been cancelled. -Tester must examine log output from child process to determine success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0" initial="sub01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <log expr="'Exiting sub0'"/> - </onexit> - <state id="sub01"> - <onexit> - <log expr="'Exiting sub01'"/> - </onexit> - </state> - </state> - <final id="subFinal"> - <onentry> - <log expr="'entering final state, invocation was not cancelled'"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test252.scxml b/test/w3c/prolog/test252.scxml deleted file mode 100644 index c940c33..0000000 --- a/test/w3c/prolog/test252.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we don't process any events received from the invoked process once it is cancelled. child -process tries to send us childToParent in an onexit handler. If we get it, we fail. -timeout indicates success. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="childToParent" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="s02"/> - </state> - <state id="s02"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test253.scxml b/test/w3c/prolog/test253.scxml deleted file mode 100644 index 41734af..0000000 --- a/test/w3c/prolog/test253.scxml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event processor is used in both directions. If child process uses the -scxml event i/o processor to communicate with us, send it an event. It will send back success if -this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow -'scxml' as an alternative to the full url. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="scxml" id="foo"> - <content> - <!-- inform parent we're running then wait for it to send us an event. If it uses the scxml event i/o - processor to do so, return success, otherwise return failure. --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var2"/> - </datamodel> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childRunning"/> - </onentry> - <transition event="parentToChild" target="sub1"> - <assign location="var2" expr="_event.origintype"/> - </transition> - </state> - <state id="sub1"> - <transition cond="var2=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition cond="var2=='scxml'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childRunning" target="s02"> - <assign location="var1" expr="_event.origintype"/> - </transition> - </state> - <state id="s02"> - <transition cond="var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition cond="var1=='scxml'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition target="fail"/> - </state> - <state id="s03"> - <transition event="success" target="pass"/> - <transition event="fail" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test276.scxml b/test/w3c/prolog/test276.scxml deleted file mode 100644 index 9e1a219..0000000 --- a/test/w3c/prolog/test276.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that values passed in from parent process override default values specified in the child, test276sub1.scxml. -The child returns event1 if var1 has value 1, event0 if it has default value 0. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <invoke type="scxml" src="file:test276sub1.scxml"> - <param name="var1" expr="1"/> - </invoke> - <transition event="event1" target="pass"/> - <transition event="event0" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test276sub1.scxml b/test/w3c/prolog/test276sub1.scxml deleted file mode 100644 index 3b25942..0000000 --- a/test/w3c/prolog/test276sub1.scxml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- define var1 with default value 0. Parent will invoke this process setting var1 = 1. Return event1 if var1 == 1, event0 otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <transition cond="X = 1, var1(X)" target="final"> - <send target="#_parent" event="event1"/> - </transition> - <transition target="final"> - <send target="#_parent" event="event0"/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test277.scxml b/test/w3c/prolog/test277.scxml deleted file mode 100644 index 54a748a..0000000 --- a/test/w3c/prolog/test277.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that platform creates undound variable if we assign an illegal value to it. Thus - we can assign to it later in state s1. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="return"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" cond="typeof Var1 === 'undefined' " target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="var1" expr="1"/> - </onentry> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test279.scxml b/test/w3c/prolog/test279.scxml deleted file mode 100644 index 1c4624e..0000000 --- a/test/w3c/prolog/test279.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- testing that in case of early binding variables are assigned values at init time, before - the state containing them is visited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test280.scxml b/test/w3c/prolog/test280.scxml deleted file mode 100644 index 2384f98..0000000 --- a/test/w3c/prolog/test280.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test late binding. var2 won't get bound until s1 is entered, so it shouldn't have a value in s0 and -accessing it should cause an error. It should get bound before the onentry code in s1 so it should be -possible access it there and assign its value to var1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" binding="late"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <transition cond="typeof Var2 === 'undefined' " target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="var2" expr="1"/> - </datamodel> - <onentry> - <assign location="var1" expr="var2"/> - </onentry> - <transition cond="var1===Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test286.scxml b/test/w3c/prolog/test286.scxml deleted file mode 100644 index 6d261fb..0000000 --- a/test/w3c/prolog/test286.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case -where no error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0"> - <onentry> - <assign location="foo.bar.baz " expr="1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test287.scxml b/test/w3c/prolog/test287.scxml deleted file mode 100644 index 21087c9..0000000 --- a/test/w3c/prolog/test287.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0" initial="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="1"/> - </onentry> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test288.scxml b/test/w3c/prolog/test288.scxml deleted file mode 100644 index 76ae21b..0000000 --- a/test/w3c/prolog/test288.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location -using child content --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0" initial="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1">123</assign> - </onentry> - <transition cond="var1 == 123" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test294.scxml b/test/w3c/prolog/test294.scxml deleted file mode 100644 index 909db1a..0000000 --- a/test/w3c/prolog/test294.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a param inside donedata ends up in the data field of the done event and -that content inside donedata sets the full value of the event.data field --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data['Var1']==1" target="s1"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="var1" expr="1"/> - </donedata> - </final> - </state> - <state id="s1" initial="s11"> - <transition event="done.state.s1" cond="_event.data == 'foo'" target="pass"> - </transition> - <transition event="done.state.s1" target="fail"> - </transition> - <state id="s11"> - <transition target="s12"/> - </state> - <final id="s12"> - <donedata> - <content>foo</content> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test298.scxml b/test/w3c/prolog/test298.scxml deleted file mode 100644 index cdc2c40..0000000 --- a/test/w3c/prolog/test298.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="var3" location="foo.bar.baz "/> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test301.scxml b/test/w3c/prolog/test301.scxml deleted file mode 100644 index 0b2bd50..0000000 --- a/test/w3c/prolog/test301.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the processor should reject this document because it can't download the script. -Therefore we fail if it runs at all. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0"> - <script src="D:\foo"/> - <state id="s0"> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test302.scxml b/test/w3c/prolog/test302.scxml deleted file mode 100644 index dbc2de0..0000000 --- a/test/w3c/prolog/test302.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a script is evaluated at load time. <conf:script> shoudl assign the value 1 to -Var1. Hence, if script is evaluated at download time, Var1 has a value in the initial state s0. -This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <script>var Var1 = 1</script> - <state id="s0"> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test303.scxml b/test/w3c/prolog/test303.scxml deleted file mode 100644 index 2486845..0000000 --- a/test/w3c/prolog/test303.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the -right point. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="2"/> - <script>var Var1 = 1</script> - </onentry> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test304.scxml b/test/w3c/prolog/test304.scxml deleted file mode 100644 index 15ef800..0000000 --- a/test/w3c/prolog/test304.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a variable declared by a script can be accessed like any other part of the data model --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0" initial="s0"> - <script>var Var1 = 1</script> - <state id="s0"> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test307.scxml b/test/w3c/prolog/test307.scxml deleted file mode 100644 index bcd0233..0000000 --- a/test/w3c/prolog/test307.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0" initial="s0" binding="late"> - <!-- with binding=late, in s0 we access a variable that isn't created until we get to s1. Then in s1 -we access a non-existent substructure of a variable. We use log tags to report the values that both operations -yield, and whether there are errors. This is a manual test, since the tester must report whether the output -is the same in the two cases --> - <state id="s0"> - <onentry> - <log label="entering s0 value of Var 1 is: " expr="var1"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="s1"> - <log label="error in state s0" expr="_event"/> - </transition> - <transition event="foo" target="s1"> - <log label="no error in s0" expr=""/> - </transition> - </state> - <state id="s1"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <onentry> - <log label="entering s1, value of non-existent substructure of Var 1 is: " expr="var1.bar"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="final"> - <log label="error in state s1" expr="_event"/> - </transition> - <transition event="bar" target="final"> - <log label="No error in s1" expr=""/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/prolog/test309.scxml b/test/w3c/prolog/test309.scxml deleted file mode 100644 index 8b8d098..0000000 --- a/test/w3c/prolog/test309.scxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an expression that cannot be interpreted as a boolean is treated as false --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0"> - <transition cond="return" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test310.scxml b/test/w3c/prolog/test310.scxml deleted file mode 100644 index cee088b..0000000 --- a/test/w3c/prolog/test310.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test of the in() predicate --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="p"> - <parallel id="p"> - <state id="s0"> - <transition cond="In('s1')" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"/> - </parallel> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test311.scxml b/test/w3c/prolog/test311.scxml deleted file mode 100644 index 03fd93b..0000000 --- a/test/w3c/prolog/test311.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment to a non-existent location yields an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test312.scxml b/test/w3c/prolog/test312.scxml deleted file mode 100644 index 8af1252..0000000 --- a/test/w3c/prolog/test312.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment with an illegal expr raises an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test313.scxml b/test/w3c/prolog/test313.scxml deleted file mode 100644 index 1a6b25c..0000000 --- a/test/w3c/prolog/test313.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test. The processor is allowed to reject this doc, but if it executes it with its illegal -expression, it must raise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test314.scxml b/test/w3c/prolog/test314.scxml deleted file mode 100644 index 486199a..0000000 --- a/test/w3c/prolog/test314.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test because the processor is allowed to reject this document. But if it executes it, -it should not raise an error until it gets to s03 and evaluates the illegal expr --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="error.execution" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <state id="s02"> - <transition target="s03"/> - </state> - <state id="s03"> - <onentry> - <assign location="var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test318.scxml b/test/w3c/prolog/test318.scxml deleted file mode 100644 index 4b1cc5c..0000000 --- a/test/w3c/prolog/test318.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event stays bound during the onexit and entry into the next state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="bar"/> - <!-- _event should still be bound to 'foo' at this point --> - <assign location="var1" expr="_event.name"/> - </onentry> - <transition cond="var1=='foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test319.scxml b/test/w3c/prolog/test319.scxml deleted file mode 100644 index f6649d9..0000000 --- a/test/w3c/prolog/test319.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event is not bound before any event has been raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <if cond="_event"> - <raise event="bound"/> - <else/> - <raise event="unbound"/> - </if> - </onentry> - <transition event="unbound" target="pass"/> - <transition event="bound" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test321.scxml b/test/w3c/prolog/test321.scxml deleted file mode 100644 index 6b36518..0000000 --- a/test/w3c/prolog/test321.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <datamodel> - <data id="var1" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition cond="true" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test322.scxml b/test/w3c/prolog/test322.scxml deleted file mode 100644 index cbb2970..0000000 --- a/test/w3c/prolog/test322.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid remains bound to the same value throught the session. this means that it can't -be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <datamodel> - <data id="var1" expr="_sessionid"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <assign location="_sessionid" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition cond="var1==_sessionid" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test323.scxml b/test/w3c/prolog/test323.scxml deleted file mode 100644 index 3976bec..0000000 --- a/test/w3c/prolog/test323.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <datamodel> - <data id="var1" expr="_name"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition cond="true" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test324.scxml b/test/w3c/prolog/test324.scxml deleted file mode 100644 index 67231ef..0000000 --- a/test/w3c/prolog/test324.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <state id="s0"> - <transition cond="_name === 'machineName'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_name" expr="'otherName'"/> - </onentry> - <transition cond="_name === 'machineName'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test325.scxml b/test/w3c/prolog/test325.scxml deleted file mode 100644 index 9be15e3..0000000 --- a/test/w3c/prolog/test325.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or -how to test that the entries in it do represent I/O processors, since the set that each implementation -supports may be different. Suggestions welcome --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <datamodel> - <data id="var1" expr="_ioprocessors"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test326.scxml b/test/w3c/prolog/test326.scxml deleted file mode 100644 index 2938eff..0000000 --- a/test/w3c/prolog/test326.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <datamodel> - <data id="var1" expr="_ioprocessors"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="s1"/> - <transition cond="true" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_ioprocessors" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="var2" expr="_ioprocessors"/> - </onentry> - <transition cond="var1==Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test329.scxml b/test/w3c/prolog/test329.scxml deleted file mode 100644 index 5e8f502..0000000 --- a/test/w3c/prolog/test329.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that none of the system variables can be modified --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - <data id="var3"/> - <data id="var4"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- get _event bound so we can use it in s1--> - <raise event="foo"/> - <assign location="var1" expr="_sessionid"/> - <assign location="_sessionid" expr="27"/> - </onentry> - <transition event="foo" cond="var1==_sessionid" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="var2" expr="_event"/> - <assign location="_event" expr="27"/> - </onentry> - <transition cond="var2==_event" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="var3" expr="_name"/> - <assign location="_name" expr="27"/> - </onentry> - <transition cond="var3==_name" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="var4" expr="_ioprocessors"/> - <assign location="_ioprocessors" expr="27"/> - </onentry> - <transition cond="var4==_ioprocessors" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test330.scxml b/test/w3c/prolog/test330.scxml deleted file mode 100644 index 0d6c81e..0000000 --- a/test/w3c/prolog/test330.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- check that the required fields are present in both internal and external events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'invokeid' && 'data' in _event" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="'name' in _event && 'type' in _event && 'sendid' in _event && 'origin' in _event && 'invokeid' && 'data' in _event" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test331.scxml b/test/w3c/prolog/test331.scxml deleted file mode 100644 index 3686d7d..0000000 --- a/test/w3c/prolog/test331.scxml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0" name="machineName"> - <!-- test that _event.type is set correctly for internal, platform, and external events --> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- internal event --> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="var1=='internal'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <!-- this will generate an error, which is a platform event --> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error" target="s3"> - <assign location="var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="var1=='platform'" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <onentry> - <!-- external event --> - <send event="foo"/> - </onentry> - <transition event="foo" target="s5"> - <assign location="var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s5"> - <transition cond="var1=='external'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test332.scxml b/test/w3c/prolog/test332.scxml deleted file mode 100644 index c353cb9..0000000 --- a/test/w3c/prolog/test332.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is present in error events triggered by send errors --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="prolog" name="machineName"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- this will raise an error and also store the sendid in var1 --> - <send target="baz" event="foo" idlocation="var1"/> - </onentry> - <transition event="error" target="s1"> - <!-- get the sendid out of the error event --> - <assign location="var2" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- make sure that the sendid in the error event matches the one generated when send executed --> - <transition cond="var1===Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test333.scxml b/test/w3c/prolog/test333.scxml deleted file mode 100644 index 3d74685..0000000 --- a/test/w3c/prolog/test333.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- make sure sendid is blank in a non-error event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="prolog" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="typeof _event.sendid === 'undefined' " target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test335.scxml b/test/w3c/prolog/test335.scxml deleted file mode 100644 index 9abb44d..0000000 --- a/test/w3c/prolog/test335.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origin field is blank for internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="prolog" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="typeof _event.origin === 'undefined' " target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test336.scxml b/test/w3c/prolog/test336.scxml deleted file mode 100644 index ad825bd..0000000 --- a/test/w3c/prolog/test336.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In -this case it's the same session, so if we get bar we succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <send event="bar" targetexpr="_event.origin" typeexpr="_event.origintype"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="baz"/> - </onentry> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test337.scxml b/test/w3c/prolog/test337.scxml deleted file mode 100644 index ee119e4..0000000 --- a/test/w3c/prolog/test337.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origintype is blank on internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="typeof _event.origintype === 'undefined' " target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test338.scxml b/test/w3c/prolog/test338.scxml deleted file mode 100644 index 3114c72..0000000 --- a/test/w3c/prolog/test338.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the -case where the invoke doesn't work correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke idlocation="var1" type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog" name="machineName"> - <final id="sub0"> - <onentry> - <send target="#_parent" event="event1"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="event1" target="s1"> - <assign location="var2" expr="_event.invokeid"/> - </transition> - <transition event="event0" target="fail"/> - </state> - <state id="s1"> - <transition cond="var1===Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test339.scxml b/test/w3c/prolog/test339.scxml deleted file mode 100644 index 549290c..0000000 --- a/test/w3c/prolog/test339.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="typeof _event.invokeid === 'undefined' " target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test342.scxml b/test/w3c/prolog/test342.scxml deleted file mode 100644 index 4d1e7ff..0000000 --- a/test/w3c/prolog/test342.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventexpr works and sets the name field of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <datamodel> - <data id="var1" expr="'foo'"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send eventexpr="var1"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="var2" expr="_event.name"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="var1===Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test343.scxml b/test/w3c/prolog/test343.scxml deleted file mode 100644 index ca0e0db..0000000 --- a/test/w3c/prolog/test343.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param location="foo.bar.baz " name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test344.scxml b/test/w3c/prolog/test344.scxml deleted file mode 100644 index 80a5b31..0000000 --- a/test/w3c/prolog/test344.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a cond expression that cannot be evaluated as a -boolean cond expression evaluates to false and causes error.execution to be raised. -In some languages, any valid expression/object can be converted to a boolean, so conf:nonBoolean will -have to be mapped onto something that produces a syntax error or something similarly invalid --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0"> - <transition cond="return" target="fail"/> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test346.scxml b/test/w3c/prolog/test346.scxml deleted file mode 100644 index 8db600c..0000000 --- a/test/w3c/prolog/test346.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any attempt to change the value of a system variable causes error.execution to be raised. -Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have -to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" name="machineName"> - <state id="s0"> - <onentry> - <assign location="_sessionid" expr="'otherName'"/> - <raise event="event1"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_event" expr="'otherName'"/> - <raise event="event2"/> - </onentry> - <!-- throw out event1 if it's still around --> - <transition event="event1"/> - <transition event="error.execution" target="s2"/> - <!-- event1 would trigger this transition if we didn't drop it. We want this transition to have - a very general trigger to catch cases where the wrong error event was raised --> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="_ioprocessors" expr="'otherName'"/> - <raise event="event3"/> - </onentry> - <transition event="event2"/> - <transition event="error.execution" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="_name" expr="'otherName'"/> - <raise event="event4"/> - </onentry> - <transition event="event3"/> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test347.scxml b/test/w3c/prolog/test347.scxml deleted file mode 100644 index 2f6c513..0000000 --- a/test/w3c/prolog/test347.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event I/O processor works by sending events back and forth between an invoked child -and its parent process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0" initial="s01"> - <invoke id="child" type="scxml"> - <content> - <scxml initial="sub0" version="1.0" datamodel="prolog" name="machineName"> - <state id="sub0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_parent" event="childToParent"/> - </onentry> - <transition event="parentToChild" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <onentry> - <send delay="20s" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"/> - </state> - <state id="s02"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_child" event="parentToChild"/> - </onentry> - <transition event="done.invoke" target="pass"/> - <transition event="error" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test348.scxml b/test/w3c/prolog/test348.scxml deleted file mode 100644 index 7f9692a..0000000 --- a/test/w3c/prolog/test348.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <!-- test that event param of send sets the name of the event --> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test349.scxml b/test/w3c/prolog/test349.scxml deleted file mode 100644 index 88a01d3..0000000 --- a/test/w3c/prolog/test349.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that value in origin field can be used to send an event back to the sender --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s2"> - <assign location="var1" expr="_event.origin"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="var1" event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test350.scxml b/test/w3c/prolog/test350.scxml deleted file mode 100644 index b94aac0..0000000 --- a/test/w3c/prolog/test350.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that target value is used to decide what session to deliver the event to. A session should be -able to send an event to itself using its own session ID as the target --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="'#_scxml_'"/> - <data id="var2" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="var1 + Var2"/> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="var1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test351.scxml b/test/w3c/prolog/test351.scxml deleted file mode 100644 index 9ff43ba..0000000 --- a/test/w3c/prolog/test351.scxml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is set in event if present in send, blank otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" id="send1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="var1" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="var1=='send1'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="s3"> - <assign location="var2" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="!Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test352.scxml b/test/w3c/prolog/test352.scxml deleted file mode 100644 index 47f76c5..0000000 --- a/test/w3c/prolog/test352.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test the origintype is 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor' --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="var1" expr="_event.origintype"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test354.scxml b/test/w3c/prolog/test354.scxml deleted file mode 100644 index aa30cbf..0000000 --- a/test/w3c/prolog/test354.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that event.data can be populated using both namelist, param and <content> -and that correct values are used --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - <data id="var2"/> - <data id="var3"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="var1"> - <param name="param1" expr="2"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="var2" expr="_event.data.Var1"/> - <assign location="var3" expr="_event.data.param1"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="X = 1, var2(X)" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <transition cond="X = 2, var3(X)" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="event2"> - <content>123</content> - </send> - </onentry> - <transition event="event2" cond="_event.data == 123" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test355.scxml b/test/w3c/prolog/test355.scxml deleted file mode 100644 index effca22..0000000 --- a/test/w3c/prolog/test355.scxml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <state id="s0"> - <transition target="pass"/> - </state> - <state id="s1"> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test364.scxml b/test/w3c/prolog/test364.scxml deleted file mode 100644 index b98eebc..0000000 --- a/test/w3c/prolog/test364.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial states are entered when a compound state is entered. First we test -the 'initial' attribute, then the initial element, then default to the first child in document order. -If we get to s01111 we succeed, if any other state, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" initial="s1" version="1.0"> - <state id="s1" initial="s11p112 s11p122"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="s2"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s2"> - <initial> - <transition target="s21p112 s21p122"/> - </initial> - <transition event="timeout" target="fail"/> - <state id="s21" initial="s211"> - <state id="s211"/> - <parallel id="s21p1"> - <state id="s21p11" initial="s21p111"> - <state id="s21p111"/> - <state id="s21p112"> - <onentry> - <raise event="In-s21p112"/> - </onentry> - </state> - </state> - <state id="s21p12" initial="s21p121"> - <state id="s21p121"/> - <state id="s21p122"> - <transition event="In-s21p112" target="s3"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s3"> - <transition target="fail"/> - <state id="s31"> - <state id="s311"> - <state id="s3111"> - <transition target="pass"/> - </state> - <state id="s3112"/> - <state id="s312"/> - <state id="s32"/> - </state> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test372.scxml b/test/w3c/prolog/test372.scxml deleted file mode 100644 index cd6cac2..0000000 --- a/test/w3c/prolog/test372.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that entering a final state generates done.state.parentid after executing the onentry elements. -Var1 should be set to 2 (but not 3) by the time the event is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0" initial="s0final"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="done.state.s0" cond="X = 2, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - <final id="s0final"> - <onentry> - <assign location="var1" expr="2"/> - </onentry> - <onexit> - <assign location="var1" expr="3"/> - </onexit> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test375.scxml b/test/w3c/prolog/test375.scxml deleted file mode 100644 index 21db985..0000000 --- a/test/w3c/prolog/test375.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <raise event="event1"/> - </onentry> - <onentry> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test376.scxml b/test/w3c/prolog/test376.scxml deleted file mode 100644 index 9722c3c..0000000 --- a/test/w3c/prolog/test376.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send target="baz" event="event1"/> - </onentry> - <onentry> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onentry> - <transition cond="X = 2, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test377.scxml b/test/w3c/prolog/test377.scxml deleted file mode 100644 index 503147e..0000000 --- a/test/w3c/prolog/test377.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <state id="s0"> - <onexit> - <raise event="event1"/> - </onexit> - <onexit> - <raise event="event2"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test378.scxml b/test/w3c/prolog/test378.scxml deleted file mode 100644 index b8fdc59..0000000 --- a/test/w3c/prolog/test378.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onexit> - <send target="baz" event="event1"/> - </onexit> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="X = 2, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test387.scxml b/test/w3c/prolog/test387.scxml deleted file mode 100644 index 96c6646..0000000 --- a/test/w3c/prolog/test387.scxml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default -shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we -transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s3" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <transition event="enteringS011" target="s4"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s01"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="enteringS011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="enteringS012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="enteringS021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="enteringS022"/> - </onentry> - </state> - </state> - </state> - <state id="s1" initial="s11"> - <transition event="enteringS122" target="pass"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s1HistShallow"> - <transition target="s11"/> - </history> - <history type="deep" id="s1HistDeep"> - <transition target="s122"/> - </history> - <state id="s11" initial="s111"> - <state id="s111"> - <onentry> - <raise event="enteringS111"/> - </onentry> - </state> - <state id="s112"> - <onentry> - <raise event="enteringS112"/> - </onentry> - </state> - </state> - <state id="s12" initial="s121"> - <state id="s121"> - <onentry> - <raise event="enteringS121"/> - </onentry> - </state> - <state id="s122"> - <onentry> - <raise event="enteringS122"/> - </onentry> - </state> - </state> - </state> - <state id="s3"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition target="s0HistShallow"/> - </state> - <state id="s4"> - <transition target="s1HistDeep"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test388.scxml b/test/w3c/prolog/test388.scxml deleted file mode 100644 index 537ccd6..0000000 --- a/test/w3c/prolog/test388.scxml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that history states works correctly. The counter Var1 counts how many times -we have entered s0. The initial state is s012. We then transition to s1, which transitions -to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition -to s02, which transitions to s0's shallow history state. That should have value s01, and its initial -state is s011, so we should get entering.s011, otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s012" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onentry> - <!-- the first time through, go to s1, setting a timer just in case something hangs --> - <transition event="entering.s012" cond="X = 1, var1(X)" target="s1"> - <send event="timeout" delay="2s"/> - </transition> - <!-- the second time, we should get entering.s012. If so, go to s2, otherwise fail --> - <transition event="entering.s012" cond="X = 2, var1(X)" target="s2"/> - <transition event="entering" cond="X = 2, var1(X)" target="fail"/> - <!-- the third time we should get entering-s011. If so, pass, otherwise fail --> - <transition event="entering.s011" cond="X = 3, var1(X)" target="pass"/> - <transition event="entering" cond="X = 3, var1(X)" target="fail"/> - <!-- if we timeout, the state machine is hung somewhere, so fail --> - <transition event="timeout" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s02"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="entering.s011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="entering.s012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="entering.s021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="entering.s022"/> - </onentry> - </state> - </state> - </state> - <state id="s1"> - <transition target="s0HistDeep"/> - </state> - <state id="s2"> - <transition target="s0HistShallow"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test396.scxml b/test/w3c/prolog/test396.scxml deleted file mode 100644 index 2bf5f17..0000000 --- a/test/w3c/prolog/test396.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the value in _event.name matches the event name used to match against transitions --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="_event.name == 'foo'" target="pass"/> - <transition event="foo" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test399.scxml b/test/w3c/prolog/test399.scxml deleted file mode 100644 index 3401a23..0000000 --- a/test/w3c/prolog/test399.scxml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the event name matching works correctly, including prefix matching and the fact -that the event attribute of transition may contain multiple event designators. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <!-- this will catch the failure case --> - <transition event="timeout" target="fail"/> - <state id="s01"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that an event can match against a transition with multiple descriptors --> - <transition event="foo bar" target="s02"/> - </state> - <state id="s02"> - <onentry> - <raise event="bar"/> - </onentry> - <!-- test that an event can match the second descriptor as well --> - <transition event="foo bar" target="s03"/> - </state> - <state id="s03"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that a prefix descriptor matches --> - <transition event="foo bar" target="s04"/> - </state> - <state id="s04"> - <onentry> - <raise event="foos"/> - </onentry> - <!-- test that only token prefixes match --> - <transition event="foo" target="fail"/> - <transition event="foos" target="s05"/> - </state> - <state id="s05"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that .* works at the end of a descriptor --> - <transition event="foo.*" target="s06"/> - </state> - <state id="s06"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that "*" works by itself --> - <transition event="*" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test401.scxml b/test/w3c/prolog/test401.scxml deleted file mode 100644 index 69628da..0000000 --- a/test/w3c/prolog/test401.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform -and operation that raises an error. Then check that the error event is processed first, even though -it was raised second --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="foo"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="foo" target="fail"/> - <transition event="error" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test402.scxml b/test/w3c/prolog/test402.scxml deleted file mode 100644 index 26dac89..0000000 --- a/test/w3c/prolog/test402.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they -are pulled off the internal queue in order, and that prefix matching works on them. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <!-- catch the failure case --> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <onentry> - <!-- the first internal event. The error will be the second, and event2 will be the third --> - <raise event="event1"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="event1" target="s02"> - <raise event="event2"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="error" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test403a.scxml b/test/w3c/prolog/test403a.scxml deleted file mode 100644 index 67bb1e3..0000000 --- a/test/w3c/prolog/test403a.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?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="prolog"> - <state id="s0" initial="s01"> - <onentry> - <!-- catch the failure case --> - <send event="timeout" delay="1s"/> - </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 id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test403b.scxml b/test/w3c/prolog/test403b.scxml deleted file mode 100644 index daa7c91..0000000 --- a/test/w3c/prolog/test403b.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that 'optimally enabled set' really is a set, specifically that if a transition is optimally enabled in -two different states, it is taken only once. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <!-- this transition should never be taken because a transition in a lower state should - always be selected --> - <transition event="event1"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <parallel id="p0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <!-- this transition will be selected by both states p0s1 and p0s2, but should be executed only once --> - <transition event="event1"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <state id="p0s1"> - <transition event="event2" cond="X = 1, var1(X)" target="pass"/> - <transition event="event2" target="fail"/> - </state> - <state id="p0s2"/> - </parallel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test403c.scxml b/test/w3c/prolog/test403c.scxml deleted file mode 100644 index cf16c68..0000000 --- a/test/w3c/prolog/test403c.scxml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test 'optimally enabled set', specifically that preemption works correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <onentry> - <raise event="event1"/> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="event2" target="fail"/> - <transition event="timeout" target="fail"/> - <parallel id="p0"> - <state id="p0s1"> - <transition event="event1"/> - <transition event="event2"/> - </state> - <state id="p0s2"> - <transition event="event1" target="p0s1"> - <raise event="event2"/> - </transition> - </state> - <state id="p0s3"> - <!-- this transition should be blocked by the one in p0s2--> - <transition event="event1" target="fail"/> - <!-- this transition will preempt the one that p0s2 inherits - from an ancestor --> - <transition event="event2" target="s1"/> - </state> - <state id="p0s4"> - <!-- this transition never gets preempted, should fire twice --> - <transition event="*"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </transition> - </state> - </parallel> - </state> - <state id="s1"> - <transition cond="X = 2, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test404.scxml b/test/w3c/prolog/test404.scxml deleted file mode 100644 index d8c7ac8..0000000 --- a/test/w3c/prolog/test404.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties - before the executable content in the transitions. event1, event2, event3, event4 should be raised in that - order when s01p is exited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01p"> - <parallel id="s01p"> - <onexit> - <!-- this should be the 3rd event raised --> - <raise event="event3"/> - </onexit> - <transition target="s02"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - <state id="s01p1"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - </state> - <state id="s01p2"> - <!-- this should be the first event raised --> - <onexit> - <raise event="event1"/> - </onexit> - </state> - </parallel> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test405.scxml b/test/w3c/prolog/test405.scxml deleted file mode 100644 index 0f817fa..0000000 --- a/test/w3c/prolog/test405.scxml +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the executable content in the transitions is executed in document order after -the states are exited. event1, event2, event3, event4 should be raised in that order when the -state machine is entered --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01p"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s01p"> - <transition event="event1" target="s02"/> - <state id="s01p1" initial="s01p11"> - <state id="s01p11"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - <transition target="s01p12"> - <!-- this should be the third event raised --> - <raise event="event3"/> - </transition> - </state> - <state id="s01p12"/> - </state> - <!-- end s01p1 --> - <state id="s01p2" initial="s01p21"> - <state id="s01p21"> - <onexit> - <!-- this should be the first event raised --> - <raise event="event1"/> - </onexit> - <transition target="s01p22"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - </state> - <state id="s01p22"/> - </state> - <!-- end s01p2 --> - </parallel> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event3" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s01 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test406.scxml b/test/w3c/prolog/test406.scxml deleted file mode 100644 index 528918a..0000000 --- a/test/w3c/prolog/test406.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that states are entered in entry order (parents before children with document order used to break ties) -after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that -order when the transition in s01 is taken --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition target="s0p2"> - <!-- this should be the first event raised --> - <raise event="event1"/> - </transition> - </state> - <parallel id="s0p2"> - <transition event="event1" target="s03"/> - <state id="s01p21"> - <onentry> - <!-- third event --> - <raise event="event3"/> - </onentry> - </state> - <state id="s01p22"> - <onentry> - <!-- the fourth event --> - <raise event="event4"/> - </onentry> - </state> - <onentry> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onentry> - </parallel> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test407.scxml b/test/w3c/prolog/test407.scxml deleted file mode 100644 index f7c4d6a..0000000 --- a/test/w3c/prolog/test407.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that onexit handlers work. var1 should be incremented when we leave s0 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s0"> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test409.scxml b/test/w3c/prolog/test409.scxml deleted file mode 100644 index 1719da1..0000000 --- a/test/w3c/prolog/test409.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are removed from the active states list as they are exited. When s01's onexit handler -fires, s011 should not be on the active state list, so in(S011) should be false, and event1 should not -be raised. Therefore the timeout should fire to indicate success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delayexpr="'1s'"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - <state id="s01" initial="s011"> - <onexit> - <if cond="In('s011')"> - <raise event="event1"/> - </if> - </onexit> - <state id="s011"> - <transition target="s02"/> - </state> - </state> - <!-- end s01 --> - <state id="s02"/> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test411.scxml b/test/w3c/prolog/test411.scxml deleted file mode 100644 index 6ac8523..0000000 --- a/test/w3c/prolog/test411.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are added to the active states list as they are entered and before onentry handlers -are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler -fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or -timeout also indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - <if cond="In('s01')"> - <raise event="event1"/> - </if> - </onentry> - <transition event="timeout" target="fail"/> - <transition event="event1" target="fail"/> - <transition event="event2" target="pass"/> - <state id="s01"> - <onentry> - <if cond="In('s01')"> - <raise event="event2"/> - </if> - </onentry> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test412.scxml b/test/w3c/prolog/test412.scxml deleted file mode 100644 index fad7a3e..0000000 --- a/test/w3c/prolog/test412.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content in the <initial> transition executes after the onentry handler on the state -and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <transition event="event1" target="fail"/> - <transition event="event2" target="pass"/> - <state id="s01"> - <onentry> - <raise event="event1"/> - </onentry> - <initial> - <transition target="s011"> - <raise event="event2"/> - </transition> - </initial> - <state id="s011"> - <onentry> - <raise event="event3"/> - </onentry> - <transition target="s02"/> - </state> - </state> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test413.scxml b/test/w3c/prolog/test413.scxml deleted file mode 100644 index a9afc67..0000000 --- a/test/w3c/prolog/test413.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the state machine is put into the configuration specified by the initial element, without regard -to any other defaults. we should start off in s2p111 and s2p122. the atomic -states we should not enter all have immediate transitions to failure in them --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s2p112 s2p122" version="1.0" datamodel="prolog"> - <state id="s1"> - <transition target="fail"/> - </state> - <state id="s2" initial="s2p1"> - <parallel id="s2p1"> - <!-- this transition will be triggered only if we end up in an illegal configuration where we're in - either s2p112 or s2p122, but not both of them --> - <transition target="fail"/> - <state id="s2p11" initial="s2p111"> - <state id="s2p111"> - <transition target="fail"/> - </state> - <state id="s2p112"> - <transition cond="In('s2p122')" target="pass"/> - </state> - </state> - <!-- end s2p11 --> - <state id="s2p12" initial="s2p121"> - <state id="s2p121"> - <transition target="fail"/> - </state> - <state id="s2p122"> - <transition cond="In('s2p112')" target="pass"/> - </state> - </state> - </parallel> - </state> - <!-- end s2 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test416.scxml b/test/w3c/prolog/test416.scxml deleted file mode 100644 index 54a3d83..0000000 --- a/test/w3c/prolog/test416.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the done.state.id gets generated when we enter the final state of a compound state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="prolog"> - <state id="s1" initial="s11"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <transition event="done.state.s11" target="pass"/> - <state id="s111"> - <transition target="s11final"/> - </state> - <final id="s11final"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test417.scxml b/test/w3c/prolog/test417.scxml deleted file mode 100644 index 8c9cb96..0000000 --- a/test/w3c/prolog/test417.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get the done.state.id event when all of a -parallel elements children enter final states. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="prolog"> - <state id="s1" initial="s1p1"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s1p1"> - <transition event="done.state.s1p1" target="pass"/> - <state id="s1p11" initial="s1p111"> - <state id="s1p111"> - <transition target="s1p11final"/> - </state> - <final id="s1p11final"/> - </state> - <state id="s1p12" initial="s1p121"> - <state id="s1p121"> - <transition target="s1p12final"/> - </state> - <final id="s1p12final"/> - </state> - </parallel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test419.scxml b/test/w3c/prolog/test419.scxml deleted file mode 100644 index 6f159f7..0000000 --- a/test/w3c/prolog/test419.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventless transitions take precedence over event-driven ones --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="prolog"> - <state id="s1"> - <onentry> - <raise event="internalEvent"/> - <send event="externalEvent"/> - </onentry> - <transition event="*" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test421.scxml b/test/w3c/prolog/test421.scxml deleted file mode 100644 index 8a83601..0000000 --- a/test/w3c/prolog/test421.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that internal events take priority over external ones, and that the processor -keeps pulling off internal events until it finds one that triggers a transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="prolog"> - <state id="s1" initial="s11"> - <onentry> - <send event="externalEvent"/> - <raise event="internalEvent1"/> - <raise event="internalEvent2"/> - <raise event="internalEvent3"/> - <raise event="internalEvent4"/> - </onentry> - <transition event="externalEvent" target="fail"/> - <state id="s11"> - <transition event="internalEvent3" target="s12"/> - </state> - <state id="s12"> - <transition event="internalEvent4" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test422.scxml b/test/w3c/prolog/test422.scxml deleted file mode 100644 index 4480698..0000000 --- a/test/w3c/prolog/test422.scxml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that at the end of a macrostep, the processor executes all invokes in states -that have been entered and not exited during the step. (The invokes are supposed to be executed -in document order, but we can test that since each invocation is separate and they may take -different amounts to time to start up.) In this case, there are three invoke statements, -in states s1, s11 and s12. Each invoked process returns an event named after its parent state. -The invokes in s1 and s12 should execute, but not the one -in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermore, when the timeout fires, var1 should equal 2.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <state id="s1" initial="s11"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <transition event="invokeS1 invokeS12"> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <transition event="invokeS11" target="fail"/> - <transition event="timeout" cond="X = 2, var1(X)" target="pass"/> - <transition event="timeout" target="fail"/> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub0" version="1.0" datamodel="prolog"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="invokeS1"/> - </onentry> - <transition target="subFinal0"/> - </state> - <final id="subFinal0"/> - </scxml> - </content> - </invoke> - <state id="s11"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub1" version="1.0" datamodel="prolog"> - <state id="sub1"> - <onentry> - <send target="#_parent" event="invokeS11"/> - </onentry> - <transition target="subFinal1"/> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition target="s12"/> - </state> - <state id="s12"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub2" version="1.0" datamodel="prolog"> - <state id="sub2"> - <onentry> - <send target="#_parent" event="invokeS12"/> - </onentry> - <transition target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test423.scxml b/test/w3c/prolog/test423.scxml deleted file mode 100644 index 1a110d6..0000000 --- a/test/w3c/prolog/test423.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="externalEvent1"/> - <send event="externalEvent2" delayexpr="'1s'"/> - <raise event="internalEvent"/> - </onentry> - <!-- in this state we should process only internalEvent --> - <transition event="internalEvent" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- in this state we ignore externalEvent1 and wait for externalEvent2 --> - <transition event="externalEvent2" target="pass"/> - <transition event="internalEvent" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test446.txt b/test/w3c/prolog/test446.txt deleted file mode 100644 index 3a26a2e..0000000 --- a/test/w3c/prolog/test446.txt +++ /dev/null @@ -1 +0,0 @@ -[1,2,3]
\ No newline at end of file diff --git a/test/w3c/prolog/test487.scxml b/test/w3c/prolog/test487.scxml deleted file mode 100644 index b9d1f60..0000000 --- a/test/w3c/prolog/test487.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test illegal assignment. error.execution should be raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1" expr="return"/> - <raise event="event"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test488.scxml b/test/w3c/prolog/test488.scxml deleted file mode 100644 index 22e7714..0000000 --- a/test/w3c/prolog/test488.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal expr in <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param expr="return" name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test495.scxml b/test/w3c/prolog/test495.scxml deleted file mode 100644 index 230f747..0000000 --- a/test/w3c/prolog/test495.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event i/o processor puts events in the correct queues.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <!-- default target is external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="event2" target="#_internal" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - </onentry> - <!-- we should get the internal event first --> - <transition event="event1" target="fail"/> - <transition event="event2" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test496.scxml b/test/w3c/prolog/test496.scxml deleted file mode 100644 index 52acced..0000000 --- a/test/w3c/prolog/test496.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event" target="#_scxml_foo"/> - <raise event="foo"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test500.scxml b/test/w3c/prolog/test500.scxml deleted file mode 100644 index 16f5209..0000000 --- a/test/w3c/prolog/test500.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field is found inside entry for SCXML Event I/O processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test501.scxml b/test/w3c/prolog/test501.scxml deleted file mode 100644 index 28b8ffe..0000000 --- a/test/w3c/prolog/test501.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="_ioprocessors['http://www.w3.org/TR/scxml/#SCXMLEventProcessor'].location"/> - </datamodel> - <state id="s0"> - <onentry> - <send targetexpr="var1" event="foo"/> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="foo" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test503.scxml b/test/w3c/prolog/test503.scxml deleted file mode 100644 index 67d463f..0000000 --- a/test/w3c/prolog/test503.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a targetless transition does not exit and reenter its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- how often we have exited s2 --> - <data id="var2" expr="0"/> - <!-- how often the targetless transition in s2 has been executed --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2"> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition event="foo"> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="X = 1, var2(X)" target="s3"/> - <transition event="bar" target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s2 was exited only once --> - <transition cond="X = 1, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test504.scxml b/test/w3c/prolog/test504.scxml deleted file mode 100644 index 9ef3704..0000000 --- a/test/w3c/prolog/test504.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an external transition exits all states up the the LCCA --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- how often we have exited p --> - <data id="var2" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="var3" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="var4" expr="0"/> - <!-- how often the transition for foo has been taken --> - <data id="var5" expr="0"/> - <!-- how often we have exited s2 --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <state id="s2"> - <onexit> - <assign location="var5(Y)" expr="var5(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <parallel id="p"> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition event="foo" target="ps1"> - <assign location="var4(Y)" expr="var4(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="X = 1, var4(X)" target="s3"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign location="var3(Y)" expr="var3(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - </parallel> - </state> - <state id="s3"> - <!-- make sure that p was exited twice --> - <transition cond="X = 2, var1(X)" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps1 was exited twice --> - <transition cond="X = 2, var2(X)" target="s5"/> - <transition target="fail"/> - </state> - <state id="s5"> - <!-- make sure that ps2 was exited twice --> - <transition cond="X = 2, var3(X)" target="s6"/> - <transition target="fail"/> - </state> - <state id="s6"> - <!-- make sure that s1 was exited once --> - <transition cond="X = 1, var5(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test505.scxml b/test/w3c/prolog/test505.scxml deleted file mode 100644 index bfcb9fb..0000000 --- a/test/w3c/prolog/test505.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition does not exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- how often we have exited s1 --> - <data id="var2" expr="0"/> - <!-- how often we have exited s11 --> - <data id="var3" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition event="foo" type="internal" target="s11"> - <assign location="var3(Y)" expr="var3(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="X = 1, var3(X)" target="s2"/> - <transition event="bar" target="fail"/> - <state id="s11"> - <onexit> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - </state> - <state id="s2"> - <!-- make sure that s1 was exited once --> - <transition cond="X = 1, var1(X)" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s11 was exited twice --> - <transition cond="X = 2, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test506.scxml b/test/w3c/prolog/test506.scxml deleted file mode 100644 index 2cd176f..0000000 --- a/test/w3c/prolog/test506.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose targets are not proper descendants of its source state -behaves like an external transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- how often we have exited s2 --> - <data id="var2" expr="0"/> - <!-- how often we have exited s21 --> - <data id="var3" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2" initial="s21"> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition event="foo" type="internal" target="s2"> - <assign location="var3(Y)" expr="var3(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="X = 1, var3(X)" target="s3"/> - <transition event="bar" target="fail"/> - <state id="s21"> - <onexit> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - </state> - <state id="s3"> - <!-- make sure that s2 was exited twice --> - <transition cond="X = 2, var1(X)" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that s21 was exited twice --> - <transition cond="X = 2, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test509.scxml b/test/w3c/prolog/test509.scxml deleted file mode 100644 index d5ac65a..0000000 --- a/test/w3c/prolog/test509.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages -at the accessURI --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <!-- if the event was send by http and we get it, we succeed --> - <transition event="test" cond="_event.raw.search('POST') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test510.scxml b/test/w3c/prolog/test510.scxml deleted file mode 100644 index 07a91e9..0000000 --- a/test/w3c/prolog/test510.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP messages go into external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - <!-- this creates an internal event --> - <raise event="internal"/> - </onentry> - <!-- we should get 'internal' first, then 'test' --> - <transition event="internal" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test513.txt b/test/w3c/prolog/test513.txt deleted file mode 100644 index 08e9b01..0000000 --- a/test/w3c/prolog/test513.txt +++ /dev/null @@ -1,16 +0,0 @@ -This is a fully manual test. You send a well formed event to the 'location' URL - specified for your SCXML interpreter and check that you get a 200 response code back. - One way of doing this, using wget, is shown below (you can use any event name you - want, but you must use '_scxmleventname' to indicate the name of the event): - -$ wget \ ---post-data='key1=value1&key2=value2' \ ---header '_scxmleventname: test' \ -<!-- URL of your processor goes here --> - ---2014-06-25 17:54:49-- http://epikur.local:8090/925c760f-2093-4054-a24c-d972d75f0dcd/basichttp -Resolving epikur.local (epikur.local)... 10.211.55.2, 10.37.129.2, 10.0.1.54, ... -Connecting to epikur.local (epikur.local)|10.211.55.2|:8090... connected. -HTTP request sent, awaiting response... 200 OK -Length: 0 [text/html] -Saving to: ‘basichttp’
\ No newline at end of file diff --git a/test/w3c/prolog/test518.scxml b/test/w3c/prolog/test518.scxml deleted file mode 100644 index 94cb6e7..0000000 --- a/test/w3c/prolog/test518.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that namelist values get encoded as POST parameters. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" namelist="var1" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="test" cond="_event.raw.search(/Var1=2/) !== -1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test519.scxml b/test/w3c/prolog/test519.scxml deleted file mode 100644 index 11053b5..0000000 --- a/test/w3c/prolog/test519.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <param> values get encoded as POST parameters. . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="param1" expr="1"/> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.raw.search('param1=1') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test520.scxml b/test/w3c/prolog/test520.scxml deleted file mode 100644 index f0fff26..0000000 --- a/test/w3c/prolog/test520.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <content> gets sent as the body of the message. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <content>this is some content</content> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed. Test for two common - ways of encoding --> - <transition event="HTTP.POST" cond="_event.raw.search(/this+is+some+content/) !== -1" target="pass"/> - <transition event="HTTP.POST" cond="_event.raw.search(/this%20is%20some%20content/) !== -1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test521.scxml b/test/w3c/prolog/test521.scxml deleted file mode 100644 index 3cf09ce..0000000 --- a/test/w3c/prolog/test521.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor raises error.communication if it cannot dispatch the event. -(To create an undispatchable event, we choose a non-existent session as target). If it raises -the error event, we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <!-- should cause an error --> - <send target="#_scxml_foo" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test522.scxml b/test/w3c/prolog/test522.scxml deleted file mode 100644 index 8a24fe7..0000000 --- a/test/w3c/prolog/test522.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field the entry for Basic HTTP Event I/O processor can be used -to send a message to the processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors['basichttp']['location']"/> - </onentry> - <!-- the event we receive should be called 'test', but that's not actually - required for this test. Only that the send deliver some event to us. So if - we get something other than timeout or error, we call it success --> - <transition event="timeout" target="fail"/> - <transition event="error" target="fail"/> - <transition event="*" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test525.scxml b/test/w3c/prolog/test525.scxml deleted file mode 100644 index a2a63e8..0000000 --- a/test/w3c/prolog/test525.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <foreach> does a shallow copy, so that modifying the array does not change -the iteration behavior. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1"> - [1,2,3] - </data> - <data id="var2" expr="0"/> - <!-- counts the number of iterations --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="var3" array="var1(X), member(M, X)"> - <assign location="var1" expr="[].concat(Var1, [4])"/> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </foreach> - </onentry> - <transition cond="X = 3, var2(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test527.scxml b/test/w3c/prolog/test527.scxml deleted file mode 100644 index 5b894fb..0000000 --- a/test/w3c/prolog/test527.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that 'expr' works with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data == 'foo'" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="'foo'"/> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test528.scxml b/test/w3c/prolog/test528.scxml deleted file mode 100644 index eaed3bf..0000000 --- a/test/w3c/prolog/test528.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal 'expr' produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="return"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="typeof _event.data === 'undefined'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test529.scxml b/test/w3c/prolog/test529.scxml deleted file mode 100644 index 6c3285e..0000000 --- a/test/w3c/prolog/test529.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that children workn with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="prolog" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data == 21" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content>21</content> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test530.scxml b/test/w3c/prolog/test530.scxml deleted file mode 100644 index ab90271..0000000 --- a/test/w3c/prolog/test530.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <content> child is evaluated when <invoke> is. Var1 is initialized -with an integer value, then set to an scxml script in the onentry to s0. If <content> -is evaluated at the right time, we should get invoke.done, otherwise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="var1"> - <scxml version="1.0"> - <final/> - </scxml> - </assign> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content expr="var1"/> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test531.scxml b/test/w3c/prolog/test531.scxml deleted file mode 100644 index f3d114f..0000000 --- a/test/w3c/prolog/test531.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that the value of the <param> _scxmleventname gets used as the name -of the raised event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="_scxmleventname" expr="'test'"/> - </send> - </onentry> - <!-- if we get an event named 'test' we succeed. Otherwise fail --> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test532.scxml b/test/w3c/prolog/test532.scxml deleted file mode 100644 index 498fc9f..0000000 --- a/test/w3c/prolog/test532.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that if _scxmleventname is not present, the name of the HTTP method is used -as the name of the resulting event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <send targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <!-- this content will be ignored, but it's here to make sure we have a message body --> - <content>some content</content> - </send> - </onentry> - <transition event="HTTP.POST" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test533.scxml b/test/w3c/prolog/test533.scxml deleted file mode 100644 index 5f8d4f0..0000000 --- a/test/w3c/prolog/test533.scxml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose source state is not compound does exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - <!-- how often we have exited p --> - <data id="var2" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="var3" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="var4" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <parallel id="p"> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <transition event="foo" type="internal" target="ps1"> - <assign location="var4(Y)" expr="var4(X), Y is X + 1, retractall(var1(_))"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="X = 1, var4(X)" target="s2"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign location="var2(Y)" expr="var2(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign location="var3(Y)" expr="var3(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - </parallel> - <state id="s2"> - <!-- make sure that p was exited twice --> - <transition cond="X = 2, var1(X)" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that ps1 was exited twice --> - <transition cond="X = 2, var2(X)" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps2 was exited twice --> - <transition cond="X = 2, var3(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test534.scxml b/test/w3c/prolog/test534.scxml deleted file mode 100644 index 89fa296..0000000 --- a/test/w3c/prolog/test534.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.raw.search('_scxmleventname=test') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test539.txt b/test/w3c/prolog/test539.txt deleted file mode 100644 index de1b0a1..0000000 --- a/test/w3c/prolog/test539.txt +++ /dev/null @@ -1,4 +0,0 @@ - <books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books>
\ No newline at end of file diff --git a/test/w3c/prolog/test540.txt b/test/w3c/prolog/test540.txt deleted file mode 100644 index 2191239..0000000 --- a/test/w3c/prolog/test540.txt +++ /dev/null @@ -1,3 +0,0 @@ -123 -4 5 -
\ No newline at end of file diff --git a/test/w3c/prolog/test550.scxml b/test/w3c/prolog/test550.scxml deleted file mode 100644 index 9094853..0000000 --- a/test/w3c/prolog/test550.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that expr can be used to assign a value to a var. This test uses early binding --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog" binding="early"> - <state id="s0"> - <transition cond="X = 2, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="var1" expr="2"/> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test551.scxml b/test/w3c/prolog/test551.scxml deleted file mode 100644 index 733ee3d..0000000 --- a/test/w3c/prolog/test551.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that inline content can be used to assign a value to a var. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" binding="early" datamodel="prolog"> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="var1"> - [1,2,3] - </data> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test552.scxml b/test/w3c/prolog/test552.scxml deleted file mode 100644 index 527d6b6..0000000 --- a/test/w3c/prolog/test552.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that src content can be used to assign a value to a var. Edit -test552.txt to have a value that's legal for the datamodel in question --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <datamodel> - <data id="var1" src="file:test552.txt"/> - </datamodel> - <state id="s0"> - <transition cond="var1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test552.txt b/test/w3c/prolog/test552.txt deleted file mode 100644 index d8263ee..0000000 --- a/test/w3c/prolog/test552.txt +++ /dev/null @@ -1 +0,0 @@ -2
\ No newline at end of file diff --git a/test/w3c/prolog/test553.scxml b/test/w3c/prolog/test553.scxml deleted file mode 100644 index 8ab2b2c..0000000 --- a/test/w3c/prolog/test553.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor does not dispatch the event if evaluation -of <send>'s args causes an error.. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <!-- timeout event --> - <send event="timeout" delayexpr="'1s'"/> - <!-- generate an invalid namelist --> - <send event="event1" namelist=""foo"/> - </onentry> - <!-- if we get the timeout before event1, we assume that event1 hasn't been sent - We ignore the error event here because this assertion doesn't mention it --> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test554.scxml b/test/w3c/prolog/test554.scxml deleted file mode 100644 index 5c89cf1..0000000 --- a/test/w3c/prolog/test554.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that if the evaluation of <invoke>'s args causes an error, the -invocation is cancelled. In this test, that means that we don't get done.invoke -before the timer goes off. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="prolog"> - <state id="s0"> - <onentry> - <send event="timer" delayexpr="'1s'"/> - </onentry> - <!-- reference an invalid namelist --> - <invoke type="http://www.w3.org/TR/scxml/" namelist=""foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="prolog"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timer" target="pass"/> - <transition event="done.invoke" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test557.txt b/test/w3c/prolog/test557.txt deleted file mode 100644 index a8e51da..0000000 --- a/test/w3c/prolog/test557.txt +++ /dev/null @@ -1,4 +0,0 @@ -<books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books>
\ No newline at end of file diff --git a/test/w3c/prolog/test558.txt b/test/w3c/prolog/test558.txt deleted file mode 100644 index bb2bcc7..0000000 --- a/test/w3c/prolog/test558.txt +++ /dev/null @@ -1,3 +0,0 @@ - -this is -a string
\ No newline at end of file diff --git a/test/w3c/prolog/test567.scxml b/test/w3c/prolog/test567.scxml deleted file mode 100644 index cfb8f5a..0000000 --- a/test/w3c/prolog/test567.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that any content in the message other than _scxmleventname is used to populate -_event.data. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <!-- in this case, 'test' will be placed in _scxmleventname. The <param> should - be used to populate _event.data --> - <send event="test" targetexpr="_ioprocessors['basichttp']['location']" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="param1" expr="2"/> - </send> - </onentry> - <!-- if we get this event, we succeed --> - <transition event="test" target="s1"> - <assign location="var1" expr="_event.data.param1"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="X = 2, var1(X)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test570.scxml b/test/w3c/prolog/test570.scxml deleted file mode 100644 index 8e0dc38..0000000 --- a/test/w3c/prolog/test570.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we generate done.state.id when all a parallel state's children are in final states --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" datamodel="prolog" version="1.0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send event="timeout" delay="2s"/> - <raise event="e1"/> - <raise event="e2"/> - </onentry> - <!-- record that we get the first done event --> - <transition event="done.state.p0s1"> - <assign location="var1" expr="1"/> - </transition> - <!-- we should get the second done event before done.state.p0 --> - <transition event="done.state.p0s2" target="s1"/> - <transition event="timeout" target="fail"/> - <state id="p0s1" initial="p0s11"> - <state id="p0s11"> - <transition event="e1" target="p0s1final"/> - </state> - <final id="p0s1final"/> - </state> - <state id="p0s2" initial="p0s21"> - <state id="p0s21"> - <transition event="e2" target="p0s2final"/> - </state> - <final id="p0s2final"/> - </state> - </parallel> - <state id="s1"> - <!-- if we get done.state.p0, success --> - <transition event="done.state.p0" cond="X = 1, var1(X)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test576.scxml b/test/w3c/prolog/test576.scxml deleted file mode 100644 index 97ea544..0000000 --- a/test/w3c/prolog/test576.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and -test that both are entered. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s11p112 s11p122" datamodel="prolog" version="1.0"> - <state id="s0"> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="pass"/> - </state> - </state> - </parallel> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test577.scxml b/test/w3c/prolog/test577.scxml deleted file mode 100644 index f412a33..0000000 --- a/test/w3c/prolog/test577.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> without target in basichttp event i/o processor -causes error.communication to get added to internal queue . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="prolog" version="1.0"> - <state id="s0"> - <onentry> - <!-- sent by scxml event i/o processor, added to external queue --> - <send event="event1"/> - <!-- should put error.communication on internal queue --> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test579.scxml b/test/w3c/prolog/test579.scxml deleted file mode 100644 index 851b103..0000000 --- a/test/w3c/prolog/test579.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, -the executable content inside the <initial> transition. However the Processor MUST -execute this content only if there is no stored history. Once the history state's -parent state has been visited and exited, the default history content must not be executed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="prolog"> - <state id="s0"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <initial> - <transition target="sh1"> - <raise event="event2"/> - </transition> - </initial> - <onentry> - <send delayexpr="'1s'" event="timeout"/> - <raise event="event1"/> - </onentry> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - <history id="sh1"> - <transition target="s01"> - <raise event="event3"/> - </transition> - </history> - <state id="s01"> - <transition event="event1" target="s02"/> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition cond="var1==0" event="event3" target="s0"/> - <transition cond="var1==1" event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - </state> - <state id="s2"> - <transition event="event2" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition event="event3" target="fail"/> - <transition event="timeout" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/prolog/test580.scxml b/test/w3c/prolog/test580.scxml deleted file mode 100644 index 6034e42..0000000 --- a/test/w3c/prolog/test580.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a history state never ends up part of the configuration --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="p1" datamodel="prolog"> - <datamodel> - <data id="var1" expr="0"/> - </datamodel> - <parallel id="p1"> - <onentry> - <send delay="2s" event="timeout"/> - </onentry> - <state id="s0"> - <transition cond="In('sh1')" target="fail"/> - <transition event="timeout" target="fail"/> - </state> - <state id="s1"> - <initial> - <transition target="sh1"/> - </initial> - <history id="sh1"> - <transition target="s11"/> - </history> - <state id="s11"> - <transition cond="In('sh1')" target="fail"/> - <transition target="s12"/> - </state> - <state id="s12"/> - <transition cond="In('sh1')" target="fail"/> - <transition cond="var1==0" target="sh1"/> - <transition cond="var1==1" target="pass"/> - <onexit> - <assign location="var1(Y)" expr="var1(X), Y is X + 1, retractall(var1(_))"/> - </onexit> - </state> - </parallel> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/promela/robots.txt b/test/w3c/promela/robots.txt deleted file mode 100644 index 9be2782..0000000 --- a/test/w3c/promela/robots.txt +++ /dev/null @@ -1,96 +0,0 @@ -# -# robots.txt for http://www.w3.org/ -# -# $Id: robots.txt,v 1.67 2014-06-25 13:06:01 ddavis Exp $ -# - -# For use by search.w3.org -User-agent: W3C-gsa -Disallow: /Out-Of-Date - -User-agent: W3T_SE -Disallow: /Out-Of-Date - -User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot) -Disallow: / - -# W3C Link checker -User-agent: W3C-checklink -Disallow: - -# the following settings apply to all bots -User-agent: * -# Blogs - WordPress -# https://codex.wordpress.org/Search_Engine_Optimization_for_WordPress#Robots.txt_Optimization -Disallow: /*/wp-admin/ -Disallow: /*/wp-includes/ -Disallow: /*/wp-content/plugins/ -Disallow: /*/wp-content/cache/ -Disallow: /*/wp-content/themes/ -Disallow: /blog/*/trackback/ -Disallow: /blog/*/feed/ -Disallow: /blog/*/comments/ -Disallow: /blog/*/category/*/* -Disallow: /blog/*/*/trackback/ -Disallow: /blog/*/*/feed/ -Disallow: /blog/*/*/comments/ -Disallow: /blog/*/*? -Disallow: /community/trackback/ -Disallow: /community/feed/ -Disallow: /community/comments/ -Disallow: /community/category/*/* -Disallow: /community/*/trackback/ -Disallow: /community/*/feed/ -Disallow: /community/*/comments/ -Disallow: /community/*/category/*/* -Disallow: /community/*? -Disallow: /Consortium/Offices/trackback/ -Disallow: /Consortium/Offices/feed/ -Disallow: /Consortium/Offices/comments/ -Disallow: /Consortium/Offices/category/*/* -Disallow: /Consortium/Offices/*/trackback/ -Disallow: /Consortium/Offices/*/feed/ -Disallow: /Consortium/Offices/*/comments/ -Disallow: /Consortium/Offices/*? -# Wikis - Mediawiki -# https://www.mediawiki.org/wiki/Manual:Robots.txt -Disallow: /wiki/index.php? -Disallow: /wiki/index.php/Help -Disallow: /wiki/index.php/MediaWiki -Disallow: /wiki/index.php/Special: -Disallow: /wiki/index.php/Template -Disallow: /wiki/skins/ -Disallow: /*/wiki/index.php? -Disallow: /*/wiki/index.php/Help -Disallow: /*/wiki/index.php/MediaWiki -Disallow: /*/wiki/index.php/Special: -Disallow: /*/wiki/index.php/Template -# various other access-controlled or expensive areas -Disallow: /2004/ontaria/basic -Disallow: /Team/ -Disallow: /Project -Disallow: /Web -Disallow: /Systems -Disallow: /History -Disallow: /Out-Of-Date -Disallow: /2002/02/mid -Disallow: /mid/ -Disallow: /2005/06/blog/ -Disallow: /2004/08/W3CTalks -Disallow: /2007/11/Talks/search -Disallow: /People/all/ -Disallow: /RDF/Validator/ARPServlet -Disallow: /2003/03/Translations/byLanguage -Disallow: /2003/03/Translations/byTechnology -Disallow: /2005/11/Translations/Query -Disallow: /2000/06/webdata/xslt -Disallow: /2000/09/webdata/xslt -Disallow: /2005/08/online_xslt/xslt -Disallow: /Bugs/ -Disallow: /Search/Mail/Public/ -Disallow: /2006/02/chartergen -Disallow: /2004/01/pp-impl -Disallow: /Consortium/supporters -Disallow: /2007/08/pyRdfa/ -Disallow: /WAI/PF/comments/ -Disallow: /participate/conferences.xml diff --git a/test/w3c/promela/test144.scxml b/test/w3c/promela/test144.scxml deleted file mode 100644 index 18055c4..0000000 --- a/test/w3c/promela/test144.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that events are inserted into the queue in the order in which they are raised. If -foo occurs before bar, success, otherwise failure --> -<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"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition event="foo" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test147.scxml b/test/w3c/promela/test147.scxml deleted file mode 100644 index de4e35e..0000000 --- a/test/w3c/promela/test147.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the first clause that evaluates to true - and only that clause - is executed. -Only one event should be raised, and it should be bar --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <elseif cond="true"/> - <raise event="bar"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <else/> - <raise event="baz"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bar" cond="Var1==1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test148.scxml b/test/w3c/promela/test148.scxml deleted file mode 100644 index fafb41a..0000000 --- a/test/w3c/promela/test148.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the else clause executes if <if> and <elseif> evaluate to false. -Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause -fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <elseif cond="false"/> - <raise event="bar"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <else/> - <raise event="baz"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="baz" cond="Var1==1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test149.scxml b/test/w3c/promela/test149.scxml deleted file mode 100644 index a11083e..0000000 --- a/test/w3c/promela/test149.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that neither if clause executes, so that bat is the only event raised. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="false"> - <raise event="foo"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <elseif cond="false"/> - <raise event="bar"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bat" cond="Var1==0" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test150.scxml b/test/w3c/promela/test150.scxml deleted file mode 100644 index 3816c3e..0000000 --- a/test/w3c/promela/test150.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int[3]"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="Var1" index="Var2" array="Var3"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="Var4" index="Var5" array="Var3"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var4 is bound --> - <transition cond="Var4" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test151.scxml b/test/w3c/promela/test151.scxml deleted file mode 100644 index bb50570..0000000 --- a/test/w3c/promela/test151.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int[3]"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="Var1" index="Var2" array="Var3"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="Var4" index="Var5" array="Var3"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var5 is bound --> - <transition cond="Var5" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test152.scxml b/test/w3c/promela/test152.scxml deleted file mode 100644 index 71f0011..0000000 --- a/test/w3c/promela/test152.scxml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an illegal array or item value causes error.execution and results in executable content -not being executed. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int"/> - <data id="Var4" type="int" expr="7"/> - <data id="Var5" type="int[3]"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- invalid array, legal item --> - <foreach item="Var2" index="Var3" array="Var4"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </foreach> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <!-- illegal item, legal array --> - <foreach item="'continue'" index="Var3" array="Var5"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </foreach> - <raise event="bar"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="bar" target="fail"/> - </state> - <state id="s2"> - <!-- check that var1 has its original value (so executable content never got executed --> - <transition cond="Var1==0" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test153.scxml b/test/w3c/promela/test153.scxml deleted file mode 100644 index 9890b47..0000000 --- a/test/w3c/promela/test153.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current -value with the previous value, which is stored in var1. The current value should always be larger. If -it ever isn't, set Var4 to 0, indicating failure --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- contains the previous value --> - <data id="Var2" type="int"/> - <!-- the item which will contain the current value --> - <data id="Var3" type="int[3]"> - [1,2,3] - </data> - <data id="Var4" type="int" expr="1"/> - <!-- 1 if success, 0 if failure --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="Var3"> - <if cond="Var1<Var2"> - <assign location="Var1" expr="Var2"/> - <else/> - <!-- values are out of order, record failure --> - <assign location="Var4" expr="0"/> - </if> - </foreach> - </onentry> - <!-- check that var1 has its original value --> - <transition cond="Var4==0" target="fail"/> - <transition target="pass"/> - </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> diff --git a/test/w3c/promela/test155.scxml b/test/w3c/promela/test155.scxml deleted file mode 100644 index 27fd196..0000000 --- a/test/w3c/promela/test155.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable -content sums the items into var1 so it should be 6 at the end --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int[3]"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="Var3"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + Var2"/> - </foreach> - </onentry> - <transition cond="Var1==6" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test156.scxml b/test/w3c/promela/test156.scxml deleted file mode 100644 index d81a2a2..0000000 --- a/test/w3c/promela/test156.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an error causes the foreach to stop execution. The second piece of executable content -should cause an error, so var1 should be incremented only once --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int[3]"> - [1,2,3] - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="Var3"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - <!-- assign an illegal value to a non-existent var --> - <assign location="Var5" expr="return"/> - </foreach> - </onentry> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test158.scxml b/test/w3c/promela/test158.scxml deleted file mode 100644 index d921652..0000000 --- a/test/w3c/promela/test158.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test159.scxml b/test/w3c/promela/test159.scxml deleted file mode 100644 index f59d1f9..0000000 --- a/test/w3c/promela/test159.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. -The send tag will raise an error so var1 should not be incremented. If it is fail, otherwise succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="thisWillFail" target="baz"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onentry> - <transition cond="Var1==1" target="fail"/> - <transition target="pass"/> - </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> diff --git a/test/w3c/promela/test172.scxml b/test/w3c/promela/test172.scxml deleted file mode 100644 index bd99e91..0000000 --- a/test/w3c/promela/test172.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that eventexpr uses the current value of var1, not its initial value --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="string" expr="'event1'"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="'event2'"/> - <send eventexpr="Var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test173.scxml b/test/w3c/promela/test173.scxml deleted file mode 100644 index cb3728e..0000000 --- a/test/w3c/promela/test173.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that targetexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="'#_internal'"/> - <send targetexpr="Var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test174.scxml b/test/w3c/promela/test174.scxml deleted file mode 100644 index 1e44370..0000000 --- a/test/w3c/promela/test174.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typeexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"/> - <send typeexpr="Var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test175.scxml b/test/w3c/promela/test175.scxml deleted file mode 100644 index c44a6ab..0000000 --- a/test/w3c/promela/test175.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayexpr uses the current value of var1, not its initial value -(If it uses the initial value, event2 will be generated first, before event1. If it uses the current value, -event1 will be raised first. Succeed if event1 occurs before event2, otherwise fail --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="1000"/> - <send delayexpr="Var1" event="event2"/> - <send delayexpr="500" event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="event2" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test176.scxml b/test/w3c/promela/test176.scxml deleted file mode 100644 index d79b32e..0000000 --- a/test/w3c/promela/test176.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <param> uses the current value of var1, not its initial value. If the value of -aParam in event1 is 2 so that var2 gets set to 2, success, otherwise failure --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="2"/> - <send event="event1"> - <param name="aParam" expr="Var1"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="Var2" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var2==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test178.scxml b/test/w3c/promela/test178.scxml deleted file mode 100644 index 5256cd3..0000000 --- a/test/w3c/promela/test178.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that multiple key/value pairs are included, even when the keys are the same. -This is a manual test. The tester must look at the log output and verify that both -keys are there. (This test uses the SCXML Event I/O processor, which is the only -one that all platforms must support. It does not specify the message format, so -we cannot test _event.raw directly. Therefore we print it out for visual -inspection.) --> -<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"> - <onentry> - <send event="event1"> - <param name="Var1" expr="2"/> - <param name="Var1" expr="3"/> - </send> - </onentry> - <transition event="event1" target="final"> - <log label="_event " expr="_event.raw"/> - </transition> - <transition event="*" target="fail"/> - </state> - <final id="final"/> - <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/promela/test179.scxml b/test/w3c/promela/test179.scxml deleted file mode 100644 index c81030c..0000000 --- a/test/w3c/promela/test179.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <content> can be used to populate body of a message --> -<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"> - <onentry> - <send event="event1"> - <content>123</content> - </send> - </onentry> - <transition event="event1" cond="_event.data == 123" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test183.scxml b/test/w3c/promela/test183.scxml deleted file mode 100644 index 53ec8c7..0000000 --- a/test/w3c/promela/test183.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> stores the value of the sendid in idlocation. If it does, -var1 has a value and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" idlocation="Var1"/> - </onentry> - <transition cond="Var1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test185.scxml b/test/w3c/promela/test185.scxml deleted file mode 100644 index 0ef8c2e..0000000 --- a/test/w3c/promela/test185.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> respects the delay specification. If it does, event1 arrives before event2 - and we pass. Otherwise we fail --> -<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"> - <onentry> - <send event="event2" delayexpr="1000"/> - <send event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test186.scxml b/test/w3c/promela/test186.scxml deleted file mode 100644 index b30f6d0..0000000 --- a/test/w3c/promela/test186.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the -message is actually sent. If it does, aParam will have the value of 1 (even though var1 has been incremented -in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" delayexpr="1000"> - <param name="aParam" expr="Var1"/> - </send> - <assign location="Var1" expr="2"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="Var2" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var2==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test187.scxml b/test/w3c/promela/test187.scxml deleted file mode 100644 index fe09a12..0000000 --- a/test/w3c/promela/test187.scxml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayed <send> is not sent if the sending session terminates. In this case, -a subscript is invoked which sends the event childToParent delayed by 1 second, and then terminates. The -parent session, should not receive childToParent. If it does, we fail. Otherwise the -10 sec timer expires and we pass --> -<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"> - <onentry> - <send event="timeout" delayexpr="1000"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- exit before the delayed send can execute --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent" delayexpr="500"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="fail"/> - <transition event="timeout" target="pass"/> - </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> diff --git a/test/w3c/promela/test189.scxml b/test/w3c/promela/test189.scxml deleted file mode 100644 index b1bbf2a..0000000 --- a/test/w3c/promela/test189.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first) --> -<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"> - <onentry> - <!-- goes to the external queue --> - <send event="event2"/> - <!-- to the internal queue --> - <send event="event1" target="#_internal"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="pass"/> - <transition event="event2" target="fail"/> - </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> diff --git a/test/w3c/promela/test190.scxml b/test/w3c/promela/test190.scxml deleted file mode 100644 index 2143e85..0000000 --- a/test/w3c/promela/test190.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first). we have to make sure that event2 -is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) --> -<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"> - <datamodel> - <data id="Var1" type="string" expr="'#_scxml_'"/> - <data id="Var2" type="string" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + Var2"/> - <!-- goes to the external queue --> - <send event="event2" targetexpr="Var1"/> - <!-- to the internal queue --> - <raise event="event1"/> - <!-- this should get added to the external queue after event2 --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <!-- now check that we get event2 and not a timeout --> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test191.scxml b/test/w3c/promela/test191.scxml deleted file mode 100644 index 6fc9a7f..0000000 --- a/test/w3c/promela/test191.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event -childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we -pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- send an event to the parent session using #_parent as the target --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test192.scxml b/test/w3c/promela/test192.scxml deleted file mode 100644 index 48a019a..0000000 --- a/test/w3c/promela/test192.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us -childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. -If it receives this event, it sends sends the event eventReceived to its parent session (ths session). -If we get this event, we pass, otherwise the child script eventually times out sends invoke.done and we fail. -We also set a timeout in this process to make sure the test doesn't hang --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - </onentry> - <invoke type="scxml" id="invokedChild"> - <content> - <!-- let the parent session know we're running by sending childToParent, then wait for parentToChild. - If we get it, send eventReceived. If we don't we eventually time out --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <transition event="parentToChild" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <send target="#_invokedChild" event="parentToChild"/> - </transition> - </state> - <state id="s02"> - <transition event="eventReceived" target="pass"/> - </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> diff --git a/test/w3c/promela/test193.scxml b/test/w3c/promela/test193.scxml deleted file mode 100644 index 2d240e7..0000000 --- a/test/w3c/promela/test193.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that omitting target and targetexpr of <send> when using the -SCXML event i/o processor puts the event on the external queue. --> -<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"> - <onentry> - <send event="internal"/> - <!-- this should put event1 in the external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="event1" target="fail"/> - <transition event="internal" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="timeout" target="fail"/> - </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> diff --git a/test/w3c/promela/test194.scxml b/test/w3c/promela/test194.scxml deleted file mode 100644 index b9be1a2..0000000 --- a/test/w3c/promela/test194.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, -we succeed. Otherwise we eventually timeout and fail. --> -<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"> - <onentry> - <!-- should cause an error --> - <send target="baz" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test198.scxml b/test/w3c/promela/test198.scxml deleted file mode 100644 index 2a45282..0000000 --- a/test/w3c/promela/test198.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell -what processor was used is to look at the origintype of the resulting event --> -<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"> - <onentry> - <send event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" cond=" _event.origintype == 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test199.scxml b/test/w3c/promela/test199.scxml deleted file mode 100644 index dbea699..0000000 --- a/test/w3c/promela/test199.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that using an invalid send type results in error.execution --> -<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"> - <onentry> - <send type="27" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test200.scxml b/test/w3c/promela/test200.scxml deleted file mode 100644 index e4503fb..0000000 --- a/test/w3c/promela/test200.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the scxml event i/o processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test201.scxml b/test/w3c/promela/test201.scxml deleted file mode 100644 index d517776..0000000 --- a/test/w3c/promela/test201.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the basic http event i/o processor. This is an optional -test since platforms are not required to support basic http event i/o --> -<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"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test205.scxml b/test/w3c/promela/test205.scxml deleted file mode 100644 index 604b311..0000000 --- a/test/w3c/promela/test205.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor doesn't change the message. We can't test that it never does this, but -at least we can check that the event name and included data are the same as we sent. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="aParam" expr="1"/> - </send> - <send event="timeout"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="Var1" expr="_event.data.aParam"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test207.scxml b/test/w3c/promela/test207.scxml deleted file mode 100644 index a780b41..0000000 --- a/test/w3c/promela/test207.scxml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies -us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event - event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event -raised in another session, but the spec doesn't define any way to refer to an event in another process --> -<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> - <send event="timeout" delayexpr="2000"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- when invoked, we raise a delayed event1 with sendid 'foo' and notify our parent. Then we wait. - If event1 occurs, the parent hasn't succeeded in canceling it and we return pass. If event2 occurs - it means event1 was canceled (because event2 is delayed longer than event1) and we return 'fail'. --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send event="event1" id="foo" delayexpr="1000"/> - <send event="event2" delayexpr="1500"/> - <send target="#_parent" event="childToParent"/> - </onentry> - <transition event="event1" target="subFinal"> - <send target="#_parent" event="pass"/> - </transition> - <transition event="*" target="subFinal"> - <send target="#_parent" event="fail"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childToParent" target="s02"> - <cancel sendid="foo"/> - </transition> - </state> - <state id="s02"> - <transition event="pass" target="pass"/> - <transition event="fail" target="fail"/> - <transition event="timeout" 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> diff --git a/test/w3c/promela/test208.scxml b/test/w3c/promela/test208.scxml deleted file mode 100644 index 3fce2d2..0000000 --- a/test/w3c/promela/test208.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that cancel works. We cancel delayed event1. If cancel works, we get event2 first and pass. If -we get event1 or an error first, cancel didn't work and we fail. --> -<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"> - <onentry> - <send id="foo" event="event1" delayexpr="1000"/> - <send event="event2" delayexpr="1500"/> - <cancel sendid="foo"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test210.scxml b/test/w3c/promela/test210.scxml deleted file mode 100644 index 08612be..0000000 --- a/test/w3c/promela/test210.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that sendidexpr works with cancel. If it takes the most recent value of var1, it should cancel -delayed event1. Thus we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> -<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"> - <datamodel> - <data id="Var1" type="string" expr="'bar'"/> - </datamodel> - <state id="s0"> - <onentry> - <send id="foo" event="event1" delayexpr="1000"/> - <send event="event2" delayexpr="1500"/> - <assign location="Var1" expr="'foo'"/> - <cancel sendidexpr="Var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test215.scxml b/test/w3c/promela/test215.scxml deleted file mode 100644 index 3f139c5..0000000 --- a/test/w3c/promela/test215.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If -the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="string" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <assign location="Var1" expr="'http://www.w3.org/TR/scxml/'"/> - </onentry> - <invoke typeexpr="Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" datamodel="promela" version="1.0"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test216.scxml b/test/w3c/promela/test216.scxml deleted file mode 100644 index 8555040..0000000 --- a/test/w3c/promela/test216.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that srcexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (assuming that there is no script named 'foo'). If -the runtime value is used, the invocation will succeed --> -<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"> - <datamodel> - <data id="Var1" type="string" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <assign location="Var1" expr="'file:test216sub1.scxml'"/> - </onentry> - <invoke srcexpr="Var1" type="http://www.w3.org/TR/scxml"/> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test216sub1.scxml b/test/w3c/promela/test216sub1.scxml deleted file mode 100644 index 9a5d74e..0000000 --- a/test/w3c/promela/test216sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="promela"> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test220.scxml b/test/w3c/promela/test220.scxml deleted file mode 100644 index e16f838..0000000 --- a/test/w3c/promela/test220.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the scxml type is supported. --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test223.scxml b/test/w3c/promela/test223.scxml deleted file mode 100644 index 99ee320..0000000 --- a/test/w3c/promela/test223.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that idlocation is supported. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="Var1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test224.scxml b/test/w3c/promela/test224.scxml deleted file mode 100644 index 09bbb25..0000000 --- a/test/w3c/promela/test224.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id has the form stateid.platformid. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="string" expr="'s0.'"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml version="1.0" initial="subFinal" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="(function(str, starts){if (starts == '') return true;if (str == null || starts == null) return false;str = String(str); starts = String(starts);return str.length >= starts.length && str.slice(0, starts.length) == starts;})(Var1, Var2)" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test225.scxml b/test/w3c/promela/test225.scxml deleted file mode 100644 index b38d1a2..0000000 --- a/test/w3c/promela/test225.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var1"> - <content> - <scxml initial="subFinal1" version="1.0" datamodel="promela"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="Var2"> - <content> - <scxml initial="subFinal2" version="1.0" datamodel="promela"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="Var1==Var2" target="fail"/> - <transition target="pass"/> - </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> diff --git a/test/w3c/promela/test226.scxml b/test/w3c/promela/test226.scxml deleted file mode 100644 index 9a003c2..0000000 --- a/test/w3c/promela/test226.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is basically just a test that invoke works correctly and that you can pass data -to the invoked process. If the invoked session finds aParam==1, it exits, signalling -success. otherwise it will hang and the timeout in this doc signifies failure. --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test226sub1.scxml"> - <param name="Var1" expr="1"/> - </invoke> - <transition event="varBound" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test226sub1.scxml b/test/w3c/promela/test226sub1.scxml deleted file mode 100644 index 3d7869a..0000000 --- a/test/w3c/promela/test226sub1.scxml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, if var1 has a value notify parent. Then terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="final"> - <send target="#_parent" event="varBound"/> - </transition> - <transition target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test228.scxml b/test/w3c/promela/test228.scxml deleted file mode 100644 index 137418a..0000000 --- a/test/w3c/promela/test228.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the invokeid is included in events returned from the invoked process. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="s1"> - <assign location="Var1" expr="_event.invokeid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var1=='foo'" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test229.scxml b/test/w3c/promela/test229.scxml deleted file mode 100644 index 4030b85..0000000 --- a/test/w3c/promela/test229.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that autofoward works. If the child process receives back a copy of the -childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note -that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise -it eventually times out and the done.invoke signals failure --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. - If it is forwarded back to us, send - eventReceived to signal success and terminate. - Otherwise wait for timer to expire and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent"/> - <transition event="eventReceived" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test230.scxml b/test/w3c/promela/test230.scxml deleted file mode 100644 index e8bd447..0000000 --- a/test/w3c/promela/test230.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a manual test that an autofowarded event has the same fields and values as the original event. -the child process sends the parent process an event which is forwarded back to it. -Both the parent and child process print out the contents of the event. The tester -must check if they are the same and report his result. --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. If it is forwarded back to us, print out its - fields and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <log label="name is " expr="_event.name"/> - <log label="type is " expr="_event.type"/> - <log label="sendid is " expr="_event.sendid"/> - <log label="origin is " expr="_event.origin"/> - <log label="origintype is " expr="_event.origintype"/> - <log label="invokeid is " expr="_event.invokeid"/> - <log label="data is " expr="_event.data"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="final"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <log label="name is " expr="_event.name"/> - <log label="type is " expr="_event.type"/> - <log label="sendid is " expr="_event.sendid"/> - <log label="origin is " expr="_event.origin"/> - <log label="origintype is " expr="_event.origintype"/> - <log label="invokeid is " expr="_event.invokeid"/> - <log label="data is " expr="_event.data"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <!-- wait till we get the done event to ensure that the child process has time to print out its results --> - <transition event="done.invoke" target="final"/> - </state> - </state> - <final id="final"/> - <final xmlns:scxml="http://www.w3.org/2005/07/scxml" id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/promela/test232.scxml b/test/w3c/promela/test232.scxml deleted file mode 100644 index c54874e..0000000 --- a/test/w3c/promela/test232.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a parent process can receive multiple events from a child process --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent1"/> - <send target="#_parent" event="childToParent2"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent1" target="s02"/> - </state> - <state id="s02"> - <transition event="childToParent2" target="s03"/> - </state> - <state id="s03"> - <transition event="done.invoke" target="pass"/> - </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> diff --git a/test/w3c/promela/test233.scxml b/test/w3c/promela/test233.scxml deleted file mode 100644 index 195d244..0000000 --- a/test/w3c/promela/test233.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that finalize markup runs before the event is processed. The invoked process will -return 2 in _event.data.aParam, so that new value should be in force when we select -the transtitions. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="Var1" expr="_event.data.aParam"/> - </finalize> - </invoke> - <transition event="childToParent" cond="Var1==2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test234.scxml b/test/w3c/promela/test234.scxml deleted file mode 100644 index 2e79a98..0000000 --- a/test/w3c/promela/test234.scxml +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that only finalize markup in the invoking state runs. the first invoked process will -return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. -Only the first finalize should execute. So when we get to s1 var1 should have value 2 but -var2 should still be set to 1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - <data id="Var2" type="int" expr="1"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="p01"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="promela"> - <final id="subFinal1"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="Var1" expr="_event.data.aParam"/> - </finalize> - </invoke> - <transition event="childToParent" cond="Var1==2" target="s1"/> - <transition event="childToParent" target="fail"/> - </state> - <state id="p02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="sub0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - <finalize> - <assign location="Var2" expr="_event.data.aParam"/> - </finalize> - </invoke> - </state> - </parallel> - <state id="s1"> - <transition cond="Var2==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test235.scxml b/test/w3c/promela/test235.scxml deleted file mode 100644 index 6c6383b..0000000 --- a/test/w3c/promela/test235.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event has the right id. the invoked child terminates immediately -and should generate done.invoke.foo --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke.foo" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test236.scxml b/test/w3c/promela/test236.scxml deleted file mode 100644 index 2a8c76c..0000000 --- a/test/w3c/promela/test236.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event is the last event we receive. the invoked process sends childToParent -in the exit handler of its final state. We should get it before the done.invoke, and we should get no -events after the done.invoke. Hence timeout indicates success --> -<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"> - <onentry> - <send event="timeout" delayexpr="2000"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </final> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="s1"/> - <transition event="done.invoke" target="fail"/> - </state> - <state id="s1"> - <!-- here we should get done.invoke --> - <transition event="done.invoke" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="timeout" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test237.scxml b/test/w3c/promela/test237.scxml deleted file mode 100644 index b39e7db..0000000 --- a/test/w3c/promela/test237.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We -sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. -If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by -the time timeout2 fires, success --> -<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"> - <onentry> - <send event="timeout1" delayexpr="1000"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, sleep for 2 secs then terminate. Parent will try to cancel this session --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send event="timeout" delayexpr="2000"/> - </onentry> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout1" target="s1"/> - </state> - <state id="s1"> - <onentry> - <send event="timeout2" delayexpr="1500"/> - </onentry> - <!-- here we should NOT get done.invoke --> - <transition event="done.invoke" target="fail"/> - <transition event="*" target="pass"/> - </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> diff --git a/test/w3c/promela/test239.scxml b/test/w3c/promela/test239.scxml deleted file mode 100644 index dc13d5f..0000000 --- a/test/w3c/promela/test239.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup can be specified both by 'src' and by <content> --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test239sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test239sub1.scxml. --> - <content> - <scxml version="1.0" initial="final" datamodel="promela"> - <final id="final"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - </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> diff --git a/test/w3c/promela/test239sub1.scxml b/test/w3c/promela/test239sub1.scxml deleted file mode 100644 index 4f0ea59..0000000 --- a/test/w3c/promela/test239sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="promela"> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test240.scxml b/test/w3c/promela/test240.scxml deleted file mode 100644 index f18b796..0000000 --- a/test/w3c/promela/test240.scxml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified both by 'namelist' and by <param>. -invoked child will return success if its Var1 is set to 1, failure otherwise. This -test will fail schema validation because of the multiple occurences of Var1, but -should run correctly. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="Var1==1" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="fail"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="Var1==1" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal2"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="failure" 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> diff --git a/test/w3c/promela/test241.scxml b/test/w3c/promela/test241.scxml deleted file mode 100644 index f2cebaa..0000000 --- a/test/w3c/promela/test241.scxml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- The child process will return success ifits Var1 is set to 1, failure otherwise. For this test -we try passing in Var1 by param and by namelist and check that we either get two successes -or two failures. This test will fail schema validation due to multiple declarations of -Var1, but should run correctly. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="Var1==1" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="s03"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="Var1==1" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal2"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got success in s01, so we need to do so here --> - <transition event="success" target="pass"/> - <transition event="failure" target="fail"/> - </state> - <state id="s03"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub03" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub03"> - <transition cond="Var1==1" target="subFinal3"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal3"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal3"/> - </scxml> - </content> - </invoke> - <!-- we got failure in s01, so we need to do so here --> - <transition event="failure" target="pass"/> - <transition event="success" 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> diff --git a/test/w3c/promela/test242.scxml b/test/w3c/promela/test242.scxml deleted file mode 100644 index 2184c54..0000000 --- a/test/w3c/promela/test242.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup specified by 'src' and by <content> is treated the same way. That means that -either we get done.invoke in both cases or in neither case (in which case we timeout) --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test242sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - <transition event="timeout1" target="s03"/> - </state> - <state id="s02"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="promela"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <!-- we got done.invoke last time, so we need it this time too --> - <transition event="done.invoke" target="pass"/> - <transition event="timeout2" target="fail"/> - </state> - <state id="s03"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal2" datamodel="promela"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got timeout last time, so we need it this time too --> - <transition event="timeout3" target="pass"/> - <transition event="done.invoke" target="fail"/> - </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> diff --git a/test/w3c/promela/test242sub1.scxml b/test/w3c/promela/test242sub1.scxml deleted file mode 100644 index 4f0ea59..0000000 --- a/test/w3c/promela/test242sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="promela"> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test243.scxml b/test/w3c/promela/test243.scxml deleted file mode 100644 index 886f732..0000000 --- a/test/w3c/promela/test243.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by param. -test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml version="1.0" initial="sub0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="Var1==1" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test244.scxml b/test/w3c/promela/test244.scxml deleted file mode 100644 index 87d1f0e..0000000 --- a/test/w3c/promela/test244.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by namelist. -invoked child will return success ifits Var1 is set to 1, failure otherwise. -This test will fail schema validation due to multiple occurrences of Var1, -but should run correctly. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="Var1"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="Var1==1" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test245.scxml b/test/w3c/promela/test245.scxml deleted file mode 100644 index 5f5db7f..0000000 --- a/test/w3c/promela/test245.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that non-existent datamodel values are not set. Var2 is not defined in -invoked child's datamodel. It will will return success if its Var2 remains unbound, failure otherwise. --> -<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"> - <datamodel> - <data id="Var2" type="int" expr="3"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="Var2"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <transition cond="Var2" target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test247.scxml b/test/w3c/promela/test247.scxml deleted file mode 100644 index 383813b..0000000 --- a/test/w3c/promela/test247.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get done.invoke. timeout indicates failure --> -<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"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="timeout" target="fail"/> - </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> diff --git a/test/w3c/promela/test250.scxml b/test/w3c/promela/test250.scxml deleted file mode 100644 index 0747224..0000000 --- a/test/w3c/promela/test250.scxml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the onexit handlers run in the invoked process if it is cancelled. This has to be a -manual test, since this process won't accept any events from the child process once it has been cancelled. -Tester must examine log output from child process to determine success --> -<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"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0" initial="sub01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <log expr="'Exiting sub0'"/> - </onexit> - <state id="sub01"> - <onexit> - <log expr="'Exiting sub01'"/> - </onexit> - </state> - </state> - <final id="subFinal"> - <onentry> - <log expr="'entering final state, invocation was not cancelled'"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test252.scxml b/test/w3c/promela/test252.scxml deleted file mode 100644 index 4e61863..0000000 --- a/test/w3c/promela/test252.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we don't process any events received from the invoked process once it is cancelled. child -process tries to send us childToParent in an onexit handler. If we get it, we fail. -timeout indicates success. --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="childToParent" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="s02"/> - </state> - <state id="s02"/> - </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> diff --git a/test/w3c/promela/test253.scxml b/test/w3c/promela/test253.scxml deleted file mode 100644 index d8777ca..0000000 --- a/test/w3c/promela/test253.scxml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event processor is used in both directions. If child process uses the -scxml event i/o processor to communicate with us, send it an event. It will send back success if -this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow -'scxml' as an alternative to the full url. --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="scxml" id="foo"> - <content> - <!-- inform parent we're running then wait for it to send us an event. If it uses the scxml event i/o - processor to do so, return success, otherwise return failure. --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var2" type="int"/> - </datamodel> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childRunning"/> - </onentry> - <transition event="parentToChild" target="sub1"> - <assign location="Var2" expr="_event.origintype"/> - </transition> - </state> - <state id="sub1"> - <transition cond="Var2=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition cond="Var2=='scxml'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childRunning" target="s02"> - <assign location="Var1" expr="_event.origintype"/> - </transition> - </state> - <state id="s02"> - <transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition cond="Var1=='scxml'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition target="fail"/> - </state> - <state id="s03"> - <transition event="success" target="pass"/> - <transition event="fail" 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> diff --git a/test/w3c/promela/test276.scxml b/test/w3c/promela/test276.scxml deleted file mode 100644 index 3602bb0..0000000 --- a/test/w3c/promela/test276.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that values passed in from parent process override default values specified in the child, test276sub1.scxml. -The child returns event1 if var1 has value 1, event0 if it has default value 0. --> -<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"> - <invoke type="scxml" src="file:test276sub1.scxml"> - <param name="Var1" expr="1"/> - </invoke> - <transition event="event1" target="pass"/> - <transition event="event0" target="fail"/> - </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> diff --git a/test/w3c/promela/test276sub1.scxml b/test/w3c/promela/test276sub1.scxml deleted file mode 100644 index a95592e..0000000 --- a/test/w3c/promela/test276sub1.scxml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- define var1 with default value 0. Parent will invoke this process setting var1 = 1. Return event1 if var1 == 1, event0 otherwise --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <transition cond="Var1==1" target="final"> - <send target="#_parent" event="event1"/> - </transition> - <transition target="final"> - <send target="#_parent" event="event0"/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test277.scxml b/test/w3c/promela/test277.scxml deleted file mode 100644 index 89090d2..0000000 --- a/test/w3c/promela/test277.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that platform creates undound variable if we assign an illegal value to it. Thus - we can assign to it later in state s1. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="return"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" cond="!(Var1)" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="Var1" expr="1"/> - </onentry> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test279.scxml b/test/w3c/promela/test279.scxml deleted file mode 100644 index 8c12d30..0000000 --- a/test/w3c/promela/test279.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- testing that in case of early binding variables are assigned values at init time, before - the state containing them is visited --> -<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"> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - </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> diff --git a/test/w3c/promela/test280.scxml b/test/w3c/promela/test280.scxml deleted file mode 100644 index d43a883..0000000 --- a/test/w3c/promela/test280.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test late binding. var2 won't get bound until s1 is entered, so it shouldn't have a value in s0 and -accessing it should cause an error. It should get bound before the onentry code in s1 so it should be -possible access it there and assign its value to var1 --> -<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" binding="late"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <transition cond="!(Var2)" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var2" type="int" expr="1"/> - </datamodel> - <onentry> - <assign location="Var1" expr="Var2"/> - </onentry> - <transition cond="Var1==Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test286.scxml b/test/w3c/promela/test286.scxml deleted file mode 100644 index 9b84ced..0000000 --- a/test/w3c/promela/test286.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case -where no error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0"> - <onentry> - <assign location="foo.bar.baz " expr="1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test287.scxml b/test/w3c/promela/test287.scxml deleted file mode 100644 index 2d22f15..0000000 --- a/test/w3c/promela/test287.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="1"/> - </onentry> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test288.scxml b/test/w3c/promela/test288.scxml deleted file mode 100644 index 8e9b01a..0000000 --- a/test/w3c/promela/test288.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location -using child content --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1">123</assign> - </onentry> - <transition cond="Var1 == 123" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test294.scxml b/test/w3c/promela/test294.scxml deleted file mode 100644 index dd38f2d..0000000 --- a/test/w3c/promela/test294.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a param inside donedata ends up in the data field of the done event and -that content inside donedata sets the full value of the event.data field --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data.Var1==1" target="s1"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="Var1" expr="1"/> - </donedata> - </final> - </state> - <state id="s1" initial="s11"> - <transition event="done.state.s1" cond="_event.data == 'foo'" target="pass"> - </transition> - <transition event="done.state.s1" target="fail"> - </transition> - <state id="s11"> - <transition target="s12"/> - </state> - <final id="s12"> - <donedata> - <content xmlns:scxml="http://www.w3.org/2005/07/scxml">foo</content> - </donedata> - </final> - </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> diff --git a/test/w3c/promela/test298.scxml b/test/w3c/promela/test298.scxml deleted file mode 100644 index 692b7da..0000000 --- a/test/w3c/promela/test298.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="Var3" location="foo.bar.baz "/> - </donedata> - </final> - </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> diff --git a/test/w3c/promela/test301.scxml b/test/w3c/promela/test301.scxml deleted file mode 100644 index f089387..0000000 --- a/test/w3c/promela/test301.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the processor should reject this document because it can't download the script. -Therefore we fail if it runs at all. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0"> - <script src="D:\foo"/> - <state id="s0"> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test302.scxml b/test/w3c/promela/test302.scxml deleted file mode 100644 index a8161f8..0000000 --- a/test/w3c/promela/test302.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a script is evaluated at load time. <conf:script> shoudl assign the value 1 to -Var1. Hence, if script is evaluated at download time, Var1 has a value in the initial state s0. -This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> - <state id="s0"> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test303.scxml b/test/w3c/promela/test303.scxml deleted file mode 100644 index bf41d39..0000000 --- a/test/w3c/promela/test303.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the -right point. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="2"/> - <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> - </onentry> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test304.scxml b/test/w3c/promela/test304.scxml deleted file mode 100644 index 1f8197a..0000000 --- a/test/w3c/promela/test304.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a variable declared by a script can be accessed like any other part of the data model --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0" initial="s0"> - <script xmlns:scxml="http://www.w3.org/2005/07/scxml">Var1 = 1</script> - <state id="s0"> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test307.scxml b/test/w3c/promela/test307.scxml deleted file mode 100644 index bde6684..0000000 --- a/test/w3c/promela/test307.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0" initial="s0" binding="late"> - <!-- with binding=late, in s0 we access a variable that isn't created until we get to s1. Then in s1 -we access a non-existent substructure of a variable. We use log tags to report the values that both operations -yield, and whether there are errors. This is a manual test, since the tester must report whether the output -is the same in the two cases --> - <state id="s0"> - <onentry> - <log label="entering s0 value of Var 1 is: " expr="Var1"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="s1"> - <log label="error in state s0" expr="_event"/> - </transition> - <transition event="foo" target="s1"> - <log label="no error in s0" expr=""/> - </transition> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <onentry> - <log label="entering s1, value of non-existent substructure of Var 1 is: " expr="Var1.bar"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="final"> - <log label="error in state s1" expr="_event"/> - </transition> - <transition event="bar" target="final"> - <log label="No error in s1" expr=""/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/promela/test309.scxml b/test/w3c/promela/test309.scxml deleted file mode 100644 index fb1525c..0000000 --- a/test/w3c/promela/test309.scxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an expression that cannot be interpreted as a boolean is treated as false --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0"> - <transition cond="return" target="fail"/> - <transition target="pass"/> - </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> diff --git a/test/w3c/promela/test310.scxml b/test/w3c/promela/test310.scxml deleted file mode 100644 index bbab164..0000000 --- a/test/w3c/promela/test310.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test of the in() predicate --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="p"> - <parallel id="p"> - <state id="s0"> - <transition cond="_x.states['s1']" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"/> - </parallel> - <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> diff --git a/test/w3c/promela/test311.scxml b/test/w3c/promela/test311.scxml deleted file mode 100644 index 8453a82..0000000 --- a/test/w3c/promela/test311.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment to a non-existent location yields an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </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> diff --git a/test/w3c/promela/test312.scxml b/test/w3c/promela/test312.scxml deleted file mode 100644 index 10bc8cf..0000000 --- a/test/w3c/promela/test312.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment with an illegal expr raises an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </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> diff --git a/test/w3c/promela/test313.scxml b/test/w3c/promela/test313.scxml deleted file mode 100644 index b16fa2f..0000000 --- a/test/w3c/promela/test313.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test. The processor is allowed to reject this doc, but if it executes it with its illegal -expression, it must raise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </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> diff --git a/test/w3c/promela/test314.scxml b/test/w3c/promela/test314.scxml deleted file mode 100644 index 9fea77d..0000000 --- a/test/w3c/promela/test314.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test because the processor is allowed to reject this document. But if it executes it, -it should not raise an error until it gets to s03 and evaluates the illegal expr --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="error.execution" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <state id="s02"> - <transition target="s03"/> - </state> - <state id="s03"> - <onentry> - <assign location="Var1" expr="return"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" 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> diff --git a/test/w3c/promela/test318.scxml b/test/w3c/promela/test318.scxml deleted file mode 100644 index 27651a4..0000000 --- a/test/w3c/promela/test318.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event stays bound during the onexit and entry into the next state --> -<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" name="machineName"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="bar"/> - <!-- _event should still be bound to 'foo' at this point --> - <assign location="Var1" expr="_event.name"/> - </onentry> - <transition cond="Var1=='foo'" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test319.scxml b/test/w3c/promela/test319.scxml deleted file mode 100644 index 2c7159e..0000000 --- a/test/w3c/promela/test319.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event is not bound before any event has been raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <if cond="_event"> - <raise event="bound"/> - <else/> - <raise event="unbound"/> - </if> - </onentry> - <transition event="unbound" target="pass"/> - <transition event="bound" target="fail"/> - </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> diff --git a/test/w3c/promela/test321.scxml b/test/w3c/promela/test321.scxml deleted file mode 100644 index 09c29dd..0000000 --- a/test/w3c/promela/test321.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="pass"/> - <transition cond="true" target="fail"/> - </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> diff --git a/test/w3c/promela/test322.scxml b/test/w3c/promela/test322.scxml deleted file mode 100644 index 10bca29..0000000 --- a/test/w3c/promela/test322.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid remains bound to the same value throught the session. this means that it can't -be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="_sessionid"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <assign location="_sessionid" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition cond="Var1==_sessionid" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test323.scxml b/test/w3c/promela/test323.scxml deleted file mode 100644 index 28952fa..0000000 --- a/test/w3c/promela/test323.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name is bound on startup --> -<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" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="_name"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="pass"/> - <transition cond="true" target="fail"/> - </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> diff --git a/test/w3c/promela/test324.scxml b/test/w3c/promela/test324.scxml deleted file mode 100644 index 12beb71..0000000 --- a/test/w3c/promela/test324.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name stays bound till the session ends. This means that it cannot be assigned to --> -<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" name="machineName"> - <state id="s0"> - <transition cond="_name == 'machineName'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_name" expr="'otherName'"/> - </onentry> - <transition cond="_name == 'machineName'" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test325.scxml b/test/w3c/promela/test325.scxml deleted file mode 100644 index 38c892f..0000000 --- a/test/w3c/promela/test325.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or -how to test that the entries in it do represent I/O processors, since the set that each implementation -supports may be different. Suggestions welcome --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="_ioprocessors"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test326.scxml b/test/w3c/promela/test326.scxml deleted file mode 100644 index c649b8d..0000000 --- a/test/w3c/promela/test326.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="_ioprocessors"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="s1"/> - <transition cond="true" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_ioprocessors" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="Var2" expr="_ioprocessors"/> - </onentry> - <transition cond="Var1==Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test329.scxml b/test/w3c/promela/test329.scxml deleted file mode 100644 index 6f6dd64..0000000 --- a/test/w3c/promela/test329.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that none of the system variables can be modified --> -<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" name="machineName"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int"/> - <data id="Var4" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- get _event bound so we can use it in s1--> - <raise event="foo"/> - <assign location="Var1" expr="_sessionid"/> - <assign location="_sessionid" expr="27"/> - </onentry> - <transition event="foo" cond="Var1==_sessionid" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="Var2" expr="_event"/> - <assign location="_event" expr="27"/> - </onentry> - <transition cond="Var2==_event" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="Var3" expr="_name"/> - <assign location="_name" expr="27"/> - </onentry> - <transition cond="Var3==_name" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="Var4" expr="_ioprocessors"/> - <assign location="_ioprocessors" expr="27"/> - </onentry> - <transition cond="Var4==_ioprocessors" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test330.scxml b/test/w3c/promela/test330.scxml deleted file mode 100644 index 20f0bee..0000000 --- a/test/w3c/promela/test330.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- check that the required fields are present in both internal and external events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="_event.name && _event.type" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="_event.name && _event.type" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test331.scxml b/test/w3c/promela/test331.scxml deleted file mode 100644 index cd85652..0000000 --- a/test/w3c/promela/test331.scxml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0" name="machineName"> - <!-- test that _event.type is set correctly for internal, platform, and external events --> - <datamodel> - <data id="Var1" type="string"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- internal event --> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="Var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var1=='internal'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <!-- this will generate an error, which is a platform event --> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error" target="s3"> - <assign location="Var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="Var1=='platform'" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <onentry> - <!-- external event --> - <send event="foo"/> - </onentry> - <transition event="foo" target="s5"> - <assign location="Var1" expr="_event.type"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s5"> - <transition cond="Var1=='external'" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test332.scxml b/test/w3c/promela/test332.scxml deleted file mode 100644 index 74ffa55..0000000 --- a/test/w3c/promela/test332.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is present in error events triggered by send errors --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="promela" name="machineName"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- this will raise an error and also store the sendid in var1 --> - <send target="baz" event="foo" idlocation="Var1"/> - </onentry> - <transition event="error" target="s1"> - <!-- get the sendid out of the error event --> - <assign location="Var2" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- make sure that the sendid in the error event matches the one generated when send executed --> - <transition cond="Var1==Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test333.scxml b/test/w3c/promela/test333.scxml deleted file mode 100644 index f26c53c..0000000 --- a/test/w3c/promela/test333.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- make sure sendid is blank in a non-error event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="promela" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="!(_event.sendid)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test335.scxml b/test/w3c/promela/test335.scxml deleted file mode 100644 index 8d0a1ad..0000000 --- a/test/w3c/promela/test335.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origin field is blank for internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="promela" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="!(_event.origin)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test336.scxml b/test/w3c/promela/test336.scxml deleted file mode 100644 index 6b502ae..0000000 --- a/test/w3c/promela/test336.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In -this case it's the same session, so if we get bar we succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" event="bar" targetexpr="_event.origin" typeexpr="_event.origintype"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="baz"/> - </onentry> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test337.scxml b/test/w3c/promela/test337.scxml deleted file mode 100644 index 64500af..0000000 --- a/test/w3c/promela/test337.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origintype is blank on internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="!(_event.origintype)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test338.scxml b/test/w3c/promela/test338.scxml deleted file mode 100644 index 46c702c..0000000 --- a/test/w3c/promela/test338.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the -case where the invoke doesn't work correctly --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke idlocation="Var1" type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela" name="machineName"> - <final id="sub0"> - <onentry> - <send target="#_parent" event="event1"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="event1" target="s1"> - <assign location="Var2" expr="_event.invokeid"/> - </transition> - <transition event="event0" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var1==Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test339.scxml b/test/w3c/promela/test339.scxml deleted file mode 100644 index b91fc5f..0000000 --- a/test/w3c/promela/test339.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> -<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" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="!(_event.invokeid)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test342.scxml b/test/w3c/promela/test342.scxml deleted file mode 100644 index ab953e5..0000000 --- a/test/w3c/promela/test342.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventexpr works and sets the name field of the resulting event --> -<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" name="machineName"> - <datamodel> - <data id="Var1" type="string" expr="'foo'"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send eventexpr="Var1"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="Var2" expr="_event.name"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="Var1==Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test343.scxml b/test/w3c/promela/test343.scxml deleted file mode 100644 index 38dac5c..0000000 --- a/test/w3c/promela/test343.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param location="foo.bar.baz " name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="!(_event.data)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test344.scxml b/test/w3c/promela/test344.scxml deleted file mode 100644 index eb3c292..0000000 --- a/test/w3c/promela/test344.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a cond expression that cannot be evaluated as a -boolean cond expression evaluates to false and causes error.execution to be raised. -In some languages, any valid expression/object can be converted to a boolean, so conf:nonBoolean will -have to be mapped onto something that produces a syntax error or something similarly invalid --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0"> - <transition cond="return" target="fail"/> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test346.scxml b/test/w3c/promela/test346.scxml deleted file mode 100644 index 5d8dc30..0000000 --- a/test/w3c/promela/test346.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any attempt to change the value of a system variable causes error.execution to be raised. -Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have -to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> -<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" name="machineName"> - <state id="s0"> - <onentry> - <assign location="_sessionid" expr="'otherName'"/> - <raise event="event1"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="_event" expr="'otherName'"/> - <raise event="event2"/> - </onentry> - <!-- throw out event1 if it's still around --> - <transition event="event1"/> - <transition event="error.execution" target="s2"/> - <!-- event1 would trigger this transition if we didn't drop it. We want this transition to have - a very general trigger to catch cases where the wrong error event was raised --> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="_ioprocessors" expr="'otherName'"/> - <raise event="event3"/> - </onentry> - <transition event="event2"/> - <transition event="error.execution" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="_name" expr="'otherName'"/> - <raise event="event4"/> - </onentry> - <transition event="event3"/> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test347.scxml b/test/w3c/promela/test347.scxml deleted file mode 100644 index a08590e..0000000 --- a/test/w3c/promela/test347.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event I/O processor works by sending events back and forth between an invoked child -and its parent process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0" initial="s01"> - <invoke id="child" type="scxml"> - <content> - <scxml initial="sub0" version="1.0" datamodel="promela" name="machineName"> - <state id="sub0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_parent" event="childToParent"/> - </onentry> - <transition event="parentToChild" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="20000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"/> - </state> - <state id="s02"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_child" event="parentToChild"/> - </onentry> - <transition event="done.invoke" target="pass"/> - <transition event="error" 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> diff --git a/test/w3c/promela/test348.scxml b/test/w3c/promela/test348.scxml deleted file mode 100644 index 57d43d9..0000000 --- a/test/w3c/promela/test348.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <!-- test that event param of send sets the name of the event --> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test349.scxml b/test/w3c/promela/test349.scxml deleted file mode 100644 index 57ac1cd..0000000 --- a/test/w3c/promela/test349.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that value in origin field can be used to send an event back to the sender --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s2"> - <assign location="Var1" expr="_event.origin"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test350.scxml b/test/w3c/promela/test350.scxml deleted file mode 100644 index d356f22..0000000 --- a/test/w3c/promela/test350.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that target value is used to decide what session to deliver the event to. A session should be -able to send an event to itself using its own session ID as the target --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="string" expr="'#_scxml_'"/> - <data id="Var2" type="string" expr="_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + Var2"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="Var1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test351.scxml b/test/w3c/promela/test351.scxml deleted file mode 100644 index 5e2a5b0..0000000 --- a/test/w3c/promela/test351.scxml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is set in event if present in send, blank otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - <data id="Var2" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" id="send1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="Var1" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="Var1=='send1'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="s3"> - <assign location="Var2" expr="_event.sendid"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="!Var2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test352.scxml b/test/w3c/promela/test352.scxml deleted file mode 100644 index a113c6a..0000000 --- a/test/w3c/promela/test352.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test the origintype is 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor' --> -<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"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="Var1" expr="_event.origintype"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test354.scxml b/test/w3c/promela/test354.scxml deleted file mode 100644 index 5a5d234..0000000 --- a/test/w3c/promela/test354.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that event.data can be populated using both namelist, param and <content> -and that correct values are used --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - <data id="Var2" type="int"/> - <data id="Var3" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="Var1"> - <param name="param1" expr="2"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="Var2" expr="_event.data.Var1"/> - <assign location="Var3" expr="_event.data.param1"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="Var2==1" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <transition cond="Var3==2" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="5000" event="timeout"/> - <send event="event2"> - <content>123</content> - </send> - </onentry> - <transition event="event2" cond="_event.data == 123" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test355.scxml b/test/w3c/promela/test355.scxml deleted file mode 100644 index 91c6ecf..0000000 --- a/test/w3c/promela/test355.scxml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <state id="s0"> - <transition target="pass"/> - </state> - <state id="s1"> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test364.scxml b/test/w3c/promela/test364.scxml deleted file mode 100644 index 585754d..0000000 --- a/test/w3c/promela/test364.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial states are entered when a compound state is entered. First we test -the 'initial' attribute, then the initial element, then default to the first child in document order. -If we get to s01111 we succeed, if any other state, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" initial="s1" version="1.0"> - <state id="s1" initial="s11p112 s11p122"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="s2"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s2"> - <initial> - <transition target="s21p112 s21p122"/> - </initial> - <transition event="timeout" target="fail"/> - <state id="s21" initial="s211"> - <state id="s211"/> - <parallel id="s21p1"> - <state id="s21p11" initial="s21p111"> - <state id="s21p111"/> - <state id="s21p112"> - <onentry> - <raise event="In-s21p112"/> - </onentry> - </state> - </state> - <state id="s21p12" initial="s21p121"> - <state id="s21p121"/> - <state id="s21p122"> - <transition event="In-s21p112" target="s3"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s3"> - <transition target="fail"/> - <state id="s31"> - <state id="s311"> - <state id="s3111"> - <transition target="pass"/> - </state> - <state id="s3112"/> - <state id="s312"/> - <state id="s32"/> - </state> - </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> diff --git a/test/w3c/promela/test372.scxml b/test/w3c/promela/test372.scxml deleted file mode 100644 index 481f348..0000000 --- a/test/w3c/promela/test372.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that entering a final state generates done.state.parentid after executing the onentry elements. -Var1 should be set to 2 (but not 3) by the time the event is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0" initial="s0final"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="done.state.s0" cond="Var1==2" target="pass"/> - <transition event="*" target="fail"/> - <final id="s0final"> - <onentry> - <assign location="Var1" expr="2"/> - </onentry> - <onexit> - <assign location="Var1" expr="3"/> - </onexit> - </final> - </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> diff --git a/test/w3c/promela/test375.scxml b/test/w3c/promela/test375.scxml deleted file mode 100644 index a78a9d1..0000000 --- a/test/w3c/promela/test375.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <raise event="event1"/> - </onentry> - <onentry> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test376.scxml b/test/w3c/promela/test376.scxml deleted file mode 100644 index d3d81bc..0000000 --- a/test/w3c/promela/test376.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send target="baz" event="event1"/> - </onentry> - <onentry> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onentry> - <transition cond="Var1==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test377.scxml b/test/w3c/promela/test377.scxml deleted file mode 100644 index d105bbe..0000000 --- a/test/w3c/promela/test377.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <state id="s0"> - <onexit> - <raise event="event1"/> - </onexit> - <onexit> - <raise event="event2"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test378.scxml b/test/w3c/promela/test378.scxml deleted file mode 100644 index e1c74c0..0000000 --- a/test/w3c/promela/test378.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onexit> - <send target="baz" event="event1"/> - </onexit> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="Var1==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test387.scxml b/test/w3c/promela/test387.scxml deleted file mode 100644 index 9983f48..0000000 --- a/test/w3c/promela/test387.scxml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default -shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we -transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s3" version="1.0" datamodel="promela"> - <state id="s0" initial="s01"> - <transition event="enteringS011" target="s4"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s01"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="enteringS011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="enteringS012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="enteringS021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="enteringS022"/> - </onentry> - </state> - </state> - </state> - <state id="s1" initial="s11"> - <transition event="enteringS122" target="pass"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s1HistShallow"> - <transition target="s11"/> - </history> - <history type="deep" id="s1HistDeep"> - <transition target="s122"/> - </history> - <state id="s11" initial="s111"> - <state id="s111"> - <onentry> - <raise event="enteringS111"/> - </onentry> - </state> - <state id="s112"> - <onentry> - <raise event="enteringS112"/> - </onentry> - </state> - </state> - <state id="s12" initial="s121"> - <state id="s121"> - <onentry> - <raise event="enteringS121"/> - </onentry> - </state> - <state id="s122"> - <onentry> - <raise event="enteringS122"/> - </onentry> - </state> - </state> - </state> - <state id="s3"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition target="s0HistShallow"/> - </state> - <state id="s4"> - <transition target="s1HistDeep"/> - </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> diff --git a/test/w3c/promela/test388.scxml b/test/w3c/promela/test388.scxml deleted file mode 100644 index 1f9971b..0000000 --- a/test/w3c/promela/test388.scxml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that history states works correctly. The counter Var1 counts how many times -we have entered s0. The initial state is s012. We then transition to s1, which transitions -to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition -to s02, which transitions to s0's shallow history state. That should have value s01, and its initial -state is s011, so we should get entering.s011, otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s012" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onentry> - <!-- the first time through, go to s1, setting a timer just in case something hangs --> - <transition event="entering.s012" cond="Var1==1" target="s1"> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </transition> - <!-- the second time, we should get entering.s012. If so, go to s2, otherwise fail --> - <transition event="entering.s012" cond="Var1==2" target="s2"/> - <transition event="entering" cond="Var1==2" target="fail"/> - <!-- the third time we should get entering-s011. If so, pass, otherwise fail --> - <transition event="entering.s011" cond="Var1==3" target="pass"/> - <transition event="entering" cond="Var1==3" target="fail"/> - <!-- if we timeout, the state machine is hung somewhere, so fail --> - <transition event="timeout" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s02"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="entering.s011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="entering.s012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="entering.s021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="entering.s022"/> - </onentry> - </state> - </state> - </state> - <state id="s1"> - <transition target="s0HistDeep"/> - </state> - <state id="s2"> - <transition target="s0HistShallow"/> - </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> diff --git a/test/w3c/promela/test396.scxml b/test/w3c/promela/test396.scxml deleted file mode 100644 index 745b7cf..0000000 --- a/test/w3c/promela/test396.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the value in _event.name matches the event name used to match against transitions --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="_event.name == 'foo'" target="pass"/> - <transition event="foo" target="fail"/> - </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> diff --git a/test/w3c/promela/test399.scxml b/test/w3c/promela/test399.scxml deleted file mode 100644 index 574d303..0000000 --- a/test/w3c/promela/test399.scxml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the event name matching works correctly, including prefix matching and the fact -that the event attribute of transition may contain multiple event designators. --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <!-- this will catch the failure case --> - <transition event="timeout" target="fail"/> - <state id="s01"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that an event can match against a transition with multiple descriptors --> - <transition event="foo bar" target="s02"/> - </state> - <state id="s02"> - <onentry> - <raise event="bar"/> - </onentry> - <!-- test that an event can match the second descriptor as well --> - <transition event="foo bar" target="s03"/> - </state> - <state id="s03"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that a prefix descriptor matches --> - <transition event="foo bar" target="s04"/> - </state> - <state id="s04"> - <onentry> - <raise event="foos"/> - </onentry> - <!-- test that only token prefixes match --> - <transition event="foo" target="fail"/> - <transition event="foos" target="s05"/> - </state> - <state id="s05"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that .* works at the end of a descriptor --> - <transition event="foo.*" target="s06"/> - </state> - <state id="s06"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that "*" works by itself --> - <transition event="*" target="pass"/> - </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> diff --git a/test/w3c/promela/test401.scxml b/test/w3c/promela/test401.scxml deleted file mode 100644 index 96f3765..0000000 --- a/test/w3c/promela/test401.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform -and operation that raises an error. Then check that the error event is processed first, even though -it was raised second --> -<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"> - <onentry> - <send event="foo"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="foo" target="fail"/> - <transition event="error" target="pass"/> - </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> diff --git a/test/w3c/promela/test402.scxml b/test/w3c/promela/test402.scxml deleted file mode 100644 index 5de6f9f..0000000 --- a/test/w3c/promela/test402.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they -are pulled off the internal queue in order, and that prefix matching works on them. --> -<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"/> - <state id="s01"> - <onentry> - <!-- the first internal event. The error will be the second, and event2 will be the third --> - <raise event="event1"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="event1" target="s02"> - <raise event="event2"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="error" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="pass"/> - <transition event="*" 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> diff --git a/test/w3c/promela/test403a.scxml b/test/w3c/promela/test403a.scxml deleted file mode 100644 index 7042e7b..0000000 --- a/test/w3c/promela/test403a.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?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> diff --git a/test/w3c/promela/test403b.scxml b/test/w3c/promela/test403b.scxml deleted file mode 100644 index 5c28ee2..0000000 --- a/test/w3c/promela/test403b.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that 'optimally enabled set' really is a set, specifically that if a transition is optimally enabled in -two different states, it is taken only once. --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <!-- this transition should never be taken because a transition in a lower state should - always be selected --> - <transition event="event1"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </transition> - <parallel id="p0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <!-- this transition will be selected by both states p0s1 and p0s2, but should be executed only once --> - <transition event="event1"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </transition> - <state id="p0s1"> - <transition event="event2" cond="Var1==1" target="pass"/> - <transition event="event2" target="fail"/> - </state> - <state id="p0s2"/> - </parallel> - </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> diff --git a/test/w3c/promela/test403c.scxml b/test/w3c/promela/test403c.scxml deleted file mode 100644 index 909d675..0000000 --- a/test/w3c/promela/test403c.scxml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test 'optimally enabled set', specifically that preemption works correctly --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <onentry> - <raise event="event1"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="event2" target="fail"/> - <transition event="timeout" target="fail"/> - <parallel id="p0"> - <state id="p0s1"> - <transition event="event1"/> - <transition event="event2"/> - </state> - <state id="p0s2"> - <transition event="event1" target="p0s1"> - <raise event="event2"/> - </transition> - </state> - <state id="p0s3"> - <!-- this transition should be blocked by the one in p0s2--> - <transition event="event1" target="fail"/> - <!-- this transition will preempt the one that p0s2 inherits - from an ancestor --> - <transition event="event2" target="s1"/> - </state> - <state id="p0s4"> - <!-- this transition never gets preempted, should fire twice --> - <transition event="*"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </transition> - </state> - </parallel> - </state> - <state id="s1"> - <transition cond="Var1==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test404.scxml b/test/w3c/promela/test404.scxml deleted file mode 100644 index ce61f1e..0000000 --- a/test/w3c/promela/test404.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties - before the executable content in the transitions. event1, event2, event3, event4 should be raised in that - order when s01p is exited --> -<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="s01p"> - <parallel id="s01p"> - <onexit> - <!-- this should be the 3rd event raised --> - <raise event="event3"/> - </onexit> - <transition target="s02"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - <state id="s01p1"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - </state> - <state id="s01p2"> - <!-- this should be the first event raised --> - <onexit> - <raise event="event1"/> - </onexit> - </state> - </parallel> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" 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> diff --git a/test/w3c/promela/test405.scxml b/test/w3c/promela/test405.scxml deleted file mode 100644 index 7b61986..0000000 --- a/test/w3c/promela/test405.scxml +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the executable content in the transitions is executed in document order after -the states are exited. event1, event2, event3, event4 should be raised in that order when the -state machine is entered --> -<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="s01p"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s01p"> - <transition event="event1" target="s02"/> - <state id="s01p1" initial="s01p11"> - <state id="s01p11"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - <transition target="s01p12"> - <!-- this should be the third event raised --> - <raise event="event3"/> - </transition> - </state> - <state id="s01p12"/> - </state> - <!-- end s01p1 --> - <state id="s01p2" initial="s01p21"> - <state id="s01p21"> - <onexit> - <!-- this should be the first event raised --> - <raise event="event1"/> - </onexit> - <transition target="s01p22"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - </state> - <state id="s01p22"/> - </state> - <!-- end s01p2 --> - </parallel> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event3" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s01 --> - <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> diff --git a/test/w3c/promela/test406.scxml b/test/w3c/promela/test406.scxml deleted file mode 100644 index b6928b6..0000000 --- a/test/w3c/promela/test406.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that states are entered in entry order (parents before children with document order used to break ties) -after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that -order when the transition in s01 is taken --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="promela"> - <state id="s0" initial="s01"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition target="s0p2"> - <!-- this should be the first event raised --> - <raise event="event1"/> - </transition> - </state> - <parallel id="s0p2"> - <transition event="event1" target="s03"/> - <state id="s01p21"> - <onentry> - <!-- third event --> - <raise event="event3"/> - </onentry> - </state> - <state id="s01p22"> - <onentry> - <!-- the fourth event --> - <raise event="event4"/> - </onentry> - </state> - <onentry> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onentry> - </parallel> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <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> diff --git a/test/w3c/promela/test407.scxml b/test/w3c/promela/test407.scxml deleted file mode 100644 index 9260c05..0000000 --- a/test/w3c/promela/test407.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that onexit handlers work. var1 should be incremented when we leave s0 --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s0"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test409.scxml b/test/w3c/promela/test409.scxml deleted file mode 100644 index 4ae15d7..0000000 --- a/test/w3c/promela/test409.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are removed from the active states list as they are exited. When s01's onexit handler -fires, s011 should not be on the active state list, so in(S011) should be false, and event1 should not -be raised. Therefore the timeout should fire to indicate success --> -<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> - <send event="timeout" delayexpr="1000"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - <state id="s01" initial="s011"> - <onexit> - <if cond="_x.states['s011']"> - <raise event="event1"/> - </if> - </onexit> - <state id="s011"> - <transition target="s02"/> - </state> - </state> - <!-- end s01 --> - <state id="s02"/> - </state> - <!-- end s0 --> - <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> diff --git a/test/w3c/promela/test411.scxml b/test/w3c/promela/test411.scxml deleted file mode 100644 index 20b119b..0000000 --- a/test/w3c/promela/test411.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are added to the active states list as they are entered and before onentry handlers -are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler -fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or -timeout also indicates failure --> -<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> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - <if cond="_x.states['s01']"> - <raise event="event1"/> - </if> - </onentry> - <transition event="timeout" target="fail"/> - <transition event="event1" target="fail"/> - <transition event="event2" target="pass"/> - <state id="s01"> - <onentry> - <if cond="_x.states['s01']"> - <raise event="event2"/> - </if> - </onentry> - </state> - </state> - <!-- end s0 --> - <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> diff --git a/test/w3c/promela/test412.scxml b/test/w3c/promela/test412.scxml deleted file mode 100644 index 564647b..0000000 --- a/test/w3c/promela/test412.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content in the <initial> transition executes after the onentry handler on the state -and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> -<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> - <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> - <raise event="event1"/> - </onentry> - <initial> - <transition target="s011"> - <raise event="event2"/> - </transition> - </initial> - <state id="s011"> - <onentry> - <raise event="event3"/> - </onentry> - <transition target="s02"/> - </state> - </state> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <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> diff --git a/test/w3c/promela/test413.scxml b/test/w3c/promela/test413.scxml deleted file mode 100644 index 2efec12..0000000 --- a/test/w3c/promela/test413.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the state machine is put into the configuration specified by the initial element, without regard -to any other defaults. we should start off in s2p111 and s2p122. the atomic -states we should not enter all have immediate transitions to failure in them --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s2p112 s2p122" version="1.0" datamodel="promela"> - <state id="s1"> - <transition target="fail"/> - </state> - <state id="s2" initial="s2p1"> - <parallel id="s2p1"> - <!-- this transition will be triggered only if we end up in an illegal configuration where we're in - either s2p112 or s2p122, but not both of them --> - <transition target="fail"/> - <state id="s2p11" initial="s2p111"> - <state id="s2p111"> - <transition target="fail"/> - </state> - <state id="s2p112"> - <transition cond="_x.states['s2p122']" target="pass"/> - </state> - </state> - <!-- end s2p11 --> - <state id="s2p12" initial="s2p121"> - <state id="s2p121"> - <transition target="fail"/> - </state> - <state id="s2p122"> - <transition cond="_x.states['s2p112']" target="pass"/> - </state> - </state> - </parallel> - </state> - <!-- end s2 --> - <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> diff --git a/test/w3c/promela/test415.scxml b/test/w3c/promela/test415.scxml deleted file mode 100644 index 64d0c18..0000000 --- a/test/w3c/promela/test415.scxml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that the state machine halts when it enters a top-level final state. Since - the initial state is a final state, this machine should halt immediately without - processing "event1" which is raised in the final state's on-entry handler. This - is a manual test since there is no platform-independent way to test that event1 - is not processed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="promela"> - <final id="final"> - <onentry> - <raise event="event1"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/promela/test416.scxml b/test/w3c/promela/test416.scxml deleted file mode 100644 index ee747f4..0000000 --- a/test/w3c/promela/test416.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the done.state.id gets generated when we enter the final state of a compound state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="promela"> - <state id="s1" initial="s11"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <transition event="done.state.s11" target="pass"/> - <state id="s111"> - <transition target="s11final"/> - </state> - <final id="s11final"/> - </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> diff --git a/test/w3c/promela/test417.scxml b/test/w3c/promela/test417.scxml deleted file mode 100644 index ed38eea..0000000 --- a/test/w3c/promela/test417.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get the done.state.id event when all of a -parallel elements children enter final states. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="promela"> - <state id="s1" initial="s1p1"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s1p1"> - <transition event="done.state.s1p1" target="pass"/> - <state id="s1p11" initial="s1p111"> - <state id="s1p111"> - <transition target="s1p11final"/> - </state> - <final id="s1p11final"/> - </state> - <state id="s1p12" initial="s1p121"> - <state id="s1p121"> - <transition target="s1p12final"/> - </state> - <final id="s1p12final"/> - </state> - </parallel> - </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> diff --git a/test/w3c/promela/test419.scxml b/test/w3c/promela/test419.scxml deleted file mode 100644 index 1a26d2f..0000000 --- a/test/w3c/promela/test419.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventless transitions take precedence over event-driven ones --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="promela"> - <state id="s1"> - <onentry> - <raise event="internalEvent"/> - <send event="externalEvent"/> - </onentry> - <transition event="*" target="fail"/> - <transition target="pass"/> - </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> diff --git a/test/w3c/promela/test421.scxml b/test/w3c/promela/test421.scxml deleted file mode 100644 index 09483d2..0000000 --- a/test/w3c/promela/test421.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that internal events take priority over external ones, and that the processor -keeps pulling off internal events until it finds one that triggers a transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="promela"> - <state id="s1" initial="s11"> - <onentry> - <send event="externalEvent"/> - <raise event="internalEvent1"/> - <raise event="internalEvent2"/> - <raise event="internalEvent3"/> - <raise event="internalEvent4"/> - </onentry> - <transition event="externalEvent" target="fail"/> - <state id="s11"> - <transition event="internalEvent3" target="s12"/> - </state> - <state id="s12"> - <transition event="internalEvent4" target="pass"/> - </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> diff --git a/test/w3c/promela/test422.scxml b/test/w3c/promela/test422.scxml deleted file mode 100644 index 12cbf2f..0000000 --- a/test/w3c/promela/test422.scxml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that at the end of a macrostep, the processor executes all invokes in states -that have been entered and not exited during the step. (The invokes are supposed to be executed -in document order, but we can test that since each invocation is separate and they may take -different amounts to time to start up.) In this case, there are three invoke statements, -in states s1, s11 and s12. Each invoked process returns an event named after its parent state. -The invokes in s1 and s12 should execute, but not the one -in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermore, when the timeout fires, var1 should equal 2.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <state id="s1" initial="s11"> - <onentry> - <send event="timeout" delayexpr="2000"/> - </onentry> - <transition event="invokeS1 invokeS12"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </transition> - <transition event="invokeS11" target="fail"/> - <transition event="timeout" cond="Var1==2" target="pass"/> - <transition event="timeout" target="fail"/> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub0" version="1.0" datamodel="promela"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="invokeS1"/> - </onentry> - <transition target="subFinal0"/> - </state> - <final id="subFinal0"/> - </scxml> - </content> - </invoke> - <state id="s11"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub1" version="1.0" datamodel="promela"> - <state id="sub1"> - <onentry> - <send target="#_parent" event="invokeS11"/> - </onentry> - <transition target="subFinal1"/> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition target="s12"/> - </state> - <state id="s12"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub2" version="1.0" datamodel="promela"> - <state id="sub2"> - <onentry> - <send target="#_parent" event="invokeS12"/> - </onentry> - <transition target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - </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> diff --git a/test/w3c/promela/test423.scxml b/test/w3c/promela/test423.scxml deleted file mode 100644 index 5527d7f..0000000 --- a/test/w3c/promela/test423.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> -<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"> - <onentry> - <send event="externalEvent1"/> - <send event="externalEvent2" delayexpr="1000"/> - <raise event="internalEvent"/> - </onentry> - <!-- in this state we should process only internalEvent --> - <transition event="internalEvent" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- in this state we ignore externalEvent1 and wait for externalEvent2 --> - <transition event="externalEvent2" target="pass"/> - <transition event="internalEvent" target="fail"/> - </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> diff --git a/test/w3c/promela/test446.txt b/test/w3c/promela/test446.txt deleted file mode 100644 index 3a26a2e..0000000 --- a/test/w3c/promela/test446.txt +++ /dev/null @@ -1 +0,0 @@ -[1,2,3]
\ No newline at end of file diff --git a/test/w3c/promela/test487.scxml b/test/w3c/promela/test487.scxml deleted file mode 100644 index 3b81768..0000000 --- a/test/w3c/promela/test487.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test illegal assignment. error.execution should be raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1" expr="return"/> - <raise event="event"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test488.scxml b/test/w3c/promela/test488.scxml deleted file mode 100644 index 78154b4..0000000 --- a/test/w3c/promela/test488.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal expr in <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param expr="return" name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="!(_event.data)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test495.scxml b/test/w3c/promela/test495.scxml deleted file mode 100644 index 2c07a91..0000000 --- a/test/w3c/promela/test495.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event i/o processor puts events in the correct queues.--> -<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"> - <onentry> - <!-- default target is external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="event2" target="#_internal" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - </onentry> - <!-- we should get the internal event first --> - <transition event="event1" target="fail"/> - <transition event="event2" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test496.scxml b/test/w3c/promela/test496.scxml deleted file mode 100644 index c3babeb..0000000 --- a/test/w3c/promela/test496.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<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"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event" target="#_scxml_foo"/> - <raise event="foo"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test500.scxml b/test/w3c/promela/test500.scxml deleted file mode 100644 index 0b046d0..0000000 --- a/test/w3c/promela/test500.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field is found inside entry for SCXML Event I/O processor --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="_ioprocessors.scxml.location"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test501.scxml b/test/w3c/promela/test501.scxml deleted file mode 100644 index ea7f1ad..0000000 --- a/test/w3c/promela/test501.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="_ioprocessors.scxml.location"/> - </datamodel> - <state id="s0"> - <onentry> - <send targetexpr="Var1" event="foo"/> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <transition event="foo" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test503.scxml b/test/w3c/promela/test503.scxml deleted file mode 100644 index 5914d69..0000000 --- a/test/w3c/promela/test503.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a targetless transition does not exit and reenter its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- how often we have exited s2 --> - <data id="Var2" type="int" expr="0"/> - <!-- how often the targetless transition in s2 has been executed --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition event="foo"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="Var2==1" target="s3"/> - <transition event="bar" target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s2 was exited only once --> - <transition cond="Var1==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test504.scxml b/test/w3c/promela/test504.scxml deleted file mode 100644 index 0aa69b4..0000000 --- a/test/w3c/promela/test504.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an external transition exits all states up the the LCCA --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- how often we have exited p --> - <data id="Var2" type="int" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="Var3" type="int" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="Var4" type="int" expr="0"/> - <!-- how often the transition for foo has been taken --> - <data id="Var5" type="int" expr="0"/> - <!-- how often we have exited s2 --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <state id="s2"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var5" expr="Var5 + 1"/> - </onexit> - <parallel id="p"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition event="foo" target="ps1"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var4" expr="Var4 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="Var4==1" target="s3"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> - </onexit> - </state> - </parallel> - </state> - <state id="s3"> - <!-- make sure that p was exited twice --> - <transition cond="Var1==2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps1 was exited twice --> - <transition cond="Var2==2" target="s5"/> - <transition target="fail"/> - </state> - <state id="s5"> - <!-- make sure that ps2 was exited twice --> - <transition cond="Var3==2" target="s6"/> - <transition target="fail"/> - </state> - <state id="s6"> - <!-- make sure that s1 was exited once --> - <transition cond="Var5==1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test505.scxml b/test/w3c/promela/test505.scxml deleted file mode 100644 index 02e18b0..0000000 --- a/test/w3c/promela/test505.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition does not exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- how often we have exited s1 --> - <data id="Var2" type="int" expr="0"/> - <!-- how often we have exited s11 --> - <data id="Var3" type="int" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="s11"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="Var3==1" target="s2"/> - <transition event="bar" target="fail"/> - <state id="s11"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </onexit> - </state> - </state> - <state id="s2"> - <!-- make sure that s1 was exited once --> - <transition cond="Var1==1" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s11 was exited twice --> - <transition cond="Var2==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test506.scxml b/test/w3c/promela/test506.scxml deleted file mode 100644 index 83b05b9..0000000 --- a/test/w3c/promela/test506.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose targets are not proper descendants of its source state -behaves like an external transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- how often we have exited s2 --> - <data id="Var2" type="int" expr="0"/> - <!-- how often we have exited s21 --> - <data id="Var3" type="int" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2" initial="s21"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="s2"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="Var3==1" target="s3"/> - <transition event="bar" target="fail"/> - <state id="s21"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </onexit> - </state> - </state> - <state id="s3"> - <!-- make sure that s2 was exited twice --> - <transition cond="Var1==2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that s21 was exited twice --> - <transition cond="Var2==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test509.scxml b/test/w3c/promela/test509.scxml deleted file mode 100644 index 009a1bc..0000000 --- a/test/w3c/promela/test509.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages -at the accessURI --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <!-- if the event was send by http and we get it, we succeed --> - <transition event="test" cond="_event.raw.search('POST') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test510.scxml b/test/w3c/promela/test510.scxml deleted file mode 100644 index 11901fa..0000000 --- a/test/w3c/promela/test510.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP messages go into external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - <!-- this creates an internal event --> - <raise event="internal"/> - </onentry> - <!-- we should get 'internal' first, then 'test' --> - <transition event="internal" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test513.txt b/test/w3c/promela/test513.txt deleted file mode 100644 index 08e9b01..0000000 --- a/test/w3c/promela/test513.txt +++ /dev/null @@ -1,16 +0,0 @@ -This is a fully manual test. You send a well formed event to the 'location' URL - specified for your SCXML interpreter and check that you get a 200 response code back. - One way of doing this, using wget, is shown below (you can use any event name you - want, but you must use '_scxmleventname' to indicate the name of the event): - -$ wget \ ---post-data='key1=value1&key2=value2' \ ---header '_scxmleventname: test' \ -<!-- URL of your processor goes here --> - ---2014-06-25 17:54:49-- http://epikur.local:8090/925c760f-2093-4054-a24c-d972d75f0dcd/basichttp -Resolving epikur.local (epikur.local)... 10.211.55.2, 10.37.129.2, 10.0.1.54, ... -Connecting to epikur.local (epikur.local)|10.211.55.2|:8090... connected. -HTTP request sent, awaiting response... 200 OK -Length: 0 [text/html] -Saving to: ‘basichttp’
\ No newline at end of file diff --git a/test/w3c/promela/test518.scxml b/test/w3c/promela/test518.scxml deleted file mode 100644 index 0962b3c..0000000 --- a/test/w3c/promela/test518.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that namelist values get encoded as POST parameters. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="2"/> - </datamodel> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" targetexpr="_ioprocessors.basichttp.location" namelist="Var1" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="test" cond="_event.raw.search(/Var1=2/) !== -1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test519.scxml b/test/w3c/promela/test519.scxml deleted file mode 100644 index f4c5e39..0000000 --- a/test/w3c/promela/test519.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <param> values get encoded as POST parameters. . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="param1" expr="1"/> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.raw.search('param1=1') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test520.scxml b/test/w3c/promela/test520.scxml deleted file mode 100644 index fba68fe..0000000 --- a/test/w3c/promela/test520.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <content> gets sent as the body of the message. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <content>this is some content</content> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed. Test for two common - ways of encoding --> - <transition event="HTTP.POST" cond="_event.raw.search(/this+is+some+content/) !== -1" target="pass"/> - <transition event="HTTP.POST" cond="_event.raw.search(/this%20is%20some%20content/) !== -1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test521.scxml b/test/w3c/promela/test521.scxml deleted file mode 100644 index f5e5859..0000000 --- a/test/w3c/promela/test521.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor raises error.communication if it cannot dispatch the event. -(To create an undispatchable event, we choose a non-existent session as target). If it raises -the error event, we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <!-- should cause an error --> - <send target="#_scxml_foo" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test522.scxml b/test/w3c/promela/test522.scxml deleted file mode 100644 index e98e1c9..0000000 --- a/test/w3c/promela/test522.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field the entry for Basic HTTP Event I/O processor can be used -to send a message to the processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="_ioprocessors.basichttp.location"/> - </onentry> - <!-- the event we receive should be called 'test', but that's not actually - required for this test. Only that the send deliver some event to us. So if - we get something other than timeout or error, we call it success --> - <transition event="timeout" target="fail"/> - <transition event="error" target="fail"/> - <transition event="*" target="pass"/> - </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> diff --git a/test/w3c/promela/test525.scxml b/test/w3c/promela/test525.scxml deleted file mode 100644 index e2ec38b..0000000 --- a/test/w3c/promela/test525.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <foreach> does a shallow copy, so that modifying the array does not change -the iteration behavior. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int[3]"> - [1,2,3] - </data> - <data id="Var2" type="int" expr="0"/> - <!-- counts the number of iterations --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var3" array="Var1"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="[].concat(Var1, [4])"/> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </foreach> - </onentry> - <transition cond="Var2==3" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test527.scxml b/test/w3c/promela/test527.scxml deleted file mode 100644 index 337c027..0000000 --- a/test/w3c/promela/test527.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that 'expr' works with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data == 'foo'" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="'foo'"/> - </donedata> - </final> - </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> diff --git a/test/w3c/promela/test528.scxml b/test/w3c/promela/test528.scxml deleted file mode 100644 index 8b79479..0000000 --- a/test/w3c/promela/test528.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal 'expr' produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="return"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="!(_event.data)" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test529.scxml b/test/w3c/promela/test529.scxml deleted file mode 100644 index 4d5347c..0000000 --- a/test/w3c/promela/test529.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that children workn with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="promela" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="_event.data == 21" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content>21</content> - </donedata> - </final> - </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> diff --git a/test/w3c/promela/test530.scxml b/test/w3c/promela/test530.scxml deleted file mode 100644 index 431802c..0000000 --- a/test/w3c/promela/test530.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <content> child is evaluated when <invoke> is. Var1 is initialized -with an integer value, then set to an scxml script in the onentry to s0. If <content> -is evaluated at the right time, we should get invoke.done, otherwise an error --> -<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"> - <datamodel> - <data id="Var1" type="int" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="Var1"> - <scxml version="1.0"> - <final/> - </scxml> - </assign> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content expr="Var1"/> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test531.scxml b/test/w3c/promela/test531.scxml deleted file mode 100644 index d2ea9a6..0000000 --- a/test/w3c/promela/test531.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that the value of the <param> _scxmleventname gets used as the name -of the raised event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="_scxmleventname" expr="'test'"/> - </send> - </onentry> - <!-- if we get an event named 'test' we succeed. Otherwise fail --> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test532.scxml b/test/w3c/promela/test532.scxml deleted file mode 100644 index 356342d..0000000 --- a/test/w3c/promela/test532.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that if _scxmleventname is not present, the name of the HTTP method is used -as the name of the resulting event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="3000" event="timeout"/> - <send targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <!-- this content will be ignored, but it's here to make sure we have a message body --> - <content>some content</content> - </send> - </onentry> - <transition event="HTTP.POST" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test533.scxml b/test/w3c/promela/test533.scxml deleted file mode 100644 index 68d9406..0000000 --- a/test/w3c/promela/test533.scxml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose source state is not compound does exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - <!-- how often we have exited p --> - <data id="Var2" type="int" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="Var3" type="int" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="Var4" type="int" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <parallel id="p"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="ps1"> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var4" expr="Var4 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="Var4==1" target="s2"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var2" expr="Var2 + 1"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var3" expr="Var3 + 1"/> - </onexit> - </state> - </parallel> - <state id="s2"> - <!-- make sure that p was exited twice --> - <transition cond="Var1==2" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that ps1 was exited twice --> - <transition cond="Var2==2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps2 was exited twice --> - <transition cond="Var3==2" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test534.scxml b/test/w3c/promela/test534.scxml deleted file mode 100644 index ec9dfc0..0000000 --- a/test/w3c/promela/test534.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="30000" event="timeout"/> - <send event="test" targetexpr="_ioprocessors.basichttp.location" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="_event.raw.search('_scxmleventname=test') !== -1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test539.txt b/test/w3c/promela/test539.txt deleted file mode 100644 index de1b0a1..0000000 --- a/test/w3c/promela/test539.txt +++ /dev/null @@ -1,4 +0,0 @@ - <books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books>
\ No newline at end of file diff --git a/test/w3c/promela/test540.txt b/test/w3c/promela/test540.txt deleted file mode 100644 index 2191239..0000000 --- a/test/w3c/promela/test540.txt +++ /dev/null @@ -1,3 +0,0 @@ -123 -4 5 -
\ No newline at end of file diff --git a/test/w3c/promela/test550.scxml b/test/w3c/promela/test550.scxml deleted file mode 100644 index fc00d05..0000000 --- a/test/w3c/promela/test550.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that expr can be used to assign a value to a var. This test uses early binding --> -<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" binding="early"> - <state id="s0"> - <transition cond="Var1==2" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" type="int" expr="2"/> - </datamodel> - </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> diff --git a/test/w3c/promela/test551.scxml b/test/w3c/promela/test551.scxml deleted file mode 100644 index 9ef6405..0000000 --- a/test/w3c/promela/test551.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that inline content can be used to assign a value to a var. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" binding="early" datamodel="promela"> - <state id="s0"> - <transition cond="Var1[1]" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" type="int[3]"> - [1,2,3] - </data> - </datamodel> - </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> diff --git a/test/w3c/promela/test552.scxml b/test/w3c/promela/test552.scxml deleted file mode 100644 index 320b42d..0000000 --- a/test/w3c/promela/test552.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that src content can be used to assign a value to a var. Edit -test552.txt to have a value that's legal for the datamodel in question --> -<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"> - <datamodel> - <data id="Var1" type="int" src="file:test552.txt"/> - </datamodel> - <state id="s0"> - <transition cond="Var1" target="pass"/> - <transition target="fail"/> - </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> diff --git a/test/w3c/promela/test552.txt b/test/w3c/promela/test552.txt deleted file mode 100644 index d8263ee..0000000 --- a/test/w3c/promela/test552.txt +++ /dev/null @@ -1 +0,0 @@ -2
\ No newline at end of file diff --git a/test/w3c/promela/test553.scxml b/test/w3c/promela/test553.scxml deleted file mode 100644 index 7f641d4..0000000 --- a/test/w3c/promela/test553.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor does not dispatch the event if evaluation -of <send>'s args causes an error.. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <!-- timeout event --> - <send event="timeout" delayexpr="1000"/> - <!-- generate an invalid namelist --> - <send event="event1" namelist=""foo"/> - </onentry> - <!-- if we get the timeout before event1, we assume that event1 hasn't been sent - We ignore the error event here because this assertion doesn't mention it --> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - </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> diff --git a/test/w3c/promela/test554.scxml b/test/w3c/promela/test554.scxml deleted file mode 100644 index 5832090..0000000 --- a/test/w3c/promela/test554.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that if the evaluation of <invoke>'s args causes an error, the -invocation is cancelled. In this test, that means that we don't get done.invoke -before the timer goes off. --> -<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"> - <onentry> - <send event="timer" delayexpr="1000"/> - </onentry> - <!-- reference an invalid namelist --> - <invoke type="http://www.w3.org/TR/scxml/" namelist=""foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="promela"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timer" target="pass"/> - <transition event="done.invoke" target="fail"/> - </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> diff --git a/test/w3c/promela/test557.txt b/test/w3c/promela/test557.txt deleted file mode 100644 index a8e51da..0000000 --- a/test/w3c/promela/test557.txt +++ /dev/null @@ -1,4 +0,0 @@ -<books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books>
\ No newline at end of file diff --git a/test/w3c/promela/test558.txt b/test/w3c/promela/test558.txt deleted file mode 100644 index bb2bcc7..0000000 --- a/test/w3c/promela/test558.txt +++ /dev/null @@ -1,3 +0,0 @@ - -this is -a string
\ No newline at end of file diff --git a/test/w3c/promela/test570.scxml b/test/w3c/promela/test570.scxml deleted file mode 100644 index 1a14640..0000000 --- a/test/w3c/promela/test570.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we generate done.state.id when all a parallel state's children are in final states --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" datamodel="promela" version="1.0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - <raise event="e1"/> - <raise event="e2"/> - </onentry> - <!-- record that we get the first done event --> - <transition event="done.state.p0s1"> - <assign location="Var1" expr="1"/> - </transition> - <!-- we should get the second done event before done.state.p0 --> - <transition event="done.state.p0s2" target="s1"/> - <transition event="timeout" target="fail"/> - <state id="p0s1" initial="p0s11"> - <state id="p0s11"> - <transition event="e1" target="p0s1final"/> - </state> - <final id="p0s1final"/> - </state> - <state id="p0s2" initial="p0s21"> - <state id="p0s21"> - <transition event="e2" target="p0s2final"/> - </state> - <final id="p0s2final"/> - </state> - </parallel> - <state id="s1"> - <!-- if we get done.state.p0, success --> - <transition event="done.state.p0" cond="Var1==1" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test576.scxml b/test/w3c/promela/test576.scxml deleted file mode 100644 index eeff4be..0000000 --- a/test/w3c/promela/test576.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and -test that both are entered. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s11p112 s11p122" datamodel="promela" version="1.0"> - <state id="s0"> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="1000" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="pass"/> - </state> - </state> - </parallel> - </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> diff --git a/test/w3c/promela/test577.scxml b/test/w3c/promela/test577.scxml deleted file mode 100644 index b5922ca..0000000 --- a/test/w3c/promela/test577.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> without target in basichttp event i/o processor -causes error.communication to get added to internal queue . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="promela" version="1.0"> - <state id="s0"> - <onentry> - <!-- sent by scxml event i/o processor, added to external queue --> - <send event="event1"/> - <!-- should put error.communication on internal queue --> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </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> diff --git a/test/w3c/promela/test579.scxml b/test/w3c/promela/test579.scxml deleted file mode 100644 index 8ed8ac1..0000000 --- a/test/w3c/promela/test579.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, -the executable content inside the <initial> transition. However the Processor MUST -execute this content only if there is no stored history. Once the history state's -parent state has been visited and exited, the default history content must not be executed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="promela"> - <state id="s0"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <initial> - <transition target="sh1"> - <raise event="event2"/> - </transition> - </initial> - <onentry> - <send delayexpr="1000" event="timeout"/> - <raise event="event1"/> - </onentry> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - <history id="sh1"> - <transition target="s01"> - <raise event="event3"/> - </transition> - </history> - <state id="s01"> - <transition event="event1" target="s02"/> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition cond="Var1==0" event="event3" target="s0"/> - <transition cond="Var1==1" event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - </state> - <state id="s2"> - <transition event="event2" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition event="event3" target="fail"/> - <transition event="timeout" target="pass"/> - </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> diff --git a/test/w3c/promela/test580.scxml b/test/w3c/promela/test580.scxml deleted file mode 100644 index 34c5ae4..0000000 --- a/test/w3c/promela/test580.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a history state never ends up part of the configuration --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="p1" datamodel="promela"> - <datamodel> - <data id="Var1" type="int" expr="0"/> - </datamodel> - <parallel id="p1"> - <onentry> - <send xmlns:scxml="http://www.w3.org/2005/07/scxml" delay="2000" event="timeout"/> - </onentry> - <state id="s0"> - <transition cond="_x.states['sh1']" target="fail"/> - <transition event="timeout" target="fail"/> - </state> - <state id="s1"> - <initial> - <transition target="sh1"/> - </initial> - <history id="sh1"> - <transition target="s11"/> - </history> - <state id="s11"> - <transition cond="_x.states['sh1']" target="fail"/> - <transition target="s12"/> - </state> - <state id="s12"/> - <transition cond="_x.states['sh1']" target="fail"/> - <transition cond="Var1==0" target="sh1"/> - <transition cond="Var1==1" target="pass"/> - <onexit> - <assign xmlns:scxml="http://www.w3.org/2005/07/scxml" location="Var1" expr="Var1 + 1"/> - </onexit> - </state> - </parallel> - <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> diff --git a/test/w3c/run_generated_test.cmake b/test/w3c/run_generated_test.cmake deleted file mode 100644 index 802acf1..0000000 --- a/test/w3c/run_generated_test.cmake +++ /dev/null @@ -1,106 +0,0 @@ -# convert given file to promela and run spin - -set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/contrib/cmake) -include("${CMAKE_MODULE_PATH}/FileInformation.cmake") - -get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME) -execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTDIR}) - - -# message(FATAL_ERROR "PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}") - -if (${TARGETLANG} STREQUAL "vhdl") - find_program(GHDL ghdl) - - execute_process(COMMAND time -p ${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl RESULT_VARIABLE CMD_RESULT) - if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}") - endif() - message(STATUS "time for transforming to VHDL machine") - - message(STATUS "${GHDL} -a ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl") - execute_process( - COMMAND time -p ${GHDL} -a ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl - WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) - if(CMD_RESULT) - message(FATAL_ERROR "Error running ghdl ${GHDL}: ${CMD_RESULT}") - endif() - message(STATUS "time for transforming to binary") - -elseif (${TARGETLANG} STREQUAL "c") - - message(STATUS "${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.c") - execute_process(COMMAND time -p ${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.c RESULT_VARIABLE CMD_RESULT) - if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}") - endif() - message(STATUS "time for transforming to c machine") - - # set(COMPILE_CMD_OBJ - # "-c" "${OUTDIR}/${TEST_FILE_NAME}.machine.c" - # "-o" "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" - # "-Ofast" "-ansi" "-m16") - # - # message(STATUS "${CC_BIN} ${COMPILE_CMD_OBJ}") - # execute_process( - # COMMAND time -p ${CC_BIN} ${COMPILE_CMD_OBJ} - # WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) - # if(CMD_RESULT) - # message(FATAL_ERROR "Error running gcc ${CC_BIN}: ${CMD_RESULT}") - # endif() - # file (SIZE "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" BINARY_SIZE) - # message("Size of compiled unit optimized for speed: ${BINARY_SIZE}") - # - # set(COMPILE_CMD_OBJ - # "-c" "${OUTDIR}/${TEST_FILE_NAME}.machine.c" - # "-o" "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" - # "-Os" "-ansi" "-m16") - # - # message(STATUS "${CC_BIN} ${COMPILE_CMD_OBJ}") - # execute_process( - # COMMAND time -p ${CC_BIN} ${COMPILE_CMD_OBJ} - # WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) - # if(CMD_RESULT) - # message(FATAL_ERROR "Error running gcc ${CC_BIN}: ${CMD_RESULT}") - # endif() - # file (SIZE "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" BINARY_SIZE) - # message("Size of compiled unit optimized for size: ${BINARY_SIZE}") - - set(COMPILE_CMD_BIN - "-o" "${OUTDIR}/${TEST_FILE_NAME}" - "-Ofast" - "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" - "-luscxml64" - "-include" "${OUTDIR}/${TEST_FILE_NAME}.machine.c" - "-I${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_PLATFORM_ID}/include" - "-I${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_PLATFORM_ID}/include/arabica" - "-I${PROJECT_SOURCE_DIR}/contrib/prebuilt/include" - "-I${CMAKE_BINARY_DIR}" - "-I${PROJECT_BINARY_DIR}" - "-I${PROJECT_SOURCE_DIR}/src" - "-Wl,-rpath,${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" - "-DAUTOINCLUDE_TEST=ON" - "${SCAFFOLDING_FOR_GENERATED_C}") - - message(STATUS "${CXX_BIN} ${COMPILE_CMD_BIN}") - execute_process( - COMMAND time -p ${CXX_BIN} ${COMPILE_CMD_BIN} - WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) - if(CMD_RESULT) - message(FATAL_ERROR "Error running g++ ${CXX_BIN}: ${CMD_RESULT}") - endif() - message(STATUS "time for transforming to binary") - - message(STATUS "${OUTDIR}/${TEST_FILE_NAME}") - execute_process( - COMMAND time -p ${OUTDIR}/${TEST_FILE_NAME} - WORKING_DIRECTORY ${OUTDIR} - RESULT_VARIABLE CMD_RESULT) - if(CMD_RESULT) - message(FATAL_ERROR "Error running generated c test: ${CMD_RESULT}") - endif() - message(STATUS "time for execution") -endif() - -# message(STATUS "${TEST_OUT}") -# file(WRITE ${OUTDIR}/${TEST_FILE_NAME}.pml.out ${TEST_OUT})
\ No newline at end of file diff --git a/test/w3c/run_minimized_flat_test.cmake b/test/w3c/run_minimized_flat_test.cmake deleted file mode 100644 index 81f9114..0000000 --- a/test/w3c/run_minimized_flat_test.cmake +++ /dev/null @@ -1,21 +0,0 @@ -# minimize SCXML document and run - -get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME) - -set(ENV{USCXML_MINIMIZE_WAIT_FOR_COMPLETION} "TRUE") -set(ENV{USCXML_MINIMIZE_RETAIN_AS_COMMENTS} "TRUE") - -execute_process(COMMAND ${USCXML_TRANSFORM_BIN} -tflat -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.flat.scxml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}") -endif() - -execute_process(COMMAND ${USCXML_TRANSFORM_BIN} -tmin -i ${OUTDIR}/${TEST_FILE_NAME}.flat.scxml -o ${OUTDIR}/${TEST_FILE_NAME}.flat.min.scxml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}") -endif() - -execute_process(COMMAND ${USCXML_W3C_TEST_BIN} ${OUTDIR}/${TEST_FILE_NAME}.flat.min.scxml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_W3C_TEST_BIN}") -endif() diff --git a/test/w3c/run_minimized_test.cmake b/test/w3c/run_minimized_test.cmake deleted file mode 100644 index 481c0e9..0000000 --- a/test/w3c/run_minimized_test.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# minimize SCXML document and run - -get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME) - -set(ENV{USCXML_MINIMIZE_WAIT_FOR_COMPLETION} "TRUE") -set(ENV{USCXML_MINIMIZE_RETAIN_AS_COMMENTS} "TRUE") - -execute_process(COMMAND ${USCXML_TRANSFORM_BIN} -tmin -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.min.scxml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}") -endif() - -execute_process(COMMAND ${USCXML_W3C_TEST_BIN} ${OUTDIR}/${TEST_FILE_NAME}.min.scxml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_W3C_TEST_BIN}") -endif() diff --git a/test/w3c/run_promela_test.cmake b/test/w3c/run_promela_test.cmake deleted file mode 100644 index 818cf66..0000000 --- a/test/w3c/run_promela_test.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# convert given file to promela and run spin - -get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME) -execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTDIR}) - -set(ENV{USCXML_PROMELA_TRANSITION_TRACE} "TRUE") -set(ENV{USCXML_PROMELA_TRANSITION_DEBUG} "TRUE") - -message(STATUS "${USCXML_TRANSFORM_BIN} -tpml -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.pml") -execute_process(COMMAND time -p ${USCXML_TRANSFORM_BIN} -tpml -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.pml RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}") -endif() -message(STATUS "time for transforming to promela") - -message(STATUS "${SPIN_BIN} -a ${OUTDIR}/${TEST_FILE_NAME}.pml") -execute_process(COMMAND time -p ${SPIN_BIN} -a ${OUTDIR}/${TEST_FILE_NAME}.pml WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running spin ${SPIN_BIN}: ${CMD_RESULT}") -endif() -message(STATUS "time for transforming to c") - -message(STATUS "${CXX_BIN} -DMEMLIM=1024 -DVECTORSZ=8192 -O2 -DXUSAFE -w -o ${OUTDIR}/pan ${OUTDIR}/pan.c") -execute_process(COMMAND time -p ${CXX_BIN} -DMEMLIM=1024 -DVECTORSZ=8192 -O2 -DXUSAFE -w -o ${OUTDIR}/pan ${OUTDIR}/pan.c WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running gcc ${CXX_BIN}: ${CMD_RESULT}") -endif() -message(STATUS "time for transforming to binary") - -message(STATUS "${OUTDIR}/pan -m10000 -a") -execute_process(COMMAND time -p ${OUTDIR}/pan -m10000 -a WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) -if(CMD_RESULT) - message(FATAL_ERROR "Error running pan: ${CMD_RESULT}") -endif() -message(STATUS "time for verification") - -# message(STATUS "${TEST_OUT}") -# file(WRITE ${OUTDIR}/${TEST_FILE_NAME}.pml.out ${TEST_OUT})
\ No newline at end of file diff --git a/test/w3c/schema/scxml-attribs.xsd b/test/w3c/schema/scxml-attribs.xsd deleted file mode 100644 index 2459592..0000000 --- a/test/w3c/schema/scxml-attribs.xsd +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema common attributes for SCXML - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The module itself does not provide the schemaLocation - and expects the driver schema to provide the - actual SchemaLocation. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This include brings in the SCXML datatypes. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:attributeGroup name="Fetchtimeout.attrib"> - <xsd:annotation> - <xsd:documentation>Used in Cache.attribs</xsd:documentation> - </xsd:annotation> - <xsd:attribute name="fetchtimeout" type="Duration.datatype"/> - </xsd:attributeGroup> - <xsd:attributeGroup name="Maxage.attrib"> - <xsd:annotation> - <xsd:documentation>Used in Cache.attribs</xsd:documentation> - </xsd:annotation> - <xsd:attribute name="maxage" type="Integer.datatype"/> - </xsd:attributeGroup> - <xsd:attributeGroup name="Maxstale.attrib"> - <xsd:annotation> - <xsd:documentation>Used in Cache attribs</xsd:documentation> - </xsd:annotation> - <xsd:attribute name="maxstale" type="Integer.datatype"/> - </xsd:attributeGroup> - - <xsd:attributeGroup name="Cache.attribs"> - <xsd:annotation> - <xsd:documentation>Cache attributes to control caching behavior</xsd:documentation> - </xsd:annotation> - <xsd:attributeGroup ref="Fetchtimeout.attrib"/> - <xsd:attributeGroup ref="Maxage.attrib"/> - <xsd:attributeGroup ref="Maxstale.attrib"/> - </xsd:attributeGroup> -</xsd:schema> diff --git a/test/w3c/schema/scxml-contentmodels.xsd b/test/w3c/schema/scxml-contentmodels.xsd deleted file mode 100644 index 2850c3a..0000000 --- a/test/w3c/schema/scxml-contentmodels.xsd +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - XML Schema content models for SCXML - * scxml.extra.content - * content - * scxml.extra.attribs - Defines SCXML shared content models. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:attributeGroup name="scxml.extra.attribs"> - <xsd:annotation> - <xsd:documentation>group allowing attributes from other namespaces</xsd:documentation> - </xsd:annotation> - <xsd:anyAttribute namespace="##other" processContents="lax"/> - </xsd:attributeGroup> - - <xsd:group name="scxml.extra.content"> - <xsd:annotation> - <xsd:documentation> - group allowing elements from other namespaces - </xsd:documentation> - </xsd:annotation> - <xsd:sequence> - <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-copyright.xsd b/test/w3c/schema/scxml-copyright.xsd deleted file mode 100644 index e322051..0000000 --- a/test/w3c/schema/scxml-copyright.xsd +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation> - This is the XML Schema for SCXML 1.0, formulated as a modular XML application - Copyright ©1998-2007 World Wide Web Consortium - (Massachusetts Institute of Technology, European Research Consortium - for Informatics and Mathematics, Keio University). - All Rights Reserved. - - Permission to use, copy, modify and distribute the SCXML Schema - modules and their accompanying xs:documentation for any purpose - and without fee is hereby granted in perpetuity, provided that the above - copyright notice and this paragraph appear in all copies. - The copyright holders make no representation about the suitability of - these XML Schema modules for any purpose. - - They are provided "as is" without expressed or implied warranty. - </xsd:documentation> - </xsd:annotation> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-core-strict.xsd b/test/w3c/schema/scxml-core-strict.xsd deleted file mode 100644 index b54cf8e..0000000 --- a/test/w3c/schema/scxml-core-strict.xsd +++ /dev/null @@ -1,425 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema core module for SCXML - * scxml - * state - * initial - * onexit - * onentry - * transition - * parallel - * final - * history - * donedata - * if - * elsif - * else - * foreach - * raise - * log - The core module defines these elements and the - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML datatypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML attributes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - - <!-- scxml --> - <xsd:attributeGroup name="scxml.scxml.attlist"> - <xsd:attribute name="initial" type="xsd:IDREFS"/> - <xsd:attribute name="name" type="xsd:NMTOKEN"/> - <xsd:attribute name="version" type="xsd:decimal" use="required" fixed="1.0"/> - <xsd:attribute name="datamodel" type="xsd:NMTOKEN" default="null" use="optional"/> - <xsd:attribute name="binding" type="Binding.datatype"/> - <xsd:attribute name="exmode" type="Exmode.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.scxml.mix"> - <xsd:choice> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="final" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="script" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.scxml.content"> - <xsd:sequence> - <xsd:group ref="scxml.scxml.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.scxml.type"> - <xsd:group ref="scxml.scxml.content"/> - <xsd:attributeGroup ref="scxml.scxml.attlist"/> - </xsd:complexType> - <xsd:element name="scxml" type="scxml.scxml.type"/> - - <!-- state --> - <xsd:attributeGroup name="scxml.state.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="initial" type="xsd:IDREFS"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.state.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="initial" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="final" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="history" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.state.content"> - <xsd:sequence> - <xsd:group ref="scxml.state.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.state.type"> - <xsd:sequence> - <xsd:group ref="scxml.state.content"/> - </xsd:sequence> - <xsd:attributeGroup ref="scxml.state.attlist"/> - <xsd:assert test="not(@initial and initial)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="if(@initial or initial) then (state | parallel) else true()" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="every $init in @initial satisfies (some $state in (.//state | .//parallel) satisfies ($state/@id = $init))" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="if (initial) then (every $targ in initial/transition/@target satisfies (some $state in (.//state | .//parallel) satisfies ($state/@id = $targ))) else true()" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="if(history/@type='shallow') then (every $targ in history/transition/@target satisfies - (some $state in (state |parallel) satisfies ($state/@id = $targ))) - else if (history/@type='deep') then (every $targ in history/transition/@target satisfies - (some $state in (.//state | .//parallel) satisfies ($state/@id = $targ))) - else true()" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="state" type="scxml.state.type"/> - - <!-- initial --> - <xsd:attributeGroup name="scxml.initial.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.initial.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="1" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.initial.type"> - <xsd:group ref="scxml.initial.content"/> - <xsd:attributeGroup ref="scxml.initial.attlist"/> - </xsd:complexType> - <xsd:element name="initial" type="scxml.initial.type"/> - - <!-- onentry --> - <xsd:attributeGroup name="scxml.onentry.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.onentry.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.onentry.type"> - <xsd:group ref="scxml.onentry.content"/> - <xsd:attributeGroup ref="scxml.onentry.attlist"/> - </xsd:complexType> - <xsd:element name="onentry" type="scxml.onentry.type"/> - - <!-- onexit --> - <xsd:attributeGroup name="scxml.onexit.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.onexit.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.onexit.type"> - <xsd:group ref="scxml.onexit.content"/> - <xsd:attributeGroup ref="scxml.onexit.attlist"/> - </xsd:complexType> - <xsd:element name="onexit" type="scxml.onexit.type"/> - - <!-- transition --> - <xsd:attributeGroup name="scxml.transition.attlist"> - <xsd:attribute name="event" type="EventTypes.datatype"/> - <xsd:attribute name="cond" type="CondLang.datatype"/> - <xsd:attribute name="target" type="xsd:IDREFS"/> - <xsd:attribute name="type" type="TransitionType.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.transition.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.transition.type"> - <xsd:group ref="scxml.transition.content"/> - <xsd:attributeGroup ref="scxml.transition.attlist"/> - <xsd:assert test="(@event or @cond or @target)" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="transition" type="scxml.transition.type"/> - - <!-- parallel --> - <xsd:attributeGroup name="scxml.parallel.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.parallel.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="history" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.parallel.content"> - <xsd:sequence> - <xsd:group ref="scxml.parallel.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.parallel.type"> - <xsd:group ref="scxml.parallel.content"/> - <xsd:attributeGroup ref="scxml.parallel.attlist"/> - <xsd:assert test="if(history/@type='shallow') then (every $targ in history/transition/@target satisfies - (some $state in (state |parallel) satisfies ($state/@id = $targ))) - else if (history/@type='deep') then (every $targ in history/transition/@target satisfies - (some $state in (.//state | .//parallel) satisfies ($state/@id = $targ))) - else true()" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="parallel" type="scxml.parallel.type"/> - - <!-- final --> - <xsd:attributeGroup name="scxml.final.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.final.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="donedata" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.final.content"> - <xsd:sequence> - <xsd:group ref="scxml.final.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.final.type"> - <xsd:group ref="scxml.final.content"/> - <xsd:attributeGroup ref="scxml.final.attlist"/> - </xsd:complexType> - <xsd:element name="final" type="scxml.final.type"/> - - <!-- history --> - <xsd:attributeGroup name="scxml.history.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="type" type="HistoryType.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.history.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="1" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.history.type"> - <xsd:group ref="scxml.history.content"/> - <xsd:attributeGroup ref="scxml.history.attlist"/> - <xsd:assert test="not(transition/@cond or transition/@event)" xpathDefaultNamespace="##targetNamespace"/> - - </xsd:complexType> - <xsd:element name="history" type="scxml.history.type"/> - - - - <!-- donedata --> - <xsd:attributeGroup name="scxml.donedata.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.donedata.content"> - <xsd:sequence> - <xsd:choice> - <xsd:element ref="content" minOccurs="1" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="1" maxOccurs="unbounded"/> - </xsd:choice> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.donedata.type"> - <xsd:group ref="scxml.donedata.content"/> - <xsd:attributeGroup ref="scxml.donedata.attlist"/> - </xsd:complexType> - <xsd:element name="donedata" type="scxml.donedata.type"/> - - <!-- if --> - <xsd:attributeGroup name="scxml.if.attlist"> - <xsd:attribute name="cond" type="CondLang.datatype" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.if.elseif.mix"> - <xsd:sequence> - <xsd:element ref="elseif" /> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.if.else.mix"> - <xsd:sequence> - <xsd:element ref="else" /> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.if.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.if.elseif.mix" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.if.else.mix" minOccurs="0" maxOccurs="1"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.if.type"> - <xsd:group ref="scxml.if.content"/> - <xsd:attributeGroup ref="scxml.if.attlist"/> - </xsd:complexType> - <xsd:element name="if" type="scxml.if.type"/> - - <!-- elseif --> - <xsd:attributeGroup name="scxml.elseif.attlist"> - <xsd:attribute name="cond" type="CondLang.datatype" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.elseif.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.elseif.content"> - <xsd:sequence> - <xsd:group ref="scxml.elseif.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.elseif.type"> - <xsd:group ref="scxml.elseif.content"/> - <xsd:attributeGroup ref="scxml.elseif.attlist"/> - </xsd:complexType> - <xsd:element name="elseif" type="scxml.elseif.type"/> - - <!-- else --> - <xsd:attributeGroup name="scxml.else.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.else.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.else.content"> - <xsd:sequence> - <xsd:group ref="scxml.else.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.else.type"> - <xsd:group ref="scxml.else.content"/> - <xsd:attributeGroup ref="scxml.else.attlist"/> - </xsd:complexType> - <xsd:element name="else" type="scxml.else.type"/> - - <!-- foreach --> - <xsd:attributeGroup name="scxml.foreach.attlist"> - <xsd:attribute name="array" type="ValueLang.datatype" use="required"/> - <xsd:attribute name="item" type="xsd:string" use="required"/> - <xsd:attribute name="index" type="xsd:string"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.foreach.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.foreach.type"> - <xsd:group ref="scxml.foreach.content"/> - <xsd:attributeGroup ref="scxml.foreach.attlist"/> - </xsd:complexType> - <xsd:element name="foreach" type="scxml.foreach.type"/> - - <!-- raise --> - <xsd:attributeGroup name="scxml.raise.attlist"> - <xsd:attribute name="event" type="xsd:NMTOKEN" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.raise.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.raise.content"> - <xsd:sequence> - <xsd:group ref="scxml.raise.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.raise.type"> - <xsd:group ref="scxml.raise.content"/> - <xsd:attributeGroup ref="scxml.raise.attlist"/> - </xsd:complexType> - <xsd:element name="raise" type="scxml.raise.type"/> - - <!-- log --> - <xsd:attributeGroup name="scxml.log.attlist"> - <xsd:attribute name="label" type="xsd:string"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.log.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.log.type"> - <xsd:group ref="scxml.log.content"/> - <xsd:attributeGroup ref="scxml.log.attlist"/> - </xsd:complexType> - <xsd:element name="log" type="scxml.log.type"/> - - -</xsd:schema> diff --git a/test/w3c/schema/scxml-data-strict.xsd b/test/w3c/schema/scxml-data-strict.xsd deleted file mode 100644 index 39a834d..0000000 --- a/test/w3c/schema/scxml-data-strict.xsd +++ /dev/null @@ -1,157 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema data module for SCXML - * datamodel - * data - * assign - * param - * script - * content - The data module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines SCXML Attribute DataTypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <!-- datamodel --> - <xsd:attributeGroup name="scxml.datamodel.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.datamodel.content"> - <xsd:sequence> - <xsd:element ref="data" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.datamodel.type"> - <xsd:group ref="scxml.datamodel.content"/> - <xsd:attributeGroup ref="scxml.datamodel.attlist"/> - </xsd:complexType> - <xsd:element name="datamodel" type="scxml.datamodel.type"/> - - <!-- data --> - <xsd:attributeGroup name="scxml.data.attlist"> - <xsd:attribute name="id" type="xsd:ID" use="required"/> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.data.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.data.type" mixed="true"> - <xsd:group ref="scxml.data.content"/> - <xsd:attributeGroup ref="scxml.data.attlist"/> - <xsd:assert test="not(@src and @expr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="if(@src or @expr) then (not(text() | *)) else true()" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="data" type="scxml.data.type"/> - - - - <!-- param --> - <xsd:attributeGroup name="scxml.param.attlist"> - <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attribute name="location" type="LocLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.param.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.param.type"> - <xsd:group ref="scxml.param.content"/> - <xsd:attributeGroup ref="scxml.param.attlist"/> - <xsd:assert test="(@expr or @location) and not(@expr and @location)" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="param" type="scxml.param.type"/> - -<!-- assign --> - <xsd:attributeGroup name="scxml.assign.attlist"> - <xsd:attribute name="location" type="LocLang.datatype" use="required"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attribute name="type" type="AssignType.datatype" default="replacechildren"/> - <xsd:attribute name="attr" type="xsd:NMTOKEN"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.assign.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.assign.type" mixed="true"> - <xsd:group ref="scxml.assign.content"/> - <xsd:attributeGroup ref="scxml.assign.attlist"/> - <xsd:assert test="(@expr or text() or *)" xpathDefaultNamespace="##targetNamespace"/> -<xsd:assert test="not(@expr and (text() | *))" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="assign" type="scxml.assign.type"/> - - -<!-- script --> - <xsd:attributeGroup name="scxml.script.attlist"> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.script.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.script.type" mixed="true"> - <xsd:group ref="scxml.script.content"/> - <xsd:attributeGroup ref="scxml.script.attlist"/> - </xsd:complexType> - <xsd:element name="script" type="scxml.script.type"/> - - <!-- content --> - <xsd:attributeGroup name="scxml.content.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - </xsd:attributeGroup> - <xsd:group name="scxml.content.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.content.type" mixed="true"> - <xsd:group ref="scxml.content.content"/> - <xsd:attributeGroup ref="scxml.content.attlist"/> - <xsd:assert test="not(@expr and (text() or *))" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="content" type="scxml.content.type"/> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-datatypes.xsd b/test/w3c/schema/scxml-datatypes.xsd deleted file mode 100644 index 7771084..0000000 --- a/test/w3c/schema/scxml-datatypes.xsd +++ /dev/null @@ -1,203 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation> - XML Schema datatypes for SCXML - - Defines containers for the SCXML datatypes, many of these - imported from other specifications and standards. - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:simpleType name="Exmode.datatype"> - <xsd:annotation> - <xsd:documentation> - Describes the processor execution mode for this document, being - either "lax" or "strict". - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKEN"> - <xsd:enumeration value="lax"/> - <xsd:enumeration value="strict"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="Binding.datatype"> - <xsd:annotation> - <xsd:documentation> - The binding type in use for the SCXML document. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKEN"> - <xsd:enumeration value="early"/> - <xsd:enumeration value="late"/> - </xsd:restriction> - </xsd:simpleType> - - - <xsd:simpleType name="HistoryType.datatype"> - <xsd:restriction base="xsd:string"> - <xsd:enumeration value="shallow"/> - <xsd:enumeration value="deep"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="TransitionType.datatype"> - <xsd:annotation> - <xsd:documentation> - The type of the transition i.e. internal or external. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKEN"> - <xsd:enumeration value="internal"/> - <xsd:enumeration value="external"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="Boolean.datatype"> - <xsd:annotation> - <xsd:documentation> - Boolean: true or false only - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKENS"> - <xsd:enumeration value="true"/> - <xsd:enumeration value="false"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="AssignType.datatype"> - <xsd:annotation> - <xsd:documentation> - The assign type that allows for precise manipulation of the - datamodel location. Types are: - replacechildren (default), - firstchild, lastchild, - previoussibling, nextsibling, - replace, delete, - addattribute - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKEN"> - <xsd:enumeration value="replacechildren"/> - <xsd:enumeration value="firstchild"/> - <xsd:enumeration value="lastchild"/> - <xsd:enumeration value="previoussibling"/> - <xsd:enumeration value="nextsibling"/> - <xsd:enumeration value="replace"/> - <xsd:enumeration value="delete"/> - <xsd:enumeration value="addattribute"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="URI.datatype"> - <xsd:annotation> - <xsd:documentation> - The xsd:anyURI type and thus URI references in SCXML - documents may contain a wide array of international - characters. Implementers should reference RFC 3987 and - the "Character Model for the World Wide Web 1.0: - Resource Identifiers" in order to provide appropriate - support for these characters in VoiceXML documents and - when processing values of this type or mapping them to - URIs. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:anyURI"/> - </xsd:simpleType> - - <xsd:simpleType name="Integer.datatype"> - <xsd:annotation> - <xsd:documentation>Non-negative integer</xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:nonNegativeInteger"/> - </xsd:simpleType> - - <xsd:simpleType name="Duration.datatype"> - <xsd:annotation> - <xsd:documentation> - Duration allowing positive values ranging from milliseconds - to days. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:string"> - <xsd:pattern value="\d*(\.\d+)?(ms|s|m|h|d)"/> - </xsd:restriction> - </xsd:simpleType> - - - <xsd:simpleType name="EventType.datatype"> - <xsd:annotation> - <xsd:documentation> - EventType is the name of an event. - Example legal values: - foo - foo.bar - foo.bar.baz - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:token"> - <xsd:pattern value="(\i|\d|\-)+(\.(\i|\d|\-)+)*"/> - </xsd:restriction> - </xsd:simpleType> - - <xsd:simpleType name="EventTypes.datatype"> - <xsd:annotation> - <xsd:documentation> - Custom datatype for the event attribute in SCXML based on xsd:token. - Example legal values: - * - foo - foo.bar - foo.* - foo.bar.* - foo bar baz - foo.bar bar.* baz.foo.* - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:token"> - <xsd:pattern value="\.?\*|(\i|\d|\-)+(\.(\i|\d|\-)+)*(\.\*)?(\s(\i|\d|\-)+(\.(\i|\d|\-)+)*(\.\*)?)*"/> - </xsd:restriction> - </xsd:simpleType> - - <!-- Defines the default CondLang datatype. --> - <xsd:simpleType name="CondLang.datatype"> - <xsd:annotation> - <xsd:documentation> - Conditional language is expression - which must evaluate to Boolean True or False. - The expression language must define In(stateID) - as a valid expression. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:string"/> - </xsd:simpleType> - - <!-- Defines the default LocLang datatype. --> - <xsd:simpleType name="LocLang.datatype"> - <xsd:annotation> - <xsd:documentation> - Location language is expression - identifying a location in the datamodel. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:string"/> - </xsd:simpleType> - - <!-- Defines the default ValueLang datatype. --> - <xsd:simpleType name="ValueLang.datatype"> - <xsd:annotation> - <xsd:documentation> - Value language is expression - return a value. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:string"/> - </xsd:simpleType> -</xsd:schema> diff --git a/test/w3c/schema/scxml-external-strict.xsd b/test/w3c/schema/scxml-external-strict.xsd deleted file mode 100644 index 6219b7b..0000000 --- a/test/w3c/schema/scxml-external-strict.xsd +++ /dev/null @@ -1,168 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema external module for SCXML - * send - * cancel - * invoke - * finalize - The external module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines SCXML Attribute DataTypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - -<!-- send --> - <xsd:attributeGroup name="scxml.send.attlist"> - <xsd:attribute name="event" type="EventType.datatype"/> - <xsd:attribute name="eventexpr" type="ValueLang.datatype"/> - <xsd:attribute name="target" type="URI.datatype"/> - <xsd:attribute name="targetexpr" type="ValueLang.datatype"/> - <xsd:attribute name="type" type="xsd:string" default="scxml"/> - <xsd:attribute name="typeexpr" type="ValueLang.datatype"/> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="idlocation" type="LocLang.datatype"/> - <xsd:attribute name="delay" type="Duration.datatype" default="0s"/> - <xsd:attribute name="delayexpr" type="ValueLang.datatype"/> - <xsd:attribute name="namelist" type="xsd:string"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.send.mix"> - <xsd:choice> - <xsd:element ref="content" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.send.content"> - <xsd:sequence> - <xsd:group ref="scxml.send.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.send.type"> - <xsd:group ref="scxml.send.content"/> - <xsd:attributeGroup ref="scxml.send.attlist"/> - <xsd:assert test="(@event or @eventexpr or content) and not(@expr and @eventexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="not(@namelist and (param | content))" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="not(@target and @targetexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="not(@id and @idlocation)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="not(@type and @typeexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="not(@delay and @delayexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test="if(@delay or @delayexpr) then (not(@target eq '_internal')) else true()" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="send" type="scxml.send.type"/> - - <!-- cancel --> - <xsd:attributeGroup name="scxml.cancel.attlist"> - <xsd:attribute name="sendid" type="xsd:IDREF"/> - <xsd:attribute name="sendidexpr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.cancel.mix"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.cancel.content"> - <xsd:sequence> - <xsd:group ref="scxml.cancel.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.cancel.type"> - <xsd:group ref="scxml.cancel.content"/> - <xsd:attributeGroup ref="scxml.cancel.attlist"/> - <xsd:assert test="(@sendid or @sendidexpr) and not(@sendid and @sendidexpr)" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="cancel" type="scxml.cancel.type"/> - - - - <!-- invoke --> - <xsd:attributeGroup name="scxml.invoke.attlist"> - <xsd:attribute name="type" type="xsd:string" default="scxml"/> - <xsd:attribute name="typeexpr" type="ValueLang.datatype"/> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attribute name="srcexpr" type="ValueLang.datatype"/> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="idlocation" type="LocLang.datatype"/> - <xsd:attribute name="namelist" type="xsd:string"/> - <xsd:attribute name="autoforward" type="Boolean.datatype" use="optional" default="false"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.invoke.mix"> - <xsd:sequence> - <xsd:element ref="content" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="finalize" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.invoke.content"> - <xsd:sequence> - <xsd:group ref="scxml.invoke.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.invoke.type"> - <xsd:group ref="scxml.invoke.content"/> - <xsd:attributeGroup ref="scxml.invoke.attlist"/> - <xsd:assert test=" not(@type and @typeexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not(@src and @srcexpr)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not((@src or @srcexpr) and (content | param))" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not(@id and @idlocation)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not(@namelist and param)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not(param and content)" xpathDefaultNamespace="##targetNamespace"/> - <xsd:assert test=" not(content[2])" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="invoke" type="scxml.invoke.type"/> - - <!-- finalize --> - <xsd:attributeGroup name="scxml.finalize.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.finalize.mix"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.finalize.content"> - <xsd:sequence> - <xsd:group ref="scxml.finalize.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.finalize.type"> - <xsd:group ref="scxml.finalize.content"/> - <xsd:attributeGroup ref="scxml.finalize.attlist"/> - <xsd:assert test=" not(send | raise)" xpathDefaultNamespace="##targetNamespace"/> - </xsd:complexType> - <xsd:element name="finalize" type="scxml.finalize.type"/> - - -</xsd:schema> diff --git a/test/w3c/schema/scxml-message.xsd b/test/w3c/schema/scxml-message.xsd deleted file mode 100644 index de4b4b8..0000000 --- a/test/w3c/schema/scxml-message.xsd +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - XML Schema for sending messages to SCXML processors. ---> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation xml:lang="en"> - XML Schema for sending messages to SCXML processors. - Version 1.0 - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd" /> - </xsd:annotation> - - <xsd:attributeGroup name="scxmlmessage.extra.attribs"> - <xsd:annotation> - <xsd:documentation> - Group allowing attributes from other namespaces - </xsd:documentation> - </xsd:annotation> - <xsd:anyAttribute namespace="##other" processContents="lax" /> - </xsd:attributeGroup> - - <xsd:attributeGroup name="scxmlmessage.message.attlist"> - <xsd:attribute name="version" type="xsd:string" fixed="1.0" use="required" /> - <xsd:attribute name="source" type="xsd:anyURI" use="required" /> - <xsd:attribute name="target" type="xsd:anyURI" use="required" /> - <xsd:attribute name="sendid" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - Non SCXML senders are not required to specify a sendid - </xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:attribute name="name" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - Defaults to "external.event" - </xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:attribute name="sourcetype" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - Defaults to "scxml" - </xsd:documentation> - </xsd:annotation> - </xsd:attribute> - <xsd:attributeGroup ref="scxmlmessage.extra.attribs" /> - </xsd:attributeGroup> - - <xsd:group name="scxmlmessage.message.content"> - <xsd:sequence> - <xsd:element ref="payload" minOccurs="1" maxOccurs="1" /> - </xsd:sequence> - </xsd:group> - - <xsd:complexType name="scxmlmessage.message.type"> - <xsd:group ref="scxmlmessage.message.content" /> - <xsd:attributeGroup ref="scxmlmessage.message.attlist" /> - </xsd:complexType> - - <xsd:element name="message" type="scxmlmessage.message.type" /> - - <xsd:attributeGroup name="scxmlmessage.payload.attlist"> - <xsd:attributeGroup ref="scxmlmessage.extra.attribs" /> - <xsd:attribute name="contenttype" type="xsd:string" use="optional"> - <xsd:annotation> - <xsd:documentation> - The mime type of the child content. - </xsd:documentation> - </xsd:annotation> - </xsd:attribute> - </xsd:attributeGroup> - - <xsd:group name="scxmlmessage.payload.content"> - <xsd:choice> - <xsd:sequence> - <xsd:element ref="property" minOccurs="0" - maxOccurs="unbounded" /> - </xsd:sequence> - <xsd:sequence> - <xsd:any namespace="##other" minOccurs="1" - maxOccurs="unbounded" processContents="lax" /> - </xsd:sequence> - </xsd:choice> - </xsd:group> - - <xsd:complexType name="scxmlmessage.payload.type"> - <xsd:group ref="scxmlmessage.payload.content" /> - <xsd:attributeGroup ref="scxmlmessage.payload.attlist" /> - </xsd:complexType> - - <xsd:element name="payload" type="scxmlmessage.payload.type" /> - - <xsd:attributeGroup name="scxmlmessage.property.attlist"> - <xsd:attribute name="name" type="xsd:string" use="required" /> - <xsd:attributeGroup ref="scxmlmessage.extra.attribs" /> - </xsd:attributeGroup> - - <xsd:group name="scxmlmessage.property.content"> - <xsd:sequence> - <xsd:element ref="hint" minOccurs="0" - maxOccurs="1" /> - <xsd:any namespace="##other" minOccurs="0" - maxOccurs="unbounded" processContents="skip" /> - </xsd:sequence> - </xsd:group> - - <xsd:complexType name="scxmlmessage.property.type" mixed="true"> - <xsd:group ref="scxmlmessage.property.content" /> - <xsd:attributeGroup ref="scxmlmessage.property.attlist" /> - </xsd:complexType> - - <xsd:element name="property" type="scxmlmessage.property.type" /> - - <xsd:element name="hint" type="xsd:string" /> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-messages.xsd b/test/w3c/schema/scxml-messages.xsd deleted file mode 100644 index 922bc57..0000000 --- a/test/w3c/schema/scxml-messages.xsd +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - XML Schema for sending messages to SCXML processors. ---> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:include schemaLocation="scxml-message.xsd"/> - - <xsd:annotation> - <xsd:documentation xml:lang="en"> - XML Schema for sending messages to SCXML processors. - Version 1.0 - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd" /> - </xsd:annotation> - - <xsd:attributeGroup name="scxmlmessages.extra.attribs"> - <xsd:annotation> - <xsd:documentation> - Group allowing attributes from other namespaces - </xsd:documentation> - </xsd:annotation> - <xsd:anyAttribute namespace="##other" processContents="lax" /> - </xsd:attributeGroup> - - <xsd:attributeGroup name="scxmlmessages.messages.attlist"> - <xsd:attribute name="version" type="xsd:string" fixed="1.0" - use="required" /> - <xsd:attributeGroup ref="scxmlmessages.extra.attribs" /> - </xsd:attributeGroup> - - <xsd:group name="scxmlmessages.messages.content"> - <xsd:sequence> - <xsd:element ref="message" minOccurs="1" - maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:group> - - <xsd:complexType name="scxmlmessages.messages.type"> - <xsd:group ref="scxmlmessages.messages.content" /> - <xsd:attributeGroup ref="scxmlmessages.messages.attlist" /> - </xsd:complexType> - - <xsd:element name="messages" type="scxmlmessages.messages.type" /> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-module-anchor.xsd b/test/w3c/schema/scxml-module-anchor.xsd deleted file mode 100644 index 65ff6cc..0000000 --- a/test/w3c/schema/scxml-module-anchor.xsd +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema anchor module for SCXML - * anchor - The anchor module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines SCXML Attribute DataTypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <!-- anchor --> - <xsd:attributeGroup name="scxml.anchor.attlist"> - <xsd:attribute name="type" type="xsd:NMTOKEN" use="required"/> - <xsd:attribute name="snapshot" type="LocLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - - <xsd:group name="scxml.anchor.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - - <xsd:complexType name="scxml.anchor.type"> - <xsd:group ref="scxml.anchor.content"/> - <xsd:attributeGroup ref="scxml.anchor.attlist"/> - </xsd:complexType> - - <xsd:element name="anchor" type="scxml.anchor.type"/> - <!-- Added this in because it should be defined here and used in the profiles. --> - <xsd:simpleType name="Anchor.datatype"> - <xsd:annotation> - <xsd:documentation> - This defines the Anchor data type to be used for the transition element. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:NMTOKEN"/> - </xsd:simpleType> -</xsd:schema> diff --git a/test/w3c/schema/scxml-module-core.xsd b/test/w3c/schema/scxml-module-core.xsd deleted file mode 100644 index 5245bc9..0000000 --- a/test/w3c/schema/scxml-module-core.xsd +++ /dev/null @@ -1,405 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema core module for SCXML - * scxml - * state - * initial - * onexit - * onentry - * transition - * parallel - * final - * history - * donedata - * if - * elsif - * else - * foreach - * raise - * log - The core module defines these elements and the - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML datatypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML attributes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - - <!-- scxml --> - <xsd:attributeGroup name="scxml.scxml.attlist"> - <xsd:attribute name="initial" type="xsd:IDREFS"/> - <xsd:attribute name="name" type="xsd:NMTOKEN"/> - <xsd:attribute name="version" type="xsd:decimal" use="required" fixed="1.0"/> - <xsd:attribute name="datamodel" type="xsd:NMTOKEN" default="null" use="optional"/> - <xsd:attribute name="binding" type="Binding.datatype"/> - <xsd:attribute name="exmode" type="Exmode.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.scxml.mix"> - <xsd:choice> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="final" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="script" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.scxml.content"> - <xsd:sequence> - <xsd:group ref="scxml.scxml.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.scxml.type"> - <xsd:group ref="scxml.scxml.content"/> - <xsd:attributeGroup ref="scxml.scxml.attlist"/> - </xsd:complexType> - <xsd:element name="scxml" type="scxml.scxml.type"/> - - <!-- state --> - <xsd:attributeGroup name="scxml.state.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="initial" type="xsd:IDREFS"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.state.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="initial" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="final" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="history" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.state.content"> - <xsd:sequence> - <xsd:group ref="scxml.state.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.state.type"> - <xsd:sequence> - <xsd:group ref="scxml.state.content"/> - </xsd:sequence> - <xsd:attributeGroup ref="scxml.state.attlist"/> - </xsd:complexType> - <xsd:element name="state" type="scxml.state.type"/> - - <!-- initial --> - <xsd:attributeGroup name="scxml.initial.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.initial.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="1" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.initial.type"> - <xsd:group ref="scxml.initial.content"/> - <xsd:attributeGroup ref="scxml.initial.attlist"/> - </xsd:complexType> - <xsd:element name="initial" type="scxml.initial.type"/> - - <!-- onentry --> - <xsd:attributeGroup name="scxml.onentry.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.onentry.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.onentry.type"> - <xsd:group ref="scxml.onentry.content"/> - <xsd:attributeGroup ref="scxml.onentry.attlist"/> - </xsd:complexType> - <xsd:element name="onentry" type="scxml.onentry.type"/> - - <!-- onexit --> - <xsd:attributeGroup name="scxml.onexit.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.onexit.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.onexit.type"> - <xsd:group ref="scxml.onexit.content"/> - <xsd:attributeGroup ref="scxml.onexit.attlist"/> - </xsd:complexType> - <xsd:element name="onexit" type="scxml.onexit.type"/> - - <!-- transition --> - <xsd:attributeGroup name="scxml.transition.attlist"> - <xsd:attribute name="event" type="EventTypes.datatype"/> - <xsd:attribute name="cond" type="CondLang.datatype"/> - <xsd:attribute name="target" type="xsd:IDREFS"/> - <xsd:attribute name="type" type="TransitionType.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.transition.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.transition.type"> - <xsd:group ref="scxml.transition.content"/> - <xsd:attributeGroup ref="scxml.transition.attlist"/> - </xsd:complexType> - <xsd:element name="transition" type="scxml.transition.type"/> - - <!-- parallel --> - <xsd:attributeGroup name="scxml.parallel.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.parallel.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="state" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="parallel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="history" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.parallel.content"> - <xsd:sequence> - <xsd:group ref="scxml.parallel.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.parallel.type"> - <xsd:group ref="scxml.parallel.content"/> - <xsd:attributeGroup ref="scxml.parallel.attlist"/> - </xsd:complexType> - <xsd:element name="parallel" type="scxml.parallel.type"/> - - <!-- final --> - <xsd:attributeGroup name="scxml.final.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.final.mix"> - <xsd:choice> - <xsd:element ref="onentry" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="onexit" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="donedata" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.final.content"> - <xsd:sequence> - <xsd:group ref="scxml.final.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.final.type"> - <xsd:group ref="scxml.final.content"/> - <xsd:attributeGroup ref="scxml.final.attlist"/> - </xsd:complexType> - <xsd:element name="final" type="scxml.final.type"/> - - <!-- history --> - <xsd:attributeGroup name="scxml.history.attlist"> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="type" type="HistoryType.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.history.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="transition" minOccurs="1" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.history.type"> - <xsd:group ref="scxml.history.content"/> - <xsd:attributeGroup ref="scxml.history.attlist"/> - </xsd:complexType> - <xsd:element name="history" type="scxml.history.type"/> - - - - <!-- donedata --> - <xsd:attributeGroup name="scxml.donedata.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.donedata.content"> - <xsd:choice> - <xsd:element ref="content" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:complexType name="scxml.donedata.type"> - <xsd:group ref="scxml.donedata.content"/> - <xsd:attributeGroup ref="scxml.donedata.attlist"/> - </xsd:complexType> - <xsd:element name="donedata" type="scxml.donedata.type"/> - - <!-- if --> - <xsd:attributeGroup name="scxml.if.attlist"> - <xsd:attribute name="cond" type="CondLang.datatype" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.if.elseif.mix"> - <xsd:sequence> - <xsd:element ref="elseif" /> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.if.else.mix"> - <xsd:sequence> - <xsd:element ref="else" /> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.if.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.if.elseif.mix" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.if.else.mix" minOccurs="0" maxOccurs="1"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.if.type"> - <xsd:group ref="scxml.if.content"/> - <xsd:attributeGroup ref="scxml.if.attlist"/> - </xsd:complexType> - <xsd:element name="if" type="scxml.if.type"/> - - <!-- elseif --> - <xsd:attributeGroup name="scxml.elseif.attlist"> - <xsd:attribute name="cond" type="CondLang.datatype" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.elseif.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.elseif.content"> - <xsd:sequence> - <xsd:group ref="scxml.elseif.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.elseif.type"> - <xsd:group ref="scxml.elseif.content"/> - <xsd:attributeGroup ref="scxml.elseif.attlist"/> - </xsd:complexType> - <xsd:element name="elseif" type="scxml.elseif.type"/> - - <!-- else --> - <xsd:attributeGroup name="scxml.else.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.else.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.else.content"> - <xsd:sequence> - <xsd:group ref="scxml.else.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.else.type"> - <xsd:group ref="scxml.else.content"/> - <xsd:attributeGroup ref="scxml.else.attlist"/> - </xsd:complexType> - <xsd:element name="else" type="scxml.else.type"/> - - <!-- foreach --> - <xsd:attributeGroup name="scxml.foreach.attlist"> - <xsd:attribute name="array" type="ValueLang.datatype" use="required"/> - <xsd:attribute name="item" type="xsd:string" use="required"/> - <xsd:attribute name="index" type="xsd:string"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.foreach.content"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.foreach.type"> - <xsd:group ref="scxml.foreach.content"/> - <xsd:attributeGroup ref="scxml.foreach.attlist"/> - </xsd:complexType> - <xsd:element name="foreach" type="scxml.foreach.type"/> - - <!-- raise --> - <xsd:attributeGroup name="scxml.raise.attlist"> - <xsd:attribute name="event" type="xsd:NMTOKEN" use="required"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.raise.mix"> - <xsd:choice> - <!-- No content for this element --> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.raise.content"> - <xsd:sequence> - <xsd:group ref="scxml.raise.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.raise.type"> - <xsd:group ref="scxml.raise.content"/> - <xsd:attributeGroup ref="scxml.raise.attlist"/> - </xsd:complexType> - <xsd:element name="raise" type="scxml.raise.type"/> - - <!-- log --> - <xsd:attributeGroup name="scxml.log.attlist"> - <xsd:attribute name="label" type="xsd:string"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.log.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.log.type"> - <xsd:group ref="scxml.log.content"/> - <xsd:attributeGroup ref="scxml.log.attlist"/> - </xsd:complexType> - <xsd:element name="log" type="scxml.log.type"/> - - -</xsd:schema> diff --git a/test/w3c/schema/scxml-module-data.xsd b/test/w3c/schema/scxml-module-data.xsd deleted file mode 100644 index ec96e71..0000000 --- a/test/w3c/schema/scxml-module-data.xsd +++ /dev/null @@ -1,151 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema data module for SCXML - * datamodel - * data - * assign - * param - * script - * content - The data module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines SCXML Attribute DataTypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <!-- datamodel --> - <xsd:attributeGroup name="scxml.datamodel.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.datamodel.content"> - <xsd:sequence> - <xsd:element ref="data" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.datamodel.type"> - <xsd:group ref="scxml.datamodel.content"/> - <xsd:attributeGroup ref="scxml.datamodel.attlist"/> - </xsd:complexType> - <xsd:element name="datamodel" type="scxml.datamodel.type"/> - - <!-- data --> - <xsd:attributeGroup name="scxml.data.attlist"> - <xsd:attribute name="id" type="xsd:ID" use="required"/> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.data.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.data.type" mixed="true"> - <xsd:group ref="scxml.data.content"/> - <xsd:attributeGroup ref="scxml.data.attlist"/> - </xsd:complexType> - <xsd:element name="data" type="scxml.data.type"/> - - - - <!-- param --> - <xsd:attributeGroup name="scxml.param.attlist"> - <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attribute name="location" type="LocLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.param.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.param.type"> - <xsd:group ref="scxml.param.content"/> - <xsd:attributeGroup ref="scxml.param.attlist"/> - </xsd:complexType> - <xsd:element name="param" type="scxml.param.type"/> - -<!-- assign --> - <xsd:attributeGroup name="scxml.assign.attlist"> - <xsd:attribute name="location" type="LocLang.datatype" use="required"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - <xsd:attribute name="type" type="AssignType.datatype" default="replacechildren"/> - <xsd:attribute name="attr" type="xsd:NMTOKEN"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.assign.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.assign.type" mixed="true"> - <xsd:group ref="scxml.assign.content"/> - <xsd:attributeGroup ref="scxml.assign.attlist"/> - </xsd:complexType> - <xsd:element name="assign" type="scxml.assign.type"/> - - -<!-- script --> - <xsd:attributeGroup name="scxml.script.attlist"> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.script.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.script.type" mixed="true"> - <xsd:group ref="scxml.script.content"/> - <xsd:attributeGroup ref="scxml.script.attlist"/> - </xsd:complexType> - <xsd:element name="script" type="scxml.script.type"/> - - <!-- content --> - <xsd:attributeGroup name="scxml.content.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - <xsd:attribute name="expr" type="ValueLang.datatype"/> - </xsd:attributeGroup> - <xsd:group name="scxml.content.content"> - <xsd:sequence> - <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.content.type" mixed="true"> - <xsd:group ref="scxml.content.content"/> - <xsd:attributeGroup ref="scxml.content.attlist"/> - </xsd:complexType> - <xsd:element name="content" type="scxml.content.type"/> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-module-external.xsd b/test/w3c/schema/scxml-module-external.xsd deleted file mode 100644 index ae6ced3..0000000 --- a/test/w3c/schema/scxml-module-external.xsd +++ /dev/null @@ -1,152 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema external module for SCXML - * send - * cancel - * invoke - * finalize - The external module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines SCXML Attribute DataTypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - -<!-- send --> - <xsd:attributeGroup name="scxml.send.attlist"> - <xsd:attribute name="event" type="EventType.datatype"/> - <xsd:attribute name="eventexpr" type="ValueLang.datatype"/> - <xsd:attribute name="target" type="URI.datatype"/> - <xsd:attribute name="targetexpr" type="ValueLang.datatype"/> - <xsd:attribute name="type" type="xsd:string" default="scxml"/> - <xsd:attribute name="typeexpr" type="ValueLang.datatype"/> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="idlocation" type="LocLang.datatype"/> - <xsd:attribute name="delay" type="Duration.datatype" default="0s"/> - <xsd:attribute name="delayexpr" type="ValueLang.datatype"/> - <xsd:attribute name="namelist" type="xsd:string"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.send.mix"> - <xsd:choice> - <xsd:element ref="content" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.send.content"> - <xsd:sequence> - <xsd:group ref="scxml.send.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.send.type"> - <xsd:group ref="scxml.send.content"/> - <xsd:attributeGroup ref="scxml.send.attlist"/> - </xsd:complexType> - <xsd:element name="send" type="scxml.send.type"/> - - <!-- cancel --> - <xsd:attributeGroup name="scxml.cancel.attlist"> - <xsd:attribute name="sendid" type="xsd:IDREF"/> - <xsd:attribute name="sendidexpr" type="ValueLang.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.cancel.mix"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.cancel.content"> - <xsd:sequence> - <xsd:group ref="scxml.cancel.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.cancel.type"> - <xsd:group ref="scxml.cancel.content"/> - <xsd:attributeGroup ref="scxml.cancel.attlist"/> - </xsd:complexType> - <xsd:element name="cancel" type="scxml.cancel.type"/> - - - - <!-- invoke --> - <xsd:attributeGroup name="scxml.invoke.attlist"> - <xsd:attribute name="type" type="xsd:string" default="scxml"/> - <xsd:attribute name="typeexpr" type="ValueLang.datatype"/> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attribute name="srcexpr" type="ValueLang.datatype"/> - <xsd:attribute name="id" type="xsd:ID"/> - <xsd:attribute name="idlocation" type="LocLang.datatype"/> - <xsd:attribute name="namelist" type="xsd:string"/> - <xsd:attribute name="autoforward" type="Boolean.datatype" use="optional" default="false"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.invoke.mix"> - <xsd:sequence> - <xsd:element ref="content" minOccurs="0" maxOccurs="1"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="finalize" minOccurs="0" maxOccurs="1"/> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.invoke.content"> - <xsd:sequence> - <xsd:group ref="scxml.invoke.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.invoke.type"> - <xsd:group ref="scxml.invoke.content"/> - <xsd:attributeGroup ref="scxml.invoke.attlist"/> - </xsd:complexType> - <xsd:element name="invoke" type="scxml.invoke.type"/> - - <!-- finalize --> - <xsd:attributeGroup name="scxml.finalize.attlist"> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.finalize.mix"> - <xsd:sequence> - <xsd:group ref="scxml.core.executablecontent"/> - </xsd:sequence> - </xsd:group> - <xsd:group name="scxml.finalize.content"> - <xsd:sequence> - <xsd:group ref="scxml.finalize.mix" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.finalize.type"> - <xsd:group ref="scxml.finalize.content"/> - <xsd:attributeGroup ref="scxml.finalize.attlist"/> - </xsd:complexType> - <xsd:element name="finalize" type="scxml.finalize.type"/> - - -</xsd:schema> diff --git a/test/w3c/schema/scxml-module-script.xsd b/test/w3c/schema/scxml-module-script.xsd deleted file mode 100644 index 5c241f2..0000000 --- a/test/w3c/schema/scxml-module-script.xsd +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema script module for SCXML - * script - The script module defines these elements and their - attributes. - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML datatypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - Includes common SCXML attributes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This module defines Common content model extensions for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:attributeGroup name="scxml.script.attlist"> - <xsd:attribute name="src" type="URI.datatype"/> - <xsd:attributeGroup ref="scxml.extra.attribs"/> - </xsd:attributeGroup> - <xsd:group name="scxml.script.content"> - <xsd:sequence> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - </xsd:sequence> - </xsd:group> - <xsd:complexType name="scxml.script.type" mixed="true"> - <xsd:group ref="scxml.script.content"/> - <xsd:attributeGroup ref="scxml.script.attlist"/> - </xsd:complexType> - <xsd:element name="script" type="scxml.script.type"/> -</xsd:schema> diff --git a/test/w3c/schema/scxml-profile-basic.xsd b/test/w3c/schema/scxml-profile-basic.xsd deleted file mode 100644 index ebd5f26..0000000 --- a/test/w3c/schema/scxml-profile-basic.xsd +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0, basic profile. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:annotation> - <xsd:documentation> - This is the Schema Driver file for SCXML 1.0, basic profile - - This schema - + sets the namespace for SCXML 1.0 basic profile - + imports external schemas (xml.xsd) - + imports SCXML common datatypes, attributes and common models - + imports schema modules - - SCXML 1.0 includes the following Modules - - * SCXML core module - - </xsd:documentation> - </xsd:annotation> - - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports brings in the common datatypes - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports brings in the common attributes - for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the common content models. - </xsd:documentation> - </xsd:annotation> - - </xsd:include> - - <xsd:include schemaLocation="scxml-module-core.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core module for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - - <!-- - Defines the CondLang datatype for this - profile. - --> - <xsd:simpleType name="CondLang.datatype"> - <xsd:annotation> - <xsd:documentation> - Conditional language only consists of In(ID) where ID is - the XML ID type identify an SCXML state. The function - must evaluate to Boolean True or False. - </xsd:documentation> - </xsd:annotation> - <xsd:restriction base="xsd:string"/> - </xsd:simpleType> - -</xsd:schema> diff --git a/test/w3c/schema/scxml-profile-ecma.xsd b/test/w3c/schema/scxml-profile-ecma.xsd deleted file mode 100644 index 852b1a2..0000000 --- a/test/w3c/schema/scxml-profile-ecma.xsd +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0, ecmascript profile. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:annotation> - <xsd:documentation> - This schema - + sets the namespace for SCXML 1.0 basic ecmascript profile - + imports external schemas (xml.xsd) - + includes SCXML common datatypes, attributes and content models - + includes schema modules - SCXML 1.0 includes the following Modules - SCXML core module - SCXML data module - SCXML script module - SCXML external module - </xsd:documentation> - </xsd:annotation> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes brings in the common data types for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes brings in the common attributes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-module-data.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes the data module for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:include schemaLocation="scxml-module-script.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes the script module for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:redefine schemaLocation="scxml-module-external.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the external module for SCXML and redefines the following. - [1] Redefines send and invoke mix group to allow - param - [2] Redefines finalize mix group to allow: - executable content - </xsd:documentation> - </xsd:annotation> - <xsd:group name="scxml.send.mix"> - <xsd:choice> - <xsd:group ref="scxml.send.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.invoke.mix"> - <xsd:choice> - <xsd:group ref="scxml.invoke.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.finalize.mix"> - <xsd:choice> - <xsd:group ref="scxml.finalize.mix"/> - <xsd:group ref="scxml.core.executablecontent"/> - </xsd:choice> - </xsd:group> - </xsd:redefine> - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes the common content models. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:redefine schemaLocation="scxml-module-core.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core module for SCXML and redefines the following. - [1] Redefines executable content to allow - send, assign, validate, cancel and script elements - [2] Redefines state and parallel mix group to allow - invoke - datamodel - [3] Redefines scxml group to allow - datamodel - script - </xsd:documentation> - </xsd:annotation> - <xsd:group name="scxml.core.executablecontent"> - <xsd:choice> - <xsd:group ref="scxml.core.executablecontent"/> - <xsd:element ref="send"/> - <xsd:element ref="assign"/> - <xsd:element ref="script"/> - <xsd:element ref="validate"/> - <xsd:element ref="cancel"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.scxml.mix"> - <xsd:choice> - <xsd:group ref="scxml.scxml.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="script" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.state.mix"> - <xsd:choice> - <xsd:group ref="scxml.state.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.parallel.mix"> - <xsd:choice> - <xsd:group ref="scxml.parallel.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.donedata.mix"> - <xsd:choice> - <xsd:group ref="scxml.donedata.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.raise.mix"> - <xsd:choice> - <xsd:group ref="scxml.raise.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - </xsd:redefine> -</xsd:schema> diff --git a/test/w3c/schema/scxml-profile-minimum.xsd b/test/w3c/schema/scxml-profile-minimum.xsd deleted file mode 100644 index fa4fb4d..0000000 --- a/test/w3c/schema/scxml-profile-minimum.xsd +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0, minimum profile. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - - <xsd:annotation> - <xsd:documentation> - This is the Schema Driver file for SCXML 1.0, minimum profile - - This schema - + sets the namespace for SCXML 1.0 minimum profile - + imports external schemas (xml.xsd) - + imports SCXML common datatypes, attributes and common models - + imports schema modules - - SCXML 1.0 includes the following Modules - - * SCXML core module - - </xsd:documentation> - </xsd:annotation> - - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports brings in the common datatypes for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports brings in the common attributes for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the common content models. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-module-core.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core module for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> -</xsd:schema> diff --git a/test/w3c/schema/scxml-profile-xpath.xsd b/test/w3c/schema/scxml-profile-xpath.xsd deleted file mode 100644 index 9206fea..0000000 --- a/test/w3c/schema/scxml-profile-xpath.xsd +++ /dev/null @@ -1,163 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0, xpath profile. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:annotation> - <xsd:documentation> - This is the Schema Driver file for SCXML 1.0, xpath profile - - This schema - + sets the namespace for SCXML 1.0 basic profile - + imports external schemas (xml.xsd) - + imports SCXML common datatypes, attributes and content models - + imports schema modules - - SCXML 1.0 includes the following Modules - SCXML core module - SCXML data module - SCXML external module - </xsd:documentation> - </xsd:annotation> - - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - <xsd:include schemaLocation="scxml-datatypes.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes brings in the common data types for SCXML - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-attribs.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes brings in the common attributes for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:redefine schemaLocation="scxml-module-data.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the data module for SCXML and redefines the following. - [1] Redefines assign attribute group to allow dataid - </xsd:documentation> - </xsd:annotation> - <xsd:attributeGroup name="scxml.assign.attlist"> - <xsd:attributeGroup ref="scxml.assign.attlist"/> - <xsd:attribute name="type" type="AssignType.datatype" default="replacechildren"/> - <xsd:attribute name="attr" type="xsd:NMTOKEN"/> - </xsd:attributeGroup> - </xsd:redefine> - - <xsd:redefine schemaLocation="scxml-module-external.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the external module for SCXML and redefines the following. - [1] Redefines send and invoke mix group to allow - param - [2] Redefines finalize mix group to allow: - executable content - </xsd:documentation> - </xsd:annotation> - <xsd:group name="scxml.send.mix"> - <xsd:choice> - <xsd:group ref="scxml.send.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.invoke.mix"> - <xsd:choice> - <xsd:group ref="scxml.invoke.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.finalize.mix"> - <xsd:choice> - <xsd:group ref="scxml.finalize.mix"/> - <xsd:group ref="scxml.core.executablecontent"/> - </xsd:choice> - </xsd:group> - </xsd:redefine> - - <xsd:include schemaLocation="scxml-contentmodels.xsd"> - <xsd:annotation> - <xsd:documentation> - This includes the common content models. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - <xsd:redefine schemaLocation="scxml-module-core.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core module for SCXML and redefines the following. - [1] Redefines executable content to allow - send, assign, validate, and cancel elements - [2] Redefines state and parallel mix group to allow - invoke - datamodel - [3] Redefines scxml group to allow - datamodel - </xsd:documentation> - </xsd:annotation> - <xsd:group name="scxml.core.executablecontent"> - <xsd:choice> - <xsd:group ref="scxml.core.executablecontent"/> - <xsd:element ref="send"/> - <xsd:element ref="assign"/> - <xsd:element ref="validate"/> - <xsd:element ref="cancel"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.scxml.mix"> - <xsd:choice> - <xsd:group ref="scxml.scxml.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.state.mix"> - <xsd:choice> - <xsd:group ref="scxml.state.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.parallel.mix"> - <xsd:choice> - <xsd:group ref="scxml.parallel.mix"/> - <xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.donedata.mix"> - <xsd:choice> - <xsd:group ref="scxml.donedata.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - <xsd:group name="scxml.raise.mix"> - <xsd:choice> - <xsd:group ref="scxml.raise.mix"/> - <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/> - </xsd:choice> - </xsd:group> - </xsd:redefine> -</xsd:schema> diff --git a/test/w3c/schema/scxml-strict.xsd b/test/w3c/schema/scxml-strict.xsd deleted file mode 100644 index fa89851..0000000 --- a/test/w3c/schema/scxml-strict.xsd +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver file for SCXML 1.0. - - This schema: - + sets the namespace for SCXML 1.0 - + imports external schemas (xml.xsd) - + imports SCXML common datatypes, attributes and content models - + imports modular schemas - - SCXML 1.0 includes: - + SCXML core constructs - + SCXML executable content - + SCXML data model and manipulation - + SCXML external communications - - This schema is permissive such that it accomodates all - datamodels, but validating documents may contain markup that - is ignored in certain datamodels. - </xsd:documentation> - </xsd:annotation> - - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - -<xsd:include schemaLocation="scxml-core-strict.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core elements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-data-strict.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the data modelelements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-external-strict.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the external communications elements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - -<!-- the various elements of executable content are defined in the relevant modules. -This gathers them up into a single type --> - <xsd:group name="scxml.core.executablecontent"> - <xsd:choice> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="raise"/> - <xsd:element ref="if"/> - <xsd:element ref="foreach"/> - <xsd:element ref="send"/> - <xsd:element ref="script"/> - <xsd:element ref="assign"/> - <xsd:element ref="log"/> - <xsd:element ref="cancel"/> - </xsd:choice> - </xsd:group> - -</xsd:schema> diff --git a/test/w3c/schema/scxml.xsd b/test/w3c/schema/scxml.xsd deleted file mode 100644 index fb69c75..0000000 --- a/test/w3c/schema/scxml.xsd +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/2005/07/scxml" - xmlns="http://www.w3.org/2005/07/scxml" - elementFormDefault="qualified"> - - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver for SCXML 1.0. - Please use this namespace for SCXML 1.0 elements: - - "http://www.w3.org/2005/07/scxml" - - </xsd:documentation> - <xsd:documentation source="scxml-copyright.xsd"/> - </xsd:annotation> - <xsd:annotation> - <xsd:documentation> - This is the XML Schema driver file for SCXML 1.0. - - This schema: - + sets the namespace for SCXML 1.0 - + imports external schemas (xml.xsd) - + imports SCXML common datatypes, attributes and content models - + imports modular schemas - - SCXML 1.0 includes: - + SCXML core constructs - + SCXML executable content - + SCXML data model and manipulation - + SCXML external communications - - This schema is permissive such that it accomodates all - datamodels, but validating documents may contain markup that - is ignored in certain datamodels. - </xsd:documentation> - </xsd:annotation> - - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"> - <xsd:annotation> - <xsd:documentation> - This import brings in the XML namespace attributes - The XML attributes are used by various modules. - </xsd:documentation> - </xsd:annotation> - </xsd:import> - -<xsd:include schemaLocation="scxml-module-core.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the core elements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-module-data.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the data modelelements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - - <xsd:include schemaLocation="scxml-module-external.xsd"> - <xsd:annotation> - <xsd:documentation> - This imports the external communications elements for SCXML. - </xsd:documentation> - </xsd:annotation> - </xsd:include> - -<!-- the various elements of executable content are defined in the relevant modules. -This gathers them up into a single type --> - <xsd:group name="scxml.core.executablecontent"> - <xsd:choice> - <xsd:group ref="scxml.extra.content" minOccurs="0" maxOccurs="unbounded"/> - <xsd:element ref="raise"/> - <xsd:element ref="if"/> - <xsd:element ref="foreach"/> - <xsd:element ref="send"/> - <xsd:element ref="script"/> - <xsd:element ref="assign"/> - <xsd:element ref="log"/> - <xsd:element ref="cancel"/> - </xsd:choice> - </xsd:group> - -</xsd:schema> diff --git a/test/w3c/schema/xml.xsd b/test/w3c/schema/xml.xsd deleted file mode 100644 index 069c970..0000000 --- a/test/w3c/schema/xml.xsd +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version='1.0'?> -<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" > -<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> - - <xs:annotation> - <xs:documentation> - See http://www.w3.org/XML/1998/namespace.html and - http://www.w3.org/TR/REC-xml for information about this namespace. - - This schema document describes the XML namespace, in a form - suitable for import by other schema documents. - - Note that local names in this namespace are intended to be defined - only by the World Wide Web Consortium or its subgroups. The - following names are currently defined in this namespace and should - not be used with conflicting semantics by any Working Group, - specification, or document instance: - - base (as an attribute name): denotes an attribute whose value - provides a URI to be used as the base for interpreting any - relative URIs in the scope of the element on which it - appears; its value is inherited. This name is reserved - by virtue of its definition in the XML Base specification. - - lang (as an attribute name): denotes an attribute whose value - is a language code for the natural language of the content of - any element; its value is inherited. This name is reserved - by virtue of its definition in the XML specification. - - space (as an attribute name): denotes an attribute whose - value is a keyword indicating what whitespace processing - discipline is intended for the content of the element; its - value is inherited. This name is reserved by virtue of its - definition in the XML specification. - - Father (in any context at all): denotes Jon Bosak, the chair of - the original XML Working Group. This name is reserved by - the following decision of the W3C XML Plenary and - XML Coordination groups: - - In appreciation for his vision, leadership and dedication - the W3C XML Plenary on this 10th day of February, 2000 - reserves for Jon Bosak in perpetuity the XML name - xml:Father - </xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>This schema defines attributes and an attribute group - suitable for use by - schemas wishing to allow xml:base, xml:lang or xml:space attributes - on elements they define. - - To enable this, such a schema must import this schema - for the XML namespace, e.g. as follows: - <schema . . .> - . . . - <import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> - - Subsequently, qualified reference to any of the attributes - or the group defined below will have the desired effect, e.g. - - <type . . .> - . . . - <attributeGroup ref="xml:specialAttrs"/> - - will define a type which will schema-validate an instance - element with any of those attributes</xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation>In keeping with the XML Schema WG's standard versioning - policy, this schema document will persist at - http://www.w3.org/2001/03/xml.xsd. - At the date of issue it can also be found at - xml.xsd. - The schema document at that URI may however change in the future, - in order to remain compatible with the latest version of XML Schema - itself. In other words, if the XML Schema namespace changes, the version - of this document at - xml.xsd will change - accordingly; the version at - http://www.w3.org/2001/03/xml.xsd will not change. - </xs:documentation> - </xs:annotation> - - <xs:attribute name="lang" type="xs:language"> - <xs:annotation> - <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter - codes as the enumerated possible values . . .</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attribute name="space" default="preserve"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="default"/> - <xs:enumeration value="preserve"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attribute name="base" type="xs:anyURI"> - <xs:annotation> - <xs:documentation>See http://www.w3.org/TR/xmlbase/ for - information about this attribute.</xs:documentation> - </xs:annotation> - </xs:attribute> - - <xs:attributeGroup name="specialAttrs"> - <xs:attribute ref="xml:base"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute ref="xml:space"/> - </xs:attributeGroup> - -</xs:schema> diff --git a/test/w3c/txml/robots.txt b/test/w3c/txml/robots.txt index 9be2782..fdd7340 100644 --- a/test/w3c/txml/robots.txt +++ b/test/w3c/txml/robots.txt @@ -1,7 +1,7 @@ # # robots.txt for http://www.w3.org/ # -# $Id: robots.txt,v 1.67 2014-06-25 13:06:01 ddavis Exp $ +# $Id: robots.txt,v 1.74 2016/02/11 20:30:26 gerald Exp $ # # For use by search.w3.org @@ -80,6 +80,7 @@ Disallow: /2004/08/W3CTalks Disallow: /2007/11/Talks/search Disallow: /People/all/ Disallow: /RDF/Validator/ARPServlet +Disallow: /RDF/Validator/rdfval Disallow: /2003/03/Translations/byLanguage Disallow: /2003/03/Translations/byTechnology Disallow: /2005/11/Translations/Query @@ -92,5 +93,11 @@ Disallow: /2006/02/chartergen Disallow: /2004/01/pp-impl Disallow: /Consortium/supporters Disallow: /2007/08/pyRdfa/ +Disallow: /2012/pyRdfa/extract Disallow: /WAI/PF/comments/ Disallow: /participate/conferences.xml +Disallow: /scripts/ +Disallow: /2005/01/yacker/ +Disallow: /2005/01/yacker? +Disallow: /2003/09/nschecker? + diff --git a/test/w3c/txml/test240.txml b/test/w3c/txml/test240.txml index bf669d4..16f7bbe 100644 --- a/test/w3c/txml/test240.txml +++ b/test/w3c/txml/test240.txml @@ -52,7 +52,7 @@ should run correctly. --> <transition conf:idVal="1=1" target="subFinal2"> <send target="#_parent" event="success"/> </transition> - <transition target="subFinal1"> + <transition target="subFinal2"> <send target="#_parent" event="failure"/> </transition> </state> diff --git a/test/w3c/txml/test252.txml b/test/w3c/txml/test252.txml index 40c36cb..ba43543 100644 --- a/test/w3c/txml/test252.txml +++ b/test/w3c/txml/test252.txml @@ -9,7 +9,7 @@ timeout indicates success. --> <state id="s0" initial="s01"> <onentry> - <send event="timeout" delay="2s"/> + <send event="timeout" conf:delay="1"/> </onentry> <transition event="timeout" conf:targetpass=""/> @@ -26,7 +26,7 @@ timeout indicates success. --> <scxml initial="sub0" version="1.0" conf:datamodel="" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"> <state id="sub0"> <onentry> - <send event="timeout" delay="2s"/> + <send event="timeout" conf:delay=".5"/> </onentry> <transition event="timeout" target="subFinal"/> <onexit> diff --git a/test/w3c/txml/test278.txml b/test/w3c/txml/test278.txml index 3f64f25..a5680ef 100644 --- a/test/w3c/txml/test278.txml +++ b/test/w3c/txml/test278.txml @@ -1,5 +1,5 @@ -<scxml initial="s0" version="1.0" datamodel="ecmascript" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"> +<scxml initial="s0" version="1.0" conf:datamodel="ecmascript" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"> <!-- test that a variable can be accessed from a state that is outside its lexical scope --> diff --git a/test/w3c/txml/test330.txml b/test/w3c/txml/test330.txml index ca13451..d960ffa 100644 --- a/test/w3c/txml/test330.txml +++ b/test/w3c/txml/test330.txml @@ -2,7 +2,7 @@ <!-- check that the required fields are present in both internal and external events --> -<scxml initial="s0" conf:datamodel="" name="machineName" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"> +<scxml version="1.0" initial="s0" conf:datamodel="" name="machineName" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"> <state id="s0"> <onentry> diff --git a/test/w3c/txml/test579.txml b/test/w3c/txml/test579.txml index 9b1ef2a..5595469 100644 --- a/test/w3c/txml/test579.txml +++ b/test/w3c/txml/test579.txml @@ -41,8 +41,8 @@ parent state has been visited and exited, the default history content must not b </state> <state id="s03"> - <transition conf:idVal="1==0" event="event3" target="s0"/> - <transition conf:idVal="1==1" event="event1" target="s2"/> + <transition conf:idVal="1=0" event="event3" target="s0"/> + <transition conf:idVal="1=1" event="event1" target="s2"/> <transition event="*" conf:targetfail=""/> </state> </state> diff --git a/test/w3c/txml/test580.txml b/test/w3c/txml/test580.txml index 4fddd39..47c394f 100644 --- a/test/w3c/txml/test580.txml +++ b/test/w3c/txml/test580.txml @@ -36,8 +36,8 @@ <state id="s12"/> <transition conf:inState="sh1" conf:targetfail=""/> - <transition conf:idVal="1==0" target="sh1"/> - <transition conf:idVal="1==1" conf:targetpass=""/> + <transition conf:idVal="1=0" target="sh1"/> + <transition conf:idVal="1=1" conf:targetpass=""/> <onexit> <conf:incrementID id="1"/> </onexit> diff --git a/test/w3c/update-txml.sh b/test/w3c/update-txml.sh index 4a6f7fd..bcdc4c6 100755 --- a/test/w3c/update-txml.sh +++ b/test/w3c/update-txml.sh @@ -1,4 +1,9 @@ #!/bin/bash + +# +# Download / update all SCXML IRP tests from the W3C +# + wget -rl1 -Atxml,txt,xsl http://www.w3.org/Voice/2013/scxml-irp/ # wget http://www.w3.org/Voice/2013/scxml-irp/545/test545.txml @@ -12,5 +17,5 @@ find ./www.w3.org -name "*.xsl" -exec cp {} . \; rm -rf www.w3.org # sed -ie "s/<xsl:attribute name=\"delayexpr\">Var<xsl:value-of select=\".\" \/><\/xsl:attribute>/<xsl:attribute name=\"delayexpr\">(Var<xsl:value-of select=\".\" \/>.slice(0, - 1)) * 50 + 'ms'<\/xsl:attribute>/" confEcma.xsl -# sed -ie "s/<xsl:attribute name=\"delayexpr\">'<xsl:value-of select=\".\"\/>s'<\/xsl:attribute>/<xsl:attribute name=\"delayexpr\">'<xsl:value-of select=\". * 50\"\/>ms'<\/xsl:attribute>/" confEcma.xsl +# sed -ie "s/<xsl:attribute name=\"delayexpr\">'<xsl:value-of select=\".\"\/>s'<\/xsl:attribute>/<xsl:attribute name=\"delayexpr\">'<xsl:value-of select=\". * 50\"\/>ms'<\/xsl:attribute>/" confEcma.xsls #rm confEcma.xsle diff --git a/test/w3c/xpath/test144.scxml b/test/w3c/xpath/test144.scxml deleted file mode 100644 index c4220d5..0000000 --- a/test/w3c/xpath/test144.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that events are inserted into the queue in the order in which they are raised. If -foo occurs before bar, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition event="foo" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test147.scxml b/test/w3c/xpath/test147.scxml deleted file mode 100644 index 8b889fd..0000000 --- a/test/w3c/xpath/test147.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the first clause that evaluates to true - and only that clause - is executed. -Only one event should be raised, and it should be bar --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="0>1"> - <raise event="foo"/> - <assign location="$Var1" expr="$Var1 + 1"/> - <elseif cond="true()"/> - <raise event="bar"/> - <assign location="$Var1" expr="$Var1 + 1"/> - <else/> - <raise event="baz"/> - <assign location="$Var1" expr="$Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bar" cond="$Var1/text() =1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test148.scxml b/test/w3c/xpath/test148.scxml deleted file mode 100644 index f643b10..0000000 --- a/test/w3c/xpath/test148.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the else clause executes if <if> and <elseif> evaluate to false. -Baz should be the only event generated by the <if>. bat is raised to catch the case where the <else> clause -fails and baz is not generated, i.e. it makes sure that the test doesn't hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="0>1"> - <raise event="foo"/> - <assign location="$Var1" expr="$Var1 + 1"/> - <elseif cond="0>1"/> - <raise event="bar"/> - <assign location="$Var1" expr="$Var1 + 1"/> - <else/> - <raise event="baz"/> - <assign location="$Var1" expr="$Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="baz" cond="$Var1/text() =1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test149.scxml b/test/w3c/xpath/test149.scxml deleted file mode 100644 index b87b162..0000000 --- a/test/w3c/xpath/test149.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that neither if clause executes, so that bat is the only event raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <if cond="0>1"> - <raise event="foo"/> - <assign location="$Var1" expr="$Var1 + 1"/> - <elseif cond="0>1"/> - <raise event="bar"/> - <assign location="$Var1" expr="$Var1 + 1"/> - </if> - <raise event="bat"/> - </onentry> - <transition event="bat" cond="$Var1/text() =0" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test150.scxml b/test/w3c/xpath/test150.scxml deleted file mode 100644 index 4d817e3..0000000 --- a/test/w3c/xpath/test150.scxml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - <data id="Var3"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="Var1" index="Var2" array="$Var3/*"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="Var4" index="Var5" array="$Var3/*"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var4 is bound --> - <transition cond="$Var4/* or $Var4/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test151.scxml b/test/w3c/xpath/test151.scxml deleted file mode 100644 index 6509635..0000000 --- a/test/w3c/xpath/test151.scxml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach causes a new variable to be declared if 'item' doesn't already exist. Also -test that it will use an existing var if it does exist. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - <data id="Var3"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- first use declared variables --> - <foreach item="Var1" index="Var2" array="$Var3/*"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <onentry> - <!-- now use undeclared variables --> - <foreach item="Var4" index="Var5" array="$Var3/*"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="fail"/> - <transition event="*" target="s2"/> - </state> - <state id="s2"> - <!-- check that var5 is bound --> - <transition cond="$Var5/* or $Var5/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test152.scxml b/test/w3c/xpath/test152.scxml deleted file mode 100644 index 8b8ddec..0000000 --- a/test/w3c/xpath/test152.scxml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an illegal array or item value causes error.execution and results in executable content -not being executed. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="0"/> - <data id="Var2"/> - <data id="Var3"/> - <data id="Var4" expr="("/> - <data id="Var5"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - <state id="s0"> - <onentry> - <!-- invalid array, legal item --> - <foreach item="Var2" index="Var3" array="$Var4/text()"> - <assign location="$Var1" expr="$Var1 + 1"/> - </foreach> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <!-- illegal item, legal array --> - <foreach item=".." index="Var3" array="$Var5/*"> - <assign location="$Var1" expr="$Var1 + 1"/> - </foreach> - <raise event="bar"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="bar" target="fail"/> - </state> - <state id="s2"> - <!-- check that var1 has its original value (so executable content never got executed --> - <transition cond="$Var1/text() =0" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test153.scxml b/test/w3c/xpath/test153.scxml deleted file mode 100644 index f1bd4ad..0000000 --- a/test/w3c/xpath/test153.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach goes over the array in the right order. since the array contains 1 2 3, we compare the current -value with the previous value, which is stored in var1. The current value should always be larger. If -it ever isn't, set Var4 to 0, indicating failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- contains the previous value --> - <data id="Var2"/> - <!-- the item which will contain the current value --> - <data id="Var3"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - <data id="Var4" expr="1"/> - <!-- 1 if success, 0 if failure --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="$Var3/*"> - <if cond="$Var1/text() <$Var2/text() "> - <assign location="$Var1" expr="$Var2/text()"/> - <else/> - <!-- values are out of order, record failure --> - <assign location="$Var4" expr="0"/> - </if> - </foreach> - </onentry> - <!-- check that var1 has its original value --> - <transition cond="$Var4/text() =0" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test155.scxml b/test/w3c/xpath/test155.scxml deleted file mode 100644 index 3e1a102..0000000 --- a/test/w3c/xpath/test155.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach executes the executable content once for each item in the list '(1,2,3)'. The executable -content sums the items into var1 so it should be 6 at the end --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <data id="Var2"/> - <data id="Var3"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="$Var3/*"> - <assign location="$Var1" expr="$Var1/text() + $Var2/text()"/> - </foreach> - </onentry> - <transition cond="$Var1/text() =6" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test156.scxml b/test/w3c/xpath/test156.scxml deleted file mode 100644 index efee3ac..0000000 --- a/test/w3c/xpath/test156.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an error causes the foreach to stop execution. The second piece of executable content -should cause an error, so var1 should be incremented only once --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <data id="Var2"/> - <data id="Var3"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var2" array="$Var3/*"> - <assign location="$Var1" expr="$Var1 + 1"/> - <!-- assign an illegal value to a non-existent var --> - <assign location="$Var5" expr="!1"/> - </foreach> - </onentry> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test158.scxml b/test/w3c/xpath/test158.scxml deleted file mode 100644 index db267d1..0000000 --- a/test/w3c/xpath/test158.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content executes in document order. if event1 occurs then event2, succeed, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test159.scxml b/test/w3c/xpath/test159.scxml deleted file mode 100644 index 80ef9fc..0000000 --- a/test/w3c/xpath/test159.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any error raised by an element of executable content causes all subsequent elements to be skipped. -The send tag will raise an error so var1 should not be incremented. If it is fail, otherwise succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="thisWillFail" target="baz"/> - <assign location="$Var1" expr="$Var1 + 1"/> - </onentry> - <transition cond="$Var1/text() =1" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test172.scxml b/test/w3c/xpath/test172.scxml deleted file mode 100644 index becc3d7..0000000 --- a/test/w3c/xpath/test172.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that eventexpr uses the current value of var1, not its initial value --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="'event1'"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="'event2'"/> - <send eventexpr="$Var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test173.scxml b/test/w3c/xpath/test173.scxml deleted file mode 100644 index ce743c8..0000000 --- a/test/w3c/xpath/test173.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that targetexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="'#_internal'"/> - <send targetexpr="$Var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test174.scxml b/test/w3c/xpath/test174.scxml deleted file mode 100644 index f9b39b6..0000000 --- a/test/w3c/xpath/test174.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typeexpr uses the current value of var1, not its initial value -(If it uses the initial value, it will generate an error. If it uses the current value, event1 will be raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="27"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'"/> - <send typeexpr="$Var1" event="event1"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test175.scxml b/test/w3c/xpath/test175.scxml deleted file mode 100644 index 2b69238..0000000 --- a/test/w3c/xpath/test175.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayexpr uses the current value of var1, not its initial value -(If it uses the initial value, event2 will be generated first, before event1. If it uses the current value, -event1 will be raised first. Succeed if event1 occurs before event2, otherwise fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="'0s'"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="'1s'"/> - <send delayexpr="$Var1" event="event2"/> - <send delayexpr="'.5s'" event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="event2" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test176.scxml b/test/w3c/xpath/test176.scxml deleted file mode 100644 index 87b26bc..0000000 --- a/test/w3c/xpath/test176.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <param> uses the current value of var1, not its initial value. If the value of -aParam in event1 is 2 so that var2 gets set to 2, success, otherwise failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="2"/> - <send event="event1"> - <param name="aParam" expr="$Var1/text()"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="$Var2" expr="$_event/data/data[@id='aParam']/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var2/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test178.scxml b/test/w3c/xpath/test178.scxml deleted file mode 100644 index b82a6b4..0000000 --- a/test/w3c/xpath/test178.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that multiple key/value pairs are included, even when the keys are the same. -This is a manual test. The tester must look at the log output and verify that both -keys are there. (This test uses the SCXML Event I/O processor, which is the only -one that all platforms must support. It does not specify the message format, so -we cannot test _event.raw directly. Therefore we print it out for visual -inspection.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="Var1" expr="2"/> - <param name="Var1" expr="3"/> - </send> - </onentry> - <transition event="event1" target="final"> - <log label="_event " expr="$_event/raw/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <final id="final"/> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test179.scxml b/test/w3c/xpath/test179.scxml deleted file mode 100644 index 6d71865..0000000 --- a/test/w3c/xpath/test179.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <content> can be used to populate body of a message --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="event1"> - <content>123</content> - </send> - </onentry> - <transition event="event1" cond="$_event/data = 123" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test183.scxml b/test/w3c/xpath/test183.scxml deleted file mode 100644 index a706fbc..0000000 --- a/test/w3c/xpath/test183.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> stores the value of the sendid in idlocation. If it does, -var1 has a value and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" idlocation="$Var1"/> - </onentry> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test185.scxml b/test/w3c/xpath/test185.scxml deleted file mode 100644 index 6afa988..0000000 --- a/test/w3c/xpath/test185.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> respects the delay specification. If it does, event1 arrives before event2 - and we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="event2" delayexpr="'1s'"/> - <send event="event1"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test186.scxml b/test/w3c/xpath/test186.scxml deleted file mode 100644 index cb8ad3e..0000000 --- a/test/w3c/xpath/test186.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that <send> evals its args when it is evaluated, not when the delay interval expires and the -message is actually sent. If it does, aParam will have the value of 1 (even though var1 has been incremented -in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1" delayexpr="'1s'"> - <param name="aParam" expr="$Var1/text()"/> - </send> - <assign location="$Var1" expr="2"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="$Var2" expr="$_event/data/data[@id='aParam']/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var2/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test187.scxml b/test/w3c/xpath/test187.scxml deleted file mode 100644 index 4f715e2..0000000 --- a/test/w3c/xpath/test187.scxml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that delayed <send> is not sent if the sending session terminates. In this case, -a subscript is invoked which sends the event childToParent delayed by 1 second, and then terminates. The -parent session, should not receive childToParent. If it does, we fail. Otherwise the -10 sec timer expires and we pass --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delayexpr="'1s'"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- exit before the delayed send can execute --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent" delayexpr="'.5s'"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="fail"/> - <transition event="timeout" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test189.scxml b/test/w3c/xpath/test189.scxml deleted file mode 100644 index b923ae9..0000000 --- a/test/w3c/xpath/test189.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_internal as a target of <send> puts the event on the internal queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <!-- goes to the external queue --> - <send event="event2"/> - <!-- to the internal queue --> - <send event="event1" target="#_internal"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="pass"/> - <transition event="event2" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test190.scxml b/test/w3c/xpath/test190.scxml deleted file mode 100644 index cb1607b..0000000 --- a/test/w3c/xpath/test190.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does, -event1 will be processed before event2, because event1 is added to the internal queue while event2 is -added to the external queue (event though event2 is generated first). we have to make sure that event2 -is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="'#_scxml_'"/> - <data id="Var2" expr="$_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="concat($Var1, $Var2)"/> - <!-- goes to the external queue --> - <send event="event2" targetexpr="$Var1"/> - <!-- to the internal queue --> - <raise event="event1"/> - <!-- this should get added to the external queue after event2 --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <!-- now check that we get event2 and not a timeout --> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test191.scxml b/test/w3c/xpath/test191.scxml deleted file mode 100644 index d6844b7..0000000 --- a/test/w3c/xpath/test191.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_parent works as a target of <send> . a subscript is invoked and sends the event -childToParent to its parent session (ths session) using #_parent as the target. If we get this event, we -pass, otherwise we fail. The timer insures that some event is generated and that the test does not hang. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- send an event to the parent session using #_parent as the target --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - </onentry> - <transition target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test192.scxml b/test/w3c/xpath/test192.scxml deleted file mode 100644 index ea4567c..0000000 --- a/test/w3c/xpath/test192.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that #_invokeid works as a target of <send> . A child script is invoked and sends us -childToParent once its running. Then we send it the event parentToChild using its invokeid as the target. -If it receives this event, it sends sends the event eventReceived to its parent session (ths session). -If we get this event, we pass, otherwise the child script eventually times out sends invoke.done and we fail. -We also set a timeout in this process to make sure the test doesn't hang --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="scxml" id="invokedChild"> - <content> - <!-- let the parent session know we're running by sending childToParent, then wait for parentToChild. - If we get it, send eventReceived. If we don't we eventually time out --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="childToParent" target="#_parent"/> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="parentToChild" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <send target="#_invokedChild" event="parentToChild"/> - </transition> - </state> - <state id="s02"> - <transition event="eventReceived" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test193.scxml b/test/w3c/xpath/test193.scxml deleted file mode 100644 index eaef6fc..0000000 --- a/test/w3c/xpath/test193.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that omitting target and targetexpr of <send> when using the -SCXML event i/o processor puts the event on the external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="internal"/> - <!-- this should put event1 in the external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="event1" target="fail"/> - <transition event="internal" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="timeout" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test194.scxml b/test/w3c/xpath/test194.scxml deleted file mode 100644 index fe5a3ef..0000000 --- a/test/w3c/xpath/test194.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that specifying an illegal target for <send> causes the event error.execution to be raised. If it does, -we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <!-- should cause an error --> - <send target="baz" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test198.scxml b/test/w3c/xpath/test198.scxml deleted file mode 100644 index 5e2f1da..0000000 --- a/test/w3c/xpath/test198.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that if type is not provided <send> uses the scxml event i/o processor. The only way to tell -what processor was used is to look at the origintype of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" cond="$_event/origintype/text() = 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test199.scxml b/test/w3c/xpath/test199.scxml deleted file mode 100644 index b37334d..0000000 --- a/test/w3c/xpath/test199.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that using an invalid send type results in error.execution --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send type="27" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test200.scxml b/test/w3c/xpath/test200.scxml deleted file mode 100644 index 1a09a57..0000000 --- a/test/w3c/xpath/test200.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the scxml event i/o processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test201.scxml b/test/w3c/xpath/test201.scxml deleted file mode 100644 index d025c93..0000000 --- a/test/w3c/xpath/test201.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor supports the basic http event i/o processor. This is an optional -test since platforms are not required to support basic http event i/o --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" event="event1"/> - <send event="timeout"/> - </onentry> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test205.scxml b/test/w3c/xpath/test205.scxml deleted file mode 100644 index 73722a7..0000000 --- a/test/w3c/xpath/test205.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor doesn't change the message. We can't test that it never does this, but -at least we can check that the event name and included data are the same as we sent. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="aParam" expr="1"/> - </send> - <send event="timeout"/> - </onentry> - <transition event="event1" target="s1"> - <assign location="$Var1" expr="$_event/data/data[@id='aParam']/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test207.scxml b/test/w3c/xpath/test207.scxml deleted file mode 100644 index c33760b..0000000 --- a/test/w3c/xpath/test207.scxml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that that we can't cancel an event in another session. We invoke a child process. It notifies -us when it has generated a delayed event with sendid foo. We try to cancel foo. The child process sends us event - event success if the event is not cancelled, event fail otherwise. This doesn't test that there is absolutely no way to cancel an event -raised in another session, but the spec doesn't define any way to refer to an event in another process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <invoke type="scxml"> - <content> - <!-- when invoked, we raise a delayed event1 with sendid 'foo' and notify our parent. Then we wait. - If event1 occurs, the parent hasn't succeeded in canceling it and we return pass. If event2 occurs - it means event1 was canceled (because event2 is delayed longer than event1) and we return 'fail'. --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="event1" id="foo" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <send target="#_parent" event="childToParent"/> - </onentry> - <transition event="event1" target="subFinal"> - <send target="#_parent" event="pass"/> - </transition> - <transition event="*" target="subFinal"> - <send target="#_parent" event="fail"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childToParent" target="s02"> - <cancel sendid="foo"/> - </transition> - </state> - <state id="s02"> - <transition event="pass" target="pass"/> - <transition event="fail" target="fail"/> - <transition event="timeout" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test208.scxml b/test/w3c/xpath/test208.scxml deleted file mode 100644 index 7ca578b..0000000 --- a/test/w3c/xpath/test208.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that cancel works. We cancel delayed event1. If cancel works, we get event2 first and pass. If -we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send id="foo" event="event1" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <cancel sendid="foo"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test210.scxml b/test/w3c/xpath/test210.scxml deleted file mode 100644 index 50161c8..0000000 --- a/test/w3c/xpath/test210.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that sendidexpr works with cancel. If it takes the most recent value of var1, it should cancel -delayed event1. Thus we get event2 first and pass. If we get event1 or an error first, cancel didn't work and we fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="'bar'"/> - </datamodel> - <state id="s0"> - <onentry> - <send id="foo" event="event1" delayexpr="'1s'"/> - <send event="event2" delayexpr="'1.5s'"/> - <assign location="$Var1" expr="'foo'"/> - <cancel sendidexpr="$Var1"/> - </onentry> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test215.scxml b/test/w3c/xpath/test215.scxml deleted file mode 100644 index 0863ae9..0000000 --- a/test/w3c/xpath/test215.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that typexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (test215sub1.scxml is not of type 'foo', even if the platform supports foo as a type). If -the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - <assign location="$Var1" expr="'http://www.w3.org/TR/scxml/'"/> - </onentry> - <invoke typeexpr="$Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" datamodel="xpath" version="1.0"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test216.scxml b/test/w3c/xpath/test216.scxml deleted file mode 100644 index 950be98..0000000 --- a/test/w3c/xpath/test216.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that srcexpr is evaluated at runtime. If the original value of var1 is used, the invocation -will fail (assuming that there is no script named 'foo'). If -the runtime value is used, the invocation will succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="'foo'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - <assign location="$Var1" expr="'file:test216sub1.scxml'"/> - </onentry> - <invoke srcexpr="$Var1" type="http://www.w3.org/TR/scxml"/> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test216sub1.scxml b/test/w3c/xpath/test216sub1.scxml deleted file mode 100644 index dc240cb..0000000 --- a/test/w3c/xpath/test216sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="xpath"> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test220.scxml b/test/w3c/xpath/test220.scxml deleted file mode 100644 index 1c048f9..0000000 --- a/test/w3c/xpath/test220.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the scxml type is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="5s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test223.scxml b/test/w3c/xpath/test223.scxml deleted file mode 100644 index 7112015..0000000 --- a/test/w3c/xpath/test223.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that idlocation is supported. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="$Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test224.scxml b/test/w3c/xpath/test224.scxml deleted file mode 100644 index 9998ffd..0000000 --- a/test/w3c/xpath/test224.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id has the form stateid.platformid. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - <data id="Var2" expr="'s0.'"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="$Var1"> - <content> - <!-- when invoked, terminate returning done.invoke. This proves that the invocation succeeded. --> - <scxml version="1.0" initial="subFinal" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond=" contains($Var1, $Var2)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test225.scxml b/test/w3c/xpath/test225.scxml deleted file mode 100644 index 4a3e842..0000000 --- a/test/w3c/xpath/test225.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the automatically generated id is unique, we call invoke twice and compare the ids. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="$Var1"> - <content> - <scxml initial="subFinal1" version="1.0" datamodel="xpath"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <invoke type="http://www.w3.org/TR/scxml/" idlocation="$Var2"> - <content> - <scxml initial="subFinal2" version="1.0" datamodel="xpath"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="*" target="s1"/> - </state> - <state id="s1"> - <transition cond="$Var1/text()=$Var2/text()" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test226.scxml b/test/w3c/xpath/test226.scxml deleted file mode 100644 index b0914fc..0000000 --- a/test/w3c/xpath/test226.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is basically just a test that invoke works correctly and that you can pass data -to the invoked process. If the invoked session finds aParam==1, it exits, signalling -success. otherwise it will hang and the timeout in this doc signifies failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test226sub1.scxml"> - <param name="Var1" expr="1"/> - </invoke> - <transition event="varBound" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test226sub1.scxml b/test/w3c/xpath/test226sub1.scxml deleted file mode 100644 index e7776e7..0000000 --- a/test/w3c/xpath/test226sub1.scxml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, if var1 has a value notify parent. Then terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="final"> - <send target="#_parent" event="varBound"/> - </transition> - <transition target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test228.scxml b/test/w3c/xpath/test228.scxml deleted file mode 100644 index 01ed242..0000000 --- a/test/w3c/xpath/test228.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the invokeid is included in events returned from the invoked process. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="s1"> - <assign location="$Var1" expr="$_event/invokeid/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1='foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test229.scxml b/test/w3c/xpath/test229.scxml deleted file mode 100644 index c2c847c..0000000 --- a/test/w3c/xpath/test229.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that autofoward works. If the child process receives back a copy of the -childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note -that this doc is not required to process that event explicitly. It should be forwarded in any case.) Otherwise -it eventually times out and the done.invoke signals failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. - If it is forwarded back to us, send - eventReceived to signal success and terminate. - Otherwise wait for timer to expire and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <send target="#_parent" event="eventReceived"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="childToParent"/> - <transition event="eventReceived" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test230.scxml b/test/w3c/xpath/test230.scxml deleted file mode 100644 index 49c1aae..0000000 --- a/test/w3c/xpath/test230.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a manual test that an autofowarded event has the same fields and values as the original event. -the child process sends the parent process an event which is forwarded back to it. -Both the parent and child process print out the contents of the event. The tester -must check if they are the same and report his result. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" autoforward="true"> - <content> - <!-- when invoked, send childToParent to parent. If it is forwarded back to us, print out its - fields and terminate. --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childToParent"/> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="childToParent" target="subFinal"> - <log label="name is " expr="$_event/name/text()"/> - <log label="type is " expr="$_event/type/text()"/> - <log label="sendid is " expr="$_event/sendid/text()"/> - <log label="origin is " expr="$_event/origin/text()"/> - <log label="origintype is " expr="$_event/origintype/text()"/> - <log label="invokeid is " expr="$_event/invokeid/text()"/> - <log label="data is " expr="$_event/data/text()"/> - </transition> - <transition event="*" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout" target="final"/> - <state id="s01"> - <transition event="childToParent" target="s02"> - <log label="name is " expr="$_event/name/text()"/> - <log label="type is " expr="$_event/type/text()"/> - <log label="sendid is " expr="$_event/sendid/text()"/> - <log label="origin is " expr="$_event/origin/text()"/> - <log label="origintype is " expr="$_event/origintype/text()"/> - <log label="invokeid is " expr="$_event/invokeid/text()"/> - <log label="data is " expr="$_event/data/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <!-- wait till we get the done event to ensure that the child process has time to print out its results --> - <transition event="done.invoke" target="final"/> - </state> - </state> - <final id="final"/> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test232.scxml b/test/w3c/xpath/test232.scxml deleted file mode 100644 index c413e7b..0000000 --- a/test/w3c/xpath/test232.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a parent process can receive multiple events from a child process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent1"/> - <send target="#_parent" event="childToParent2"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent1" target="s02"/> - </state> - <state id="s02"> - <transition event="childToParent2" target="s03"/> - </state> - <state id="s03"> - <transition event="done.invoke" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test233.scxml b/test/w3c/xpath/test233.scxml deleted file mode 100644 index 254d28e..0000000 --- a/test/w3c/xpath/test233.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that finalize markup runs before the event is processed. The invoked process will -return 2 in _event.data.aParam, so that new value should be in force when we select -the transtitions. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="$Var1" expr="$_event/data/data[@id='aParam']/text()"/> - </finalize> - </invoke> - <transition event="childToParent" cond="$Var1/text() =2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test234.scxml b/test/w3c/xpath/test234.scxml deleted file mode 100644 index 9f00f7a..0000000 --- a/test/w3c/xpath/test234.scxml +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that only finalize markup in the invoking state runs. the first invoked process will -return 2 in _event.data.aParam, while second invoked process sleeps without returning any events. -Only the first finalize should execute. So when we get to s1 var1 should have value 2 but -var2 should still be set to 1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - <data id="Var2" expr="1"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send event="timeout" delay="3s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="p01"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="xpath"> - <final id="subFinal1"> - <onentry> - <send target="#_parent" event="childToParent"> - <param name="aParam" expr="2"/> - </send> - </onentry> - </final> - </scxml> - </content> - <finalize> - <assign location="$Var1" expr="$_event/data/data[@id='aParam']/text()"/> - </finalize> - </invoke> - <transition event="childToParent" cond="$Var1/text() =2" target="s1"/> - <transition event="childToParent" target="fail"/> - </state> - <state id="p02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="sub0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - <finalize> - <assign location="$Var2" expr="$_event/data/data[@id='aParam']/text()"/> - </finalize> - </invoke> - </state> - </parallel> - <state id="s1"> - <transition cond="$Var2/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test235.scxml b/test/w3c/xpath/test235.scxml deleted file mode 100644 index 4d2a8a9..0000000 --- a/test/w3c/xpath/test235.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event has the right id. the invoked child terminates immediately -and should generate done.invoke.foo --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" id="foo"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke.foo" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test236.scxml b/test/w3c/xpath/test236.scxml deleted file mode 100644 index 2d66643..0000000 --- a/test/w3c/xpath/test236.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that done.invoke.id event is the last event we receive. the invoked process sends childToParent -in the exit handler of its final state. We should get it before the done.invoke, and we should get no -events after the done.invoke. Hence timeout indicates success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </final> - </scxml> - </content> - </invoke> - <transition event="childToParent" target="s1"/> - <transition event="done.invoke" target="fail"/> - </state> - <state id="s1"> - <!-- here we should get done.invoke --> - <transition event="done.invoke" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="timeout" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test237.scxml b/test/w3c/xpath/test237.scxml deleted file mode 100644 index 153d49d..0000000 --- a/test/w3c/xpath/test237.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that cancelling works. invoked child sleeps for two seconds, then terminates. We -sleep for 1 sec in s0, then move to s1. This should cause the invocation to get cancelled. -If we receive done.invoke, the invocation wasn't cancelled, and we fail. If we receive no events by -the time timeout2 fires, success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout1" delayexpr="'1s'"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <!-- when invoked, sleep for 2 secs then terminate. Parent will try to cancel this session --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <transition event="timeout" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timeout1" target="s1"/> - </state> - <state id="s1"> - <onentry> - <send event="timeout2" delayexpr="'1.5s'"/> - </onentry> - <!-- here we should NOT get done.invoke --> - <transition event="done.invoke" target="fail"/> - <transition event="*" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test239.scxml b/test/w3c/xpath/test239.scxml deleted file mode 100644 index 6abb941..0000000 --- a/test/w3c/xpath/test239.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup can be specified both by 'src' and by <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test239sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test239sub1.scxml. --> - <content> - <scxml version="1.0" initial="final" datamodel="xpath"> - <final id="final"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test239sub1.scxml b/test/w3c/xpath/test239sub1.scxml deleted file mode 100644 index b528057..0000000 --- a/test/w3c/xpath/test239sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="xpath"> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test240.scxml b/test/w3c/xpath/test240.scxml deleted file mode 100644 index 7cc7a08..0000000 --- a/test/w3c/xpath/test240.scxml +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified both by 'namelist' and by <param>. -invoked child will return success if its Var1 is set to 1, failure otherwise. This -test will fail schema validation because of the multiple occurences of Var1, but -should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="$Var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="$Var1/data/text() =1" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="fail"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="$Var1/text() =1" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="failure" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test241.scxml b/test/w3c/xpath/test241.scxml deleted file mode 100644 index 3935121..0000000 --- a/test/w3c/xpath/test241.scxml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- The child process will return success ifits Var1 is set to 1, failure otherwise. For this test -we try passing in Var1 by param and by namelist and check that we either get two successes -or two failures. This test will fail schema validation due to multiple declarations of -Var1, but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <invoke type="http://www.w3.org/TR/scxml/" namelist="$Var1"> - <content> - <scxml initial="sub01" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub01"> - <transition cond="$Var1/text() =1" target="subFinal1"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal1"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition event="success" target="s02"/> - <transition event="failure" target="s03"/> - </state> - <state id="s02"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub02" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub02"> - <transition cond="$Var1/text() =1" target="subFinal2"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal2"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got success in s01, so we need to do so here --> - <transition event="success" target="pass"/> - <transition event="failure" target="fail"/> - </state> - <state id="s03"> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml initial="sub03" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub03"> - <transition cond="$Var1/text() =1" target="subFinal3"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal3"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal3"/> - </scxml> - </content> - </invoke> - <!-- we got failure in s01, so we need to do so here --> - <transition event="failure" target="pass"/> - <transition event="success" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test242.scxml b/test/w3c/xpath/test242.scxml deleted file mode 100644 index 1b1fbb6..0000000 --- a/test/w3c/xpath/test242.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that markup specified by 'src' and by <content> is treated the same way. That means that -either we get done.invoke in both cases or in neither case (in which case we timeout) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout1" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="http://www.w3.org/TR/scxml/" src="file:test242sub1.scxml"/> - <transition event="done.invoke" target="s02"/> - <transition event="timeout1" target="s03"/> - </state> - <state id="s02"> - <onentry> - <send event="timeout2" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal1" datamodel="xpath"> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <!-- we got done.invoke last time, so we need it this time too --> - <transition event="done.invoke" target="pass"/> - <transition event="timeout2" target="fail"/> - </state> - <state id="s03"> - <onentry> - <send event="timeout3" delay="1s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <!-- identical to test242sub1.scxml. --> - <content> - <scxml version="1.0" initial="subFinal2" datamodel="xpath"> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - <!-- we got timeout last time, so we need it this time too --> - <transition event="timeout3" target="pass"/> - <transition event="done.invoke" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test242sub1.scxml b/test/w3c/xpath/test242sub1.scxml deleted file mode 100644 index b528057..0000000 --- a/test/w3c/xpath/test242sub1.scxml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- when invoked, just terminate. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="xpath"> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test243.scxml b/test/w3c/xpath/test243.scxml deleted file mode 100644 index c7ae26b..0000000 --- a/test/w3c/xpath/test243.scxml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by param. -test240sub1 will return success ifits Var1 is set to 1, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <param name="Var1" expr="1"/> - <content> - <scxml version="1.0" initial="sub0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="$Var1/text() =1" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test244.scxml b/test/w3c/xpath/test244.scxml deleted file mode 100644 index 2e4efa5..0000000 --- a/test/w3c/xpath/test244.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that datamodel values can be specified by namelist. -invoked child will return success ifits Var1 is set to 1, failure otherwise. -This test will fail schema validation due to multiple occurrences of Var1, -but should run correctly. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="$Var1"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="sub0"> - <transition cond="$Var1/text() =1" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test245.scxml b/test/w3c/xpath/test245.scxml deleted file mode 100644 index 332cd74..0000000 --- a/test/w3c/xpath/test245.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that non-existent datamodel values are not set. Var2 is not defined in -invoked child's datamodel. It will will return success if its Var2 remains unbound, failure otherwise. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var2" expr="3"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/" namelist="$Var2"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <transition cond="$Var2/* or $Var2/text()" target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="success" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test247.scxml b/test/w3c/xpath/test247.scxml deleted file mode 100644 index bee0cf5..0000000 --- a/test/w3c/xpath/test247.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get done.invoke. timeout indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml version="1.0" initial="subFinal" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="timeout" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test250.scxml b/test/w3c/xpath/test250.scxml deleted file mode 100644 index 58e83c4..0000000 --- a/test/w3c/xpath/test250.scxml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the onexit handlers run in the invoked process if it is cancelled. This has to be a -manual test, since this process won't accept any events from the child process once it has been cancelled. -Tester must examine log output from child process to determine success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0" initial="sub01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <log expr="'Exiting sub0'"/> - </onexit> - <state id="sub01"> - <onexit> - <log expr="'Exiting sub01'"/> - </onexit> - </state> - </state> - <final id="subFinal"> - <onentry> - <log expr="'entering final state, invocation was not cancelled'"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="final"/> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test252.scxml b/test/w3c/xpath/test252.scxml deleted file mode 100644 index 9da2a51..0000000 --- a/test/w3c/xpath/test252.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we don't process any events received from the invoked process once it is cancelled. child -process tries to send us childToParent in an onexit handler. If we get it, we fail. -timeout indicates success. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="childToParent" target="fail"/> - <transition event="done.invoke" target="fail"/> - <state id="s01"> - <onentry> - <send event="foo"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="subFinal"/> - <onexit> - <send target="#_parent" event="childToParent"/> - </onexit> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <!-- this transition will cause the invocation to be cancelled --> - <transition event="foo" target="s02"/> - </state> - <state id="s02"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test253.scxml b/test/w3c/xpath/test253.scxml deleted file mode 100644 index 7a03f27..0000000 --- a/test/w3c/xpath/test253.scxml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event processor is used in both directions. If child process uses the -scxml event i/o processor to communicate with us, send it an event. It will send back success if -this process uses the scxml processor to send the message to it, otherwise failure. For this test we allow -'scxml' as an alternative to the full url. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="timeout" target="fail"/> - <invoke type="scxml" id="foo"> - <content> - <!-- inform parent we're running then wait for it to send us an event. If it uses the scxml event i/o - processor to do so, return success, otherwise return failure. --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var2"/> - </datamodel> - <state id="sub0"> - <onentry> - <send target="#_parent" event="childRunning"/> - </onentry> - <transition event="parentToChild" target="sub1"> - <assign location="$Var2" expr="$_event/origintype/text()"/> - </transition> - </state> - <state id="sub1"> - <transition cond="$Var2='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition cond="$Var2='scxml'" target="subFinal"> - <send target="#_parent" event="success"/> - </transition> - <transition target="subFinal"> - <send target="#_parent" event="failure"/> - </transition> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <state id="s01"> - <transition event="childRunning" target="s02"> - <assign location="$Var1" expr="$_event/origintype/text()"/> - </transition> - </state> - <state id="s02"> - <transition cond="$Var1='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition cond="$Var1='scxml'" target="s03"> - <send target="#_foo" event="parentToChild"/> - </transition> - <transition target="fail"/> - </state> - <state id="s03"> - <transition event="success" target="pass"/> - <transition event="fail" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test276.scxml b/test/w3c/xpath/test276.scxml deleted file mode 100644 index 8dfe67f..0000000 --- a/test/w3c/xpath/test276.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that values passed in from parent process override default values specified in the child, test276sub1.scxml. -The child returns event1 if var1 has value 1, event0 if it has default value 0. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <invoke type="scxml" src="file:test276sub1.scxml"> - <param name="Var1" expr="1"/> - </invoke> - <transition event="event1" target="pass"/> - <transition event="event0" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test276sub1.scxml b/test/w3c/xpath/test276sub1.scxml deleted file mode 100644 index dd6743b..0000000 --- a/test/w3c/xpath/test276sub1.scxml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- define var1 with default value 0. Parent will invoke this process setting var1 = 1. Return event1 if var1 == 1, event0 otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/text() =1" target="final"> - <send target="#_parent" event="event1"/> - </transition> - <transition target="final"> - <send target="#_parent" event="event0"/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test277.scxml b/test/w3c/xpath/test277.scxml deleted file mode 100644 index c894f86..0000000 --- a/test/w3c/xpath/test277.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that platform creates undound variable if we assign an illegal value to it. Thus - we can assign to it later in state s1. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="!1"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" cond="$Var1 and not($Var1/text()) and not($Var1/*)" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="$Var1" expr="1"/> - </onentry> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test279.scxml b/test/w3c/xpath/test279.scxml deleted file mode 100644 index 112a2eb..0000000 --- a/test/w3c/xpath/test279.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- testing that in case of early binding variables are assigned values at init time, before - the state containing them is visited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test280.scxml b/test/w3c/xpath/test280.scxml deleted file mode 100644 index b61ce9c..0000000 --- a/test/w3c/xpath/test280.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test late binding. var2 won't get bound until s1 is entered, so it shouldn't have a value in s0 and -accessing it should cause an error. It should get bound before the onentry code in s1 so it should be -possible access it there and assign its value to var1 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" binding="late"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <transition cond="$Var2 and not($Var2/text()) and not($Var2/*)" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var2" expr="1"/> - </datamodel> - <onentry> - <assign location="$Var1" expr="$Var2/text()"/> - </onentry> - <transition cond="$Var1/text()=$Var2/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test286.scxml b/test/w3c/xpath/test286.scxml deleted file mode 100644 index 4c227ae..0000000 --- a/test/w3c/xpath/test286.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assigment to a non-declared var causes an error. the transition on foo catches the case -where no error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0"> - <onentry> - <assign location="foo.bar.baz " expr="1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test287.scxml b/test/w3c/xpath/test287.scxml deleted file mode 100644 index bd5d289..0000000 --- a/test/w3c/xpath/test287.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0" initial="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="1"/> - </onentry> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test288.scxml b/test/w3c/xpath/test288.scxml deleted file mode 100644 index fb3c688..0000000 --- a/test/w3c/xpath/test288.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that a legal value may be assigned to a valid data model location -using child content --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0" initial="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1">123</assign> - </onentry> - <transition cond="Var1 = 123" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test294.scxml b/test/w3c/xpath/test294.scxml deleted file mode 100644 index 289049f..0000000 --- a/test/w3c/xpath/test294.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a param inside donedata ends up in the data field of the done event and -that content inside donedata sets the full value of the event.data field --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="$_event/data/data[@id = 'Var1']/text()=1" target="s1"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="Var1" expr="1"/> - </donedata> - </final> - </state> - <state id="s1" initial="s11"> - <transition event="done.state.s1" cond="$_event/data = 'foo'" target="pass"> - </transition> - <transition event="done.state.s1" target="fail"> - </transition> - <state id="s11"> - <transition target="s12"/> - </state> - <final id="s12"> - <donedata> - <content>foo</content> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test298.scxml b/test/w3c/xpath/test298.scxml deleted file mode 100644 index 1bc91e0..0000000 --- a/test/w3c/xpath/test298.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- reference a non-existent data model location in param in donedata and see that the right error is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param name="Var3" location="foo.bar.baz "/> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test301.scxml b/test/w3c/xpath/test301.scxml deleted file mode 100644 index 0b2bd50..0000000 --- a/test/w3c/xpath/test301.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the processor should reject this document because it can't download the script. -Therefore we fail if it runs at all. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0"> - <script src="D:\foo"/> - <state id="s0"> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test302.scxml b/test/w3c/xpath/test302.scxml deleted file mode 100644 index a9e1c22..0000000 --- a/test/w3c/xpath/test302.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a script is evaluated at load time. <conf:script> shoudl assign the value 1 to -Var1. Hence, if script is evaluated at download time, Var1 has a value in the initial state s0. -This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <script/> - <state id="s0"> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test303.scxml b/test/w3c/xpath/test303.scxml deleted file mode 100644 index 7d028e9..0000000 --- a/test/w3c/xpath/test303.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- to test that scripts are run as part of executable content, we check that it changes the value of a var at the -right point. This test is valid only for datamodels that support scripting --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="2"/> - <script/> - </onentry> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test304.scxml b/test/w3c/xpath/test304.scxml deleted file mode 100644 index 4ec3ff4..0000000 --- a/test/w3c/xpath/test304.scxml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a variable declared by a script can be accessed like any other part of the data model --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0" initial="s0"> - <script/> - <state id="s0"> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test307.scxml b/test/w3c/xpath/test307.scxml deleted file mode 100644 index 7e0f2bf..0000000 --- a/test/w3c/xpath/test307.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0" initial="s0" binding="late"> - <!-- with binding=late, in s0 we access a variable that isn't created until we get to s1. Then in s1 -we access a non-existent substructure of a variable. We use log tags to report the values that both operations -yield, and whether there are errors. This is a manual test, since the tester must report whether the output -is the same in the two cases --> - <state id="s0"> - <onentry> - <log label="entering s0 value of Var 1 is: " expr="$Var1/text()"/> - <raise event="foo"/> - </onentry> - <transition event="error" target="s1"> - <log label="error in state s0" expr="_event"/> - </transition> - <transition event="foo" target="s1"> - <log label="no error in s0" expr=""/> - </transition> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <onentry> - <log label="entering s1, value of non-existent substructure of Var 1 is: " expr="$Var1.bar"/> - <raise event="bar"/> - </onentry> - <transition event="error" target="final"> - <log label="error in state s1" expr="_event"/> - </transition> - <transition event="bar" target="final"> - <log label="No error in s1" expr=""/> - </transition> - </state> - <final id="final"/> -</scxml> diff --git a/test/w3c/xpath/test309.scxml b/test/w3c/xpath/test309.scxml deleted file mode 100644 index 1b3c96b..0000000 --- a/test/w3c/xpath/test309.scxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an expression that cannot be interpreted as a boolean is treated as false --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0"> - <transition cond="==!*" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test310.scxml b/test/w3c/xpath/test310.scxml deleted file mode 100644 index 0f9c3b4..0000000 --- a/test/w3c/xpath/test310.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test of the in() predicate --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="p"> - <parallel id="p"> - <state id="s0"> - <transition cond="In('s1')" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"/> - </parallel> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test311.scxml b/test/w3c/xpath/test311.scxml deleted file mode 100644 index 9fe21bb..0000000 --- a/test/w3c/xpath/test311.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment to a non-existent location yields an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="1s"/> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test312.scxml b/test/w3c/xpath/test312.scxml deleted file mode 100644 index 5c1f790..0000000 --- a/test/w3c/xpath/test312.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assignment with an illegal expr raises an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="!1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test313.scxml b/test/w3c/xpath/test313.scxml deleted file mode 100644 index 34d943a..0000000 --- a/test/w3c/xpath/test313.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test. The processor is allowed to reject this doc, but if it executes it with its illegal -expression, it must raise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="!1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test314.scxml b/test/w3c/xpath/test314.scxml deleted file mode 100644 index 14c0504..0000000 --- a/test/w3c/xpath/test314.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- this is a manual test because the processor is allowed to reject this document. But if it executes it, -it should not raise an error until it gets to s03 and evaluates the illegal expr --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0" initial="s01"> - <transition event="error.execution" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <state id="s02"> - <transition target="s03"/> - </state> - <state id="s03"> - <onentry> - <assign location="$Var1" expr="!1"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event=".*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test318.scxml b/test/w3c/xpath/test318.scxml deleted file mode 100644 index b1b8d61..0000000 --- a/test/w3c/xpath/test318.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event stays bound during the onexit and entry into the next state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="bar"/> - <!-- _event should still be bound to 'foo' at this point --> - <assign location="$Var1" expr="$_event/name/text()"/> - </onentry> - <transition cond="$Var1='foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test319.scxml b/test/w3c/xpath/test319.scxml deleted file mode 100644 index 12bbd80..0000000 --- a/test/w3c/xpath/test319.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _event is not bound before any event has been raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <if cond="$_event/text()"> - <raise event="bound"/> - <else/> - <raise event="unbound"/> - </if> - </onentry> - <transition event="unbound" target="pass"/> - <transition event="bound" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test321.scxml b/test/w3c/xpath/test321.scxml deleted file mode 100644 index 962ca36..0000000 --- a/test/w3c/xpath/test321.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" expr="$_sessionid"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition cond="true()" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test322.scxml b/test/w3c/xpath/test322.scxml deleted file mode 100644 index bccb27b..0000000 --- a/test/w3c/xpath/test322.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _sessionid remains bound to the same value throught the session. this means that it can't -be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" expr="$_sessionid"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <assign location="$_sessionid" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition cond="$Var1=$_sessionid" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test323.scxml b/test/w3c/xpath/test323.scxml deleted file mode 100644 index 716b566..0000000 --- a/test/w3c/xpath/test323.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name is bound on startup --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <datamodel> - <data id="Var1" expr="$_name"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition cond="true()" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test324.scxml b/test/w3c/xpath/test324.scxml deleted file mode 100644 index eff2f68..0000000 --- a/test/w3c/xpath/test324.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _name stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <state id="s0"> - <transition cond="$_name/text() = 'machineName'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="$_name" expr="'otherName'"/> - </onentry> - <transition cond="$_name/text() = 'machineName'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test325.scxml b/test/w3c/xpath/test325.scxml deleted file mode 100644 index 82f71c2..0000000 --- a/test/w3c/xpath/test325.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors is bound at startup. I'm not sure how to test for a set value or -how to test that the entries in it do represent I/O processors, since the set that each implementation -supports may be different. Suggestions welcome --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" expr="$_ioprocessors"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test326.scxml b/test/w3c/xpath/test326.scxml deleted file mode 100644 index 4e08dcb..0000000 --- a/test/w3c/xpath/test326.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that _ioprocessors stays bound till the session ends. This means that it cannot be assigned to --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <datamodel> - <data id="Var1" expr="$_ioprocessors"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="s1"/> - <transition cond="true()" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="$_ioprocessors" expr="'otherName'"/> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="$Var2" expr="$_ioprocessors"/> - </onentry> - <transition cond="$Var1=$Var2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test329.scxml b/test/w3c/xpath/test329.scxml deleted file mode 100644 index 27ec11d..0000000 --- a/test/w3c/xpath/test329.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that none of the system variables can be modified --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - <data id="Var3"/> - <data id="Var4"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- get _event bound so we can use it in s1--> - <raise event="foo"/> - <assign location="$Var1" expr="$_sessionid"/> - <assign location="$_sessionid" expr="27"/> - </onentry> - <transition event="foo" cond="$Var1=$_sessionid" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="$Var2" expr="$_event"/> - <assign location="$_event" expr="27"/> - </onentry> - <transition cond="$Var2=$_event" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="$Var3" expr="$_name"/> - <assign location="$_name" expr="27"/> - </onentry> - <transition cond="$Var3=$_name" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="$Var4" expr="$_ioprocessors"/> - <assign location="$_ioprocessors" expr="27"/> - </onentry> - <transition cond="$Var4=$_ioprocessors" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test330.scxml b/test/w3c/xpath/test330.scxml deleted file mode 100644 index 133400c..0000000 --- a/test/w3c/xpath/test330.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- check that the required fields are present in both internal and external events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="$_event/name and $_event/type and $_event/sendid and $_event/origin and $_event/origintype and $_event/invokeid and $_event/data" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="$_event/name and $_event/type and $_event/sendid and $_event/origin and $_event/origintype and $_event/invokeid and $_event/data" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test331.scxml b/test/w3c/xpath/test331.scxml deleted file mode 100644 index da63a49..0000000 --- a/test/w3c/xpath/test331.scxml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0" name="machineName"> - <!-- test that _event.type is set correctly for internal, platform, and external events --> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- internal event --> - <raise event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="$Var1" expr="$_event/type/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1='internal'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <!-- this will generate an error, which is a platform event --> - <assign location="foo.bar.baz " expr="1"/> - </onentry> - <transition event="error" target="s3"> - <assign location="$Var1" expr="$_event/type/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="$Var1='platform'" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <onentry> - <!-- external event --> - <send event="foo"/> - </onentry> - <transition event="foo" target="s5"> - <assign location="$Var1" expr="$_event/type/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s5"> - <transition cond="$Var1='external'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test332.scxml b/test/w3c/xpath/test332.scxml deleted file mode 100644 index 3a3cbcf..0000000 --- a/test/w3c/xpath/test332.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is present in error events triggered by send errors --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="xpath" name="machineName"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <!-- this will raise an error and also store the sendid in var1 --> - <send target="baz" event="foo" idlocation="$Var1"/> - </onentry> - <transition event="error" target="s1"> - <!-- get the sendid out of the error event --> - <assign location="$Var2" expr="$_event/sendid/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- make sure that the sendid in the error event matches the one generated when send executed --> - <transition cond="$Var1/text()=$Var2/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test333.scxml b/test/w3c/xpath/test333.scxml deleted file mode 100644 index 82fe462..0000000 --- a/test/w3c/xpath/test333.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- make sure sendid is blank in a non-error event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="xpath" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" cond="not(string($_event/sendid))" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test335.scxml b/test/w3c/xpath/test335.scxml deleted file mode 100644 index 5b3de82..0000000 --- a/test/w3c/xpath/test335.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origin field is blank for internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="xpath" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="not(string($_event/origin))" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test336.scxml b/test/w3c/xpath/test336.scxml deleted file mode 100644 index 86074ee..0000000 --- a/test/w3c/xpath/test336.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the origin field of an external event contains a URL that lets you send back to the originator. In -this case it's the same session, so if we get bar we succeed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <send event="foo"/> - </onentry> - <transition event="foo" target="s1"> - <send event="bar" targetexpr="$_event/origin/text()" typeexpr="$_event/origintype/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="baz"/> - </onentry> - <transition event="bar" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test337.scxml b/test/w3c/xpath/test337.scxml deleted file mode 100644 index 798b11b..0000000 --- a/test/w3c/xpath/test337.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that origintype is blank on internal events --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="not(string($_event/origintype))" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test338.scxml b/test/w3c/xpath/test338.scxml deleted file mode 100644 index 4b973cd..0000000 --- a/test/w3c/xpath/test338.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is set correctly in events received from an invoked process. timeout event catches the -case where the invoke doesn't work correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <invoke idlocation="$Var1" type="http://www.w3.org/TR/scxml/"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath" name="machineName"> - <final id="sub0"> - <onentry> - <send target="#_parent" event="event1"/> - </onentry> - </final> - </scxml> - </content> - </invoke> - <transition event="event1" target="s1"> - <assign location="$Var2" expr="$_event/invokeid/text()"/> - </transition> - <transition event="event0" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1/text()=$Var2/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test339.scxml b/test/w3c/xpath/test339.scxml deleted file mode 100644 index a6bf0c7..0000000 --- a/test/w3c/xpath/test339.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that invokeid is blank in an event that wasn't returned from an invoked process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="not(string($_event/invokeid))" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test342.scxml b/test/w3c/xpath/test342.scxml deleted file mode 100644 index db3db1a..0000000 --- a/test/w3c/xpath/test342.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventexpr works and sets the name field of the resulting event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <datamodel> - <data id="Var1" expr="'foo'"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send eventexpr="$Var1"/> - </onentry> - <transition event="foo" target="s1"> - <assign location="$Var2" expr="$_event/name/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1/text()=$Var2/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test343.scxml b/test/w3c/xpath/test343.scxml deleted file mode 100644 index 904f47a..0000000 --- a/test/w3c/xpath/test343.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param location="foo.bar.baz " name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="not($_event/data/*)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test344.scxml b/test/w3c/xpath/test344.scxml deleted file mode 100644 index 476383c..0000000 --- a/test/w3c/xpath/test344.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a cond expression that cannot be evaluated as a -boolean cond expression evaluates to false and causes error.execution to be raised. -In some languages, any valid expression/object can be converted to a boolean, so conf:nonBoolean will -have to be mapped onto something that produces a syntax error or something similarly invalid --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0"> - <transition cond="==!*" target="fail"/> - <transition target="s1"/> - </state> - <state id="s1"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test346.scxml b/test/w3c/xpath/test346.scxml deleted file mode 100644 index 8db5662..0000000 --- a/test/w3c/xpath/test346.scxml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that any attempt to change the value of a system variable causes error.execution to be raised. -Event1..4 are there to catch the case where the error event is not raised. In cases where it is, we have -to dispose of eventn in the next state, hence the targetless transitions (which simply throw away the event.) --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" name="machineName"> - <state id="s0"> - <onentry> - <assign location="$_sessionid" expr="'otherName'"/> - <raise event="event1"/> - </onentry> - <transition event="error.execution" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <onentry> - <assign location="$_event" expr="'otherName'"/> - <raise event="event2"/> - </onentry> - <!-- throw out event1 if it's still around --> - <transition event="event1"/> - <transition event="error.execution" target="s2"/> - <!-- event1 would trigger this transition if we didn't drop it. We want this transition to have - a very general trigger to catch cases where the wrong error event was raised --> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <assign location="$_ioprocessors" expr="'otherName'"/> - <raise event="event3"/> - </onentry> - <transition event="event2"/> - <transition event="error.execution" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <onentry> - <assign location="$_name" expr="'otherName'"/> - <raise event="event4"/> - </onentry> - <transition event="event3"/> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test347.scxml b/test/w3c/xpath/test347.scxml deleted file mode 100644 index ce1df79..0000000 --- a/test/w3c/xpath/test347.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event I/O processor works by sending events back and forth between an invoked child -and its parent process --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0" initial="s01"> - <invoke id="child" type="scxml"> - <content> - <scxml initial="sub0" version="1.0" datamodel="xpath" name="machineName"> - <state id="sub0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_parent" event="childToParent"/> - </onentry> - <transition event="parentToChild" target="subFinal"/> - </state> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <onentry> - <send delay="20s" event="timeout"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition event="childToParent" target="s02"/> - </state> - <state id="s02"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" target="#_child" event="parentToChild"/> - </onentry> - <transition event="done.invoke" target="pass"/> - <transition event="error" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test348.scxml b/test/w3c/xpath/test348.scxml deleted file mode 100644 index dd09aa4..0000000 --- a/test/w3c/xpath/test348.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <!-- test that event param of send sets the name of the event --> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test349.scxml b/test/w3c/xpath/test349.scxml deleted file mode 100644 index 2b11ff3..0000000 --- a/test/w3c/xpath/test349.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that value in origin field can be used to send an event back to the sender --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s2"> - <assign location="$Var1" expr="$_event/origin/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="$Var1" event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test350.scxml b/test/w3c/xpath/test350.scxml deleted file mode 100644 index d29783d..0000000 --- a/test/w3c/xpath/test350.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that target value is used to decide what session to deliver the event to. A session should be -able to send an event to itself using its own session ID as the target --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="'#_scxml_'"/> - <data id="Var2" expr="$_sessionid"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="concat($Var1, $Var2)"/> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" targetexpr="$Var1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test351.scxml b/test/w3c/xpath/test351.scxml deleted file mode 100644 index ece63f7..0000000 --- a/test/w3c/xpath/test351.scxml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that sendid is set in event if present in send, blank otherwise --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - <data id="Var2"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" id="send1" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="$Var1" expr="$_event/sendid/text()"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="$Var1='send1'" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="s0Event2"/> - </onentry> - <transition event="s0Event2" target="s3"> - <assign location="$Var2" expr="$_event/sendid/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition cond="not($Var2/text() or $Var2/*)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test352.scxml b/test/w3c/xpath/test352.scxml deleted file mode 100644 index 83de449..0000000 --- a/test/w3c/xpath/test352.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test the origintype is 'http://www.w3.org/TR/scxml/#SCXMLEventProcessor' --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="s0Event"/> - </onentry> - <transition event="s0Event" target="s1"> - <assign location="$Var1" expr="$_event/origintype/text()"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="$Var1='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test354.scxml b/test/w3c/xpath/test354.scxml deleted file mode 100644 index 1726250..0000000 --- a/test/w3c/xpath/test354.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that event.data can be populated using both namelist, param and <content> -and that correct values are used --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - <data id="Var2"/> - <data id="Var3"/> - </datamodel> - <state id="s0"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" namelist="$Var1"> - <param name="param1" expr="2"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="$Var2" expr="$_event/data/data[@id=Var'1']/data/text()"/> - <assign location="$Var3" expr="$_event/data/data[@id='param1']/text()"/> - </transition> - <transition event="*" target="fail"> - </transition> - </state> - <state id="s1"> - <transition cond="$Var2/text() =1" target="s2"/> - <transition target="fail"/> - </state> - <state id="s2"> - <transition cond="$Var3/text() =2" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <onentry> - <send delay="5s" event="timeout"/> - <send event="event2"> - <content>123</content> - </send> - </onentry> - <transition event="event2" cond="_event.data = 123" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test355.scxml b/test/w3c/xpath/test355.scxml deleted file mode 100644 index 33852d7..0000000 --- a/test/w3c/xpath/test355.scxml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial state is first in document order. If we enter s0 first we succeed, if s1, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <state id="s0"> - <transition target="pass"/> - </state> - <state id="s1"> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test364.scxml b/test/w3c/xpath/test364.scxml deleted file mode 100644 index e07b408..0000000 --- a/test/w3c/xpath/test364.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default initial states are entered when a compound state is entered. First we test -the 'initial' attribute, then the initial element, then default to the first child in document order. -If we get to s01111 we succeed, if any other state, failure. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" initial="s1" version="1.0"> - <state id="s1" initial="s11p112 s11p122"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="s2"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s2"> - <initial> - <transition target="s21p112 s21p122"/> - </initial> - <transition event="timeout" target="fail"/> - <state id="s21" initial="s211"> - <state id="s211"/> - <parallel id="s21p1"> - <state id="s21p11" initial="s21p111"> - <state id="s21p111"/> - <state id="s21p112"> - <onentry> - <raise event="In-s21p112"/> - </onentry> - </state> - </state> - <state id="s21p12" initial="s21p121"> - <state id="s21p121"/> - <state id="s21p122"> - <transition event="In-s21p112" target="s3"/> - </state> - </state> - </parallel> - </state> - </state> - <state id="s3"> - <transition target="fail"/> - <state id="s31"> - <state id="s311"> - <state id="s3111"> - <transition target="pass"/> - </state> - <state id="s3112"/> - <state id="s312"/> - <state id="s32"/> - </state> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test372.scxml b/test/w3c/xpath/test372.scxml deleted file mode 100644 index b7a3680..0000000 --- a/test/w3c/xpath/test372.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that entering a final state generates done.state.parentid after executing the onentry elements. -Var1 should be set to 2 (but not 3) by the time the event is raised --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0" initial="s0final"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="done.state.s0" cond="$Var1/text() =2" target="pass"/> - <transition event="*" target="fail"/> - <final id="s0final"> - <onentry> - <assign location="$Var1" expr="2"/> - </onentry> - <onexit> - <assign location="$Var1" expr="3"/> - </onexit> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test375.scxml b/test/w3c/xpath/test375.scxml deleted file mode 100644 index 84a3326..0000000 --- a/test/w3c/xpath/test375.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onentry handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <raise event="event1"/> - </onentry> - <onentry> - <raise event="event2"/> - </onentry> - <transition event="event1" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test376.scxml b/test/w3c/xpath/test376.scxml deleted file mode 100644 index 3ed7d7a..0000000 --- a/test/w3c/xpath/test376.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onentry handler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <send target="baz" event="event1"/> - </onentry> - <onentry> - <assign location="$Var1" expr="$Var1 + 1"/> - </onentry> - <transition cond="$Var1/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test377.scxml b/test/w3c/xpath/test377.scxml deleted file mode 100644 index f0dfe83..0000000 --- a/test/w3c/xpath/test377.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that onexit handlers are executed in document order. event1 should be raised before event2 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <state id="s0"> - <onexit> - <raise event="event1"/> - </onexit> - <onexit> - <raise event="event2"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - <state id="s2"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test378.scxml b/test/w3c/xpath/test378.scxml deleted file mode 100644 index ed4fd3d..0000000 --- a/test/w3c/xpath/test378.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that each onexithandler is a separate block. The <send> of event1 will cause an error but - the increment to var1 should happen anyways --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onexit> - <send target="baz" event="event1"/> - </onexit> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="$Var1/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test387.scxml b/test/w3c/xpath/test387.scxml deleted file mode 100644 index 4957a11..0000000 --- a/test/w3c/xpath/test387.scxml +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the default history state works correctly. From initial state s3 we take a transition to s0's default -shallow history state. That should generate "enteringS011", which takes us to s4. In s4, we -transition to s1's default deep history state. We should end up in s122, generating "enteringS122". Otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s3" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <transition event="enteringS011" target="s4"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s01"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="enteringS011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="enteringS012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="enteringS021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="enteringS022"/> - </onentry> - </state> - </state> - </state> - <state id="s1" initial="s11"> - <transition event="enteringS122" target="pass"/> - <transition event="*" target="fail"/> - <history type="shallow" id="s1HistShallow"> - <transition target="s11"/> - </history> - <history type="deep" id="s1HistDeep"> - <transition target="s122"/> - </history> - <state id="s11" initial="s111"> - <state id="s111"> - <onentry> - <raise event="enteringS111"/> - </onentry> - </state> - <state id="s112"> - <onentry> - <raise event="enteringS112"/> - </onentry> - </state> - </state> - <state id="s12" initial="s121"> - <state id="s121"> - <onentry> - <raise event="enteringS121"/> - </onentry> - </state> - <state id="s122"> - <onentry> - <raise event="enteringS122"/> - </onentry> - </state> - </state> - </state> - <state id="s3"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition target="s0HistShallow"/> - </state> - <state id="s4"> - <transition target="s1HistDeep"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test388.scxml b/test/w3c/xpath/test388.scxml deleted file mode 100644 index 36278d5..0000000 --- a/test/w3c/xpath/test388.scxml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that history states works correctly. The counter Var1 counts how many times -we have entered s0. The initial state is s012. We then transition to s1, which transitions -to s0's deep history state. entering.s012 should be raised, otherwise failure. Then we transition -to s02, which transitions to s0's shallow history state. That should have value s01, and its initial -state is s011, so we should get entering.s011, otherwise failure.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s012" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0" initial="s01"> - <onentry> - <assign location="$Var1" expr="$Var1 + 1"/> - </onentry> - <!-- the first time through, go to s1, setting a timer just in case something hangs --> - <transition event="entering.s012" cond="$Var1/text() =1" target="s1"> - <send event="timeout" delay="2s"/> - </transition> - <!-- the second time, we should get entering.s012. If so, go to s2, otherwise fail --> - <transition event="entering.s012" cond="$Var1/text() =2" target="s2"/> - <transition event="entering" cond="$Var1/text() =2" target="fail"/> - <!-- the third time we should get entering-s011. If so, pass, otherwise fail --> - <transition event="entering.s011" cond="$Var1/text() =3" target="pass"/> - <transition event="entering" cond="$Var1/text() =3" target="fail"/> - <!-- if we timeout, the state machine is hung somewhere, so fail --> - <transition event="timeout" target="fail"/> - <history type="shallow" id="s0HistShallow"> - <transition target="s02"/> - </history> - <history type="deep" id="s0HistDeep"> - <transition target="s022"/> - </history> - <state id="s01" initial="s011"> - <state id="s011"> - <onentry> - <raise event="entering.s011"/> - </onentry> - </state> - <state id="s012"> - <onentry> - <raise event="entering.s012"/> - </onentry> - </state> - </state> - <state id="s02" initial="s021"> - <state id="s021"> - <onentry> - <raise event="entering.s021"/> - </onentry> - </state> - <state id="s022"> - <onentry> - <raise event="entering.s022"/> - </onentry> - </state> - </state> - </state> - <state id="s1"> - <transition target="s0HistDeep"/> - </state> - <state id="s2"> - <transition target="s0HistShallow"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test396.scxml b/test/w3c/xpath/test396.scxml deleted file mode 100644 index e878e72..0000000 --- a/test/w3c/xpath/test396.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the value in _event.name matches the event name used to match against transitions --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <raise event="foo"/> - </onentry> - <transition event="foo" cond="$_event/name = 'foo'" target="pass"/> - <transition event="foo" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test399.scxml b/test/w3c/xpath/test399.scxml deleted file mode 100644 index 2b5b7ed..0000000 --- a/test/w3c/xpath/test399.scxml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the event name matching works correctly, including prefix matching and the fact -that the event attribute of transition may contain multiple event designators. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="2s"/> - </onentry> - <!-- this will catch the failure case --> - <transition event="timeout" target="fail"/> - <state id="s01"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that an event can match against a transition with multiple descriptors --> - <transition event="foo bar" target="s02"/> - </state> - <state id="s02"> - <onentry> - <raise event="bar"/> - </onentry> - <!-- test that an event can match the second descriptor as well --> - <transition event="foo bar" target="s03"/> - </state> - <state id="s03"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that a prefix descriptor matches --> - <transition event="foo bar" target="s04"/> - </state> - <state id="s04"> - <onentry> - <raise event="foos"/> - </onentry> - <!-- test that only token prefixes match --> - <transition event="foo" target="fail"/> - <transition event="foos" target="s05"/> - </state> - <state id="s05"> - <onentry> - <raise event="foo.zoo"/> - </onentry> - <!-- test that .* works at the end of a descriptor --> - <transition event="foo.*" target="s06"/> - </state> - <state id="s06"> - <onentry> - <raise event="foo"/> - </onentry> - <!-- test that "*" works by itself --> - <transition event="*" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test401.scxml b/test/w3c/xpath/test401.scxml deleted file mode 100644 index 89a1164..0000000 --- a/test/w3c/xpath/test401.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that errors go in the internal event queue. We send ourselves an external event foo, then perform -and operation that raises an error. Then check that the error event is processed first, even though -it was raised second --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="foo"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="foo" target="fail"/> - <transition event="error" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test402.scxml b/test/w3c/xpath/test402.scxml deleted file mode 100644 index 29d1dd1..0000000 --- a/test/w3c/xpath/test402.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- the assertion that errors are 'like any other event' is pretty broad, but we can check that they -are pulled off the internal queue in order, and that prefix matching works on them. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <!-- catch the failure case --> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <onentry> - <!-- the first internal event. The error will be the second, and event2 will be the third --> - <raise event="event1"/> - <!-- assigning to a non-existent location should raise an error --> - <assign location="foo.bar.baz " expr="2"/> - </onentry> - <transition event="event1" target="s02"> - <raise event="event2"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="error" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test403a.scxml b/test/w3c/xpath/test403a.scxml deleted file mode 100644 index 50f4984..0000000 --- a/test/w3c/xpath/test403a.scxml +++ /dev/null @@ -1,46 +0,0 @@ -<?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="xpath"> - <state id="s0" initial="s01"> - <onentry> - <!-- catch the failure case --> - <send event="timeout" delay="1s"/> - </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="0>1" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test403b.scxml b/test/w3c/xpath/test403b.scxml deleted file mode 100644 index 438bb05..0000000 --- a/test/w3c/xpath/test403b.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that 'optimally enabled set' really is a set, specifically that if a transition is optimally enabled in -two different states, it is taken only once. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <!-- this transition should never be taken because a transition in a lower state should - always be selected --> - <transition event="event1"> - <assign location="$Var1" expr="$Var1 + 1"/> - </transition> - <parallel id="p0"> - <onentry> - <raise event="event1"/> - <raise event="event2"/> - </onentry> - <!-- this transition will be selected by both states p0s1 and p0s2, but should be executed only once --> - <transition event="event1"> - <assign location="$Var1" expr="$Var1 + 1"/> - </transition> - <state id="p0s1"> - <transition event="event2" cond="$Var1/text() =1" target="pass"/> - <transition event="event2" target="fail"/> - </state> - <state id="p0s2"/> - </parallel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test403c.scxml b/test/w3c/xpath/test403c.scxml deleted file mode 100644 index 10e4a3f..0000000 --- a/test/w3c/xpath/test403c.scxml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test 'optimally enabled set', specifically that preemption works correctly --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0" initial="p0"> - <onentry> - <raise event="event1"/> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="event2" target="fail"/> - <transition event="timeout" target="fail"/> - <parallel id="p0"> - <state id="p0s1"> - <transition event="event1"/> - <transition event="event2"/> - </state> - <state id="p0s2"> - <transition event="event1" target="p0s1"> - <raise event="event2"/> - </transition> - </state> - <state id="p0s3"> - <!-- this transition should be blocked by the one in p0s2--> - <transition event="event1" target="fail"/> - <!-- this transition will preempt the one that p0s2 inherits - from an ancestor --> - <transition event="event2" target="s1"/> - </state> - <state id="p0s4"> - <!-- this transition never gets preempted, should fire twice --> - <transition event="*"> - <assign location="$Var1" expr="$Var1 + 1"/> - </transition> - </state> - </parallel> - </state> - <state id="s1"> - <transition cond="$Var1/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test404.scxml b/test/w3c/xpath/test404.scxml deleted file mode 100644 index 47adff8..0000000 --- a/test/w3c/xpath/test404.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that states are exited in exit order (children before parents with reverse doc order used to break ties - before the executable content in the transitions. event1, event2, event3, event4 should be raised in that - order when s01p is exited --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01p"> - <parallel id="s01p"> - <onexit> - <!-- this should be the 3rd event raised --> - <raise event="event3"/> - </onexit> - <transition target="s02"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - <state id="s01p1"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - </state> - <state id="s01p2"> - <!-- this should be the first event raised --> - <onexit> - <raise event="event1"/> - </onexit> - </state> - </parallel> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test405.scxml b/test/w3c/xpath/test405.scxml deleted file mode 100644 index 938a3bf..0000000 --- a/test/w3c/xpath/test405.scxml +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the executable content in the transitions is executed in document order after -the states are exited. event1, event2, event3, event4 should be raised in that order when the -state machine is entered --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01p"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s01p"> - <transition event="event1" target="s02"/> - <state id="s01p1" initial="s01p11"> - <state id="s01p11"> - <onexit> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onexit> - <transition target="s01p12"> - <!-- this should be the third event raised --> - <raise event="event3"/> - </transition> - </state> - <state id="s01p12"/> - </state> - <!-- end s01p1 --> - <state id="s01p2" initial="s01p21"> - <state id="s01p21"> - <onexit> - <!-- this should be the first event raised --> - <raise event="event1"/> - </onexit> - <transition target="s01p22"> - <!-- this should be the fourth event raised --> - <raise event="event4"/> - </transition> - </state> - <state id="s01p22"/> - </state> - <!-- end s01p2 --> - </parallel> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event3" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s01 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test406.scxml b/test/w3c/xpath/test406.scxml deleted file mode 100644 index 1d8e2e6..0000000 --- a/test/w3c/xpath/test406.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that states are entered in entry order (parents before children with document order used to break ties) -after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that -order when the transition in s01 is taken --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s01"> - <transition target="s0p2"> - <!-- this should be the first event raised --> - <raise event="event1"/> - </transition> - </state> - <parallel id="s0p2"> - <transition event="event1" target="s03"/> - <state id="s01p21"> - <onentry> - <!-- third event --> - <raise event="event3"/> - </onentry> - </state> - <state id="s01p22"> - <onentry> - <!-- the fourth event --> - <raise event="event4"/> - </onentry> - </state> - <onentry> - <!-- this should be the second event raised --> - <raise event="event2"/> - </onentry> - </parallel> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="s05"/> - <transition event="*" target="fail"/> - </state> - <state id="s05"> - <transition event="event4" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test407.scxml b/test/w3c/xpath/test407.scxml deleted file mode 100644 index a3fa1eb..0000000 --- a/test/w3c/xpath/test407.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- a simple test that onexit handlers work. var1 should be incremented when we leave s0 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s0"> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition target="s1"/> - </state> - <state id="s1"> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test409.scxml b/test/w3c/xpath/test409.scxml deleted file mode 100644 index 56a0355..0000000 --- a/test/w3c/xpath/test409.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are removed from the active states list as they are exited. When s01's onexit handler -fires, s011 should not be on the active state list, so in(S011) should be false, and event1 should not -be raised. Therefore the timeout should fire to indicate success --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delayexpr="'1s'"/> - </onentry> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - <state id="s01" initial="s011"> - <onexit> - <if cond="In('s011')"> - <raise event="event1"/> - </if> - </onexit> - <state id="s011"> - <transition target="s02"/> - </state> - </state> - <!-- end s01 --> - <state id="s02"/> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test411.scxml b/test/w3c/xpath/test411.scxml deleted file mode 100644 index 35cd8c1..0000000 --- a/test/w3c/xpath/test411.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that states are added to the active states list as they are entered and before onentry handlers -are executed. When s0's onentry handler fires we should not be in s01. But when s01's onentry handler -fires, we should be in s01. Therefore event1 should not fire, but event2 should. Either event1 or -timeout also indicates failure --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - <if cond="In('s01')"> - <raise event="event1"/> - </if> - </onentry> - <transition event="timeout" target="fail"/> - <transition event="event1" target="fail"/> - <transition event="event2" target="pass"/> - <state id="s01"> - <onentry> - <if cond="In('s01')"> - <raise event="event2"/> - </if> - </onentry> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test412.scxml b/test/w3c/xpath/test412.scxml deleted file mode 100644 index d27a20b..0000000 --- a/test/w3c/xpath/test412.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that executable content in the <initial> transition executes after the onentry handler on the state -and before the onentry handler of the child states. Event1, event2, and event3 should occur in that order. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <transition event="event1" target="fail"/> - <transition event="event2" target="pass"/> - <state id="s01"> - <onentry> - <raise event="event1"/> - </onentry> - <initial> - <transition target="s011"> - <raise event="event2"/> - </transition> - </initial> - <state id="s011"> - <onentry> - <raise event="event3"/> - </onentry> - <transition target="s02"/> - </state> - </state> - <state id="s02"> - <transition event="event1" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition event="event2" target="s04"/> - <transition event="*" target="fail"/> - </state> - <state id="s04"> - <transition event="event3" target="pass"/> - <transition event="*" target="fail"/> - </state> - </state> - <!-- end s0 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test413.scxml b/test/w3c/xpath/test413.scxml deleted file mode 100644 index 9934478..0000000 --- a/test/w3c/xpath/test413.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the state machine is put into the configuration specified by the initial element, without regard -to any other defaults. we should start off in s2p111 and s2p122. the atomic -states we should not enter all have immediate transitions to failure in them --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s2p112 s2p122" version="1.0" datamodel="xpath"> - <state id="s1"> - <transition target="fail"/> - </state> - <state id="s2" initial="s2p1"> - <parallel id="s2p1"> - <!-- this transition will be triggered only if we end up in an illegal configuration where we're in - either s2p112 or s2p122, but not both of them --> - <transition target="fail"/> - <state id="s2p11" initial="s2p111"> - <state id="s2p111"> - <transition target="fail"/> - </state> - <state id="s2p112"> - <transition cond="In('s2p122')" target="pass"/> - </state> - </state> - <!-- end s2p11 --> - <state id="s2p12" initial="s2p121"> - <state id="s2p121"> - <transition target="fail"/> - </state> - <state id="s2p122"> - <transition cond="In('s2p112')" target="pass"/> - </state> - </state> - </parallel> - </state> - <!-- end s2 --> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test415.scxml b/test/w3c/xpath/test415.scxml deleted file mode 100644 index a942188..0000000 --- a/test/w3c/xpath/test415.scxml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that the state machine halts when it enters a top-level final state. Since - the initial state is a final state, this machine should halt immediately without - processing "event1" which is raised in the final state's on-entry handler. This - is a manual test since there is no platform-independent way to test that event1 - is not processed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="final" version="1.0" datamodel="xpath"> - <final id="final"> - <onentry> - <raise event="event1"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test416.scxml b/test/w3c/xpath/test416.scxml deleted file mode 100644 index 03d104f..0000000 --- a/test/w3c/xpath/test416.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the done.state.id gets generated when we enter the final state of a compound state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="xpath"> - <state id="s1" initial="s11"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <transition event="done.state.s11" target="pass"/> - <state id="s111"> - <transition target="s11final"/> - </state> - <final id="s11final"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test417.scxml b/test/w3c/xpath/test417.scxml deleted file mode 100644 index b8db7b8..0000000 --- a/test/w3c/xpath/test417.scxml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we get the done.state.id event when all of a -parallel elements children enter final states. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="xpath"> - <state id="s1" initial="s1p1"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <parallel id="s1p1"> - <transition event="done.state.s1p1" target="pass"/> - <state id="s1p11" initial="s1p111"> - <state id="s1p111"> - <transition target="s1p11final"/> - </state> - <final id="s1p11final"/> - </state> - <state id="s1p12" initial="s1p121"> - <state id="s1p121"> - <transition target="s1p12final"/> - </state> - <final id="s1p12final"/> - </state> - </parallel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test419.scxml b/test/w3c/xpath/test419.scxml deleted file mode 100644 index c1e6e4b..0000000 --- a/test/w3c/xpath/test419.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that eventless transitions take precedence over event-driven ones --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="xpath"> - <state id="s1"> - <onentry> - <raise event="internalEvent"/> - <send event="externalEvent"/> - </onentry> - <transition event="*" target="fail"/> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test421.scxml b/test/w3c/xpath/test421.scxml deleted file mode 100644 index 7bb9690..0000000 --- a/test/w3c/xpath/test421.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that internal events take priority over external ones, and that the processor -keeps pulling off internal events until it finds one that triggers a transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="xpath"> - <state id="s1" initial="s11"> - <onentry> - <send event="externalEvent"/> - <raise event="internalEvent1"/> - <raise event="internalEvent2"/> - <raise event="internalEvent3"/> - <raise event="internalEvent4"/> - </onentry> - <transition event="externalEvent" target="fail"/> - <state id="s11"> - <transition event="internalEvent3" target="s12"/> - </state> - <state id="s12"> - <transition event="internalEvent4" target="pass"/> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test422.scxml b/test/w3c/xpath/test422.scxml deleted file mode 100644 index 9255d3b..0000000 --- a/test/w3c/xpath/test422.scxml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Test that at the end of a macrostep, the processor executes all invokes in states -that have been entered and not exited during the step. (The invokes are supposed to be executed -in document order, but we can test that since each invocation is separate and they may take -different amounts to time to start up.) In this case, there are three invoke statements, -in states s1, s11 and s12. Each invoked process returns an event named after its parent state. -The invokes in s1 and s12 should execute, but not the one -in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermore, when the timeout fires, var1 should equal 2.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s1" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <state id="s1" initial="s11"> - <onentry> - <send event="timeout" delayexpr="'2s'"/> - </onentry> - <transition event="invokeS1 invokeS12"> - <assign location="$Var1" expr="$Var1 + 1"/> - </transition> - <transition event="invokeS11" target="fail"/> - <transition event="timeout" cond="$Var1/text() =2" target="pass"/> - <transition event="timeout" target="fail"/> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub0" version="1.0" datamodel="xpath"> - <state id="sub0"> - <onentry> - <send target="#_parent" event="invokeS1"/> - </onentry> - <transition target="subFinal0"/> - </state> - <final id="subFinal0"/> - </scxml> - </content> - </invoke> - <state id="s11"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub1" version="1.0" datamodel="xpath"> - <state id="sub1"> - <onentry> - <send target="#_parent" event="invokeS11"/> - </onentry> - <transition target="subFinal1"/> - </state> - <final id="subFinal1"/> - </scxml> - </content> - </invoke> - <transition target="s12"/> - </state> - <state id="s12"> - <invoke> - <content> - <!-- when invoked, send 'foo' to parent, then terminate. --> - <scxml initial="sub2" version="1.0" datamodel="xpath"> - <state id="sub2"> - <onentry> - <send target="#_parent" event="invokeS12"/> - </onentry> - <transition target="subFinal2"/> - </state> - <final id="subFinal2"/> - </scxml> - </content> - </invoke> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test423.scxml b/test/w3c/xpath/test423.scxml deleted file mode 100644 index 4f601c8..0000000 --- a/test/w3c/xpath/test423.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we keep pulling external events off the queue till we find one that matches a transition. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="externalEvent1"/> - <send event="externalEvent2" delayexpr="'1s'"/> - <raise event="internalEvent"/> - </onentry> - <!-- in this state we should process only internalEvent --> - <transition event="internalEvent" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <!-- in this state we ignore externalEvent1 and wait for externalEvent2 --> - <transition event="externalEvent2" target="pass"/> - <transition event="internalEvent" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test463.scxml b/test/w3c/xpath/test463.scxml deleted file mode 100644 index 3c49a1b..0000000 --- a/test/w3c/xpath/test463.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the <data> tag creates an element in the XML datamodel with the correct name and id attr -and binds an XPath variable to it --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="foo" expr="2"/> - </datamodel> - <state id="s0"> - <transition cond="local-name($foo)='data'and $foo/@id ='foo'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test464.scxml b/test/w3c/xpath/test464.scxml deleted file mode 100644 index 0b1881d..0000000 --- a/test/w3c/xpath/test464.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an unassigned variable creates an empty <data> element --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="foo"/> - </datamodel> - <state id="s0"> - <transition cond="count($foo) = 1 and count($foo/*) = 0" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test465.scxml b/test/w3c/xpath/test465.scxml deleted file mode 100644 index 205203f..0000000 --- a/test/w3c/xpath/test465.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that all xpath variables are in a single global scope--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="foo" expr="2"/> - </datamodel> - <state id="s0"> - <transition cond="count($foo) = 1 and count($bar) = 1" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="bar" expr="1"/> - </datamodel> - <transition target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test466.scxml b/test/w3c/xpath/test466.scxml deleted file mode 100644 index 27791c9..0000000 --- a/test/w3c/xpath/test466.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that xpath expressions are converted to boolean when used as conditional expressions--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="foo" expr="2"/> - </datamodel> - <state id="s0"> - <transition cond="$foo" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test467.scxml b/test/w3c/xpath/test467.scxml deleted file mode 100644 index 67a18ab..0000000 --- a/test/w3c/xpath/test467.scxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that in() is available --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <transition cond="In('s0')" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test468.scxml b/test/w3c/xpath/test468.scxml deleted file mode 100644 index dfa077f..0000000 --- a/test/w3c/xpath/test468.scxml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that XPath expressions can be used as location expressions. - This example is taken from the spec --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cities"> - <list xmlns=""> - <city id="nyc" count="0">New York</city> - <city id="bos" count="0">Boston</city> - </list> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cities/list/city[@id='nyc']/@count" expr="1"/> - </onentry> - <transition cond="$cities/list/city[@id='nyc']/@count = 1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test469.scxml b/test/w3c/xpath/test469.scxml deleted file mode 100644 index 0550738..0000000 --- a/test/w3c/xpath/test469.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that XPath expressions can be used as value expressions. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="copyOfEventData"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="event1"> - <param name="param1" expr="1"/> - </send> - </onentry> - <transition event="event1" target="s1"> - <assign location="$copyOfEventData" expr="$_event/data"/> - </transition> - </state> - <state id="s1"> - <transition cond="$copyOfEventData/data/data[@id='param1'] =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test470.scxml b/test/w3c/xpath/test470.scxml deleted file mode 100644 index ab2f2d1..0000000 --- a/test/w3c/xpath/test470.scxml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the processor makes a deep copy of a node set when assigning. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="var1"> - <foo xmlns=""> - <bar>2</bar> - </foo> - </data> - <data id="var2"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$var2" expr="$var1/foo"/> - <assign location="$var1/foo/bar" expr="3"/> - </onentry> - <transition cond="$var2/foo/bar=2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test473.scxml b/test/w3c/xpath/test473.scxml deleted file mode 100644 index 5253ac7..0000000 --- a/test/w3c/xpath/test473.scxml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'replacechildren' in <assign> replaces all children with the new value. - This example is taken from the doc --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]"> - <bookinfo xmlns=""> - <isdn>12334455</isdn> - <author>some author</author> - </bookinfo> - </assign> - </onentry> - <transition cond="$cart/myCart/books/book[1]/bookinfo/isdn/text() = '12334455' and not($cart/myCart/books/book[1]/title)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test474.scxml b/test/w3c/xpath/test474.scxml deleted file mode 100644 index c12ae46..0000000 --- a/test/w3c/xpath/test474.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'firstchild' in <assign> inserts the new value before the other children. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]" type="firstchild"> - <bookinfo xmlns=""> - <isdn>12334455</isdn> - <author>some author</author> - </bookinfo> - </assign> - </onentry> - <transition cond="$cart/myCart/books/book[1]/*[1]/isdn/text() = '12334455' and $cart/myCart/books/book[1]/*[2]/text() = 'The Zen Mind'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test475.scxml b/test/w3c/xpath/test475.scxml deleted file mode 100644 index 21d1e5a..0000000 --- a/test/w3c/xpath/test475.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'lastchild' in <assign> inserts the new value after the other children. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]" type="lastchild"> - <bookinfo xmlns=""> - <isdn>12334455</isdn> - <author>some author</author> - </bookinfo> - </assign> - </onentry> - <transition cond="$cart/myCart/books/book[1]/*[2]/isdn/text() = '12334455' and $cart/myCart/books/book[1]/*[1]/text() = 'The Zen Mind'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test476.scxml b/test/w3c/xpath/test476.scxml deleted file mode 100644 index bf5123f..0000000 --- a/test/w3c/xpath/test476.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'nextsibling' in <assign> inserts the new value after the location. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]/title" type="nextsibling"> - <bookinfo xmlns=""> - <isdn>12334455</isdn> - <author>some author</author> - </bookinfo> - </assign> - </onentry> - <transition cond="$cart/myCart/books/book[1]/*[2]/isdn/text() = '12334455' and $cart/myCart/books/book[1]/*[1]/text() = 'The Zen Mind'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test477.scxml b/test/w3c/xpath/test477.scxml deleted file mode 100644 index f0a8c70..0000000 --- a/test/w3c/xpath/test477.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'previoussibling' in <assign> inserts the new value before the location. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]/title" type="previoussibling"> - <bookinfo xmlns=""> - <isdn>12334455</isdn> - <author>some author</author> - </bookinfo> - </assign> - </onentry> - <transition cond="$cart/myCart/books/book[1]/*[1]/isdn/text() = '12334455' and $cart/myCart/books/book[1]/*[2]/text() = 'The Zen Mind'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test478.scxml b/test/w3c/xpath/test478.scxml deleted file mode 100644 index 102e512..0000000 --- a/test/w3c/xpath/test478.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'replace' in <assign> replaces the value at the location. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[2]" type="replace"> - <cd xmlns=""> - <title>This is not a book</title> - </cd> - </assign> - </onentry> - <transition cond="$cart/myCart/books/cd/title = 'This is not a book'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test479.scxml b/test/w3c/xpath/test479.scxml deleted file mode 100644 index 6d47c00..0000000 --- a/test/w3c/xpath/test479.scxml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'delete' in <assign> deletes the value at the location. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/cds" type="delete"> - <cd xmlns=""> - <title>This is not a book</title> - </cd> - </assign> - </onentry> - <transition cond="not($cart/myCart/cds)" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test480.scxml b/test/w3c/xpath/test480.scxml deleted file mode 100644 index 6baa9f4..0000000 --- a/test/w3c/xpath/test480.scxml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that 'addattr' in <assign> adds an attribute to the specified node. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book[1]" type="addattribute" attr="author" expr="'somebody'"/> - </onentry> - <transition cond="$cart/myCart/books/book[1]/@author = 'somebody'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test481.scxml b/test/w3c/xpath/test481.scxml deleted file mode 100644 index d48086f..0000000 --- a/test/w3c/xpath/test481.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal assignments fail and have no side effects. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <assign location="$cart/myCart/cds/cd/@name"> - <foo> - <bar/> - </foo> - </assign> - </onentry> - <transition event="error.execution" cond="$cart/myCart/cds/cd/@name = 'Something'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test482.scxml b/test/w3c/xpath/test482.scxml deleted file mode 100644 index 94fc666..0000000 --- a/test/w3c/xpath/test482.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that system vars are created and bound to XPath variables --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <!-- event isn't bound until an event is raised --> - <raise event="someevent"/> - </onentry> - <transition event="*" cond="local-name($_event) = 'data' and local-name($_sessionid) = 'data' and local-name($_name) = 'data' and local-name($_ioprocessors) = 'data'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test483.scxml b/test/w3c/xpath/test483.scxml deleted file mode 100644 index 90fc0d6..0000000 --- a/test/w3c/xpath/test483.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that foreach works correctly, iterating over node set in document order. - This tests assertions 483-485 --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="var1"> - <nodes xmlns=""> - <node/> - <node/> - <node/> - </nodes> - </data> - </datamodel> - <state id="s0"> - <onentry> - <foreach array="$var1/nodes/node" item="item" index="pos"> - <assign location="$item" type="addattribute" attr="position" expr="$pos"/> - </foreach> - </onentry> - <transition cond="$var1/nodes/node[1]/@position = 1 and $var1/nodes/node[2]/@position = 2 and $var1/nodes/node[3]/@position = 3" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test487.scxml b/test/w3c/xpath/test487.scxml deleted file mode 100644 index b7df719..0000000 --- a/test/w3c/xpath/test487.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test illegal assignment. error.execution should be raised. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1" expr="!1"/> - <raise event="event"/> - </onentry> - <transition event="error.execution" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test488.scxml b/test/w3c/xpath/test488.scxml deleted file mode 100644 index e2d55dd..0000000 --- a/test/w3c/xpath/test488.scxml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal expr in <param> produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <param expr="!1" name="someParam"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="not($_event/data/*)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test495.scxml b/test/w3c/xpath/test495.scxml deleted file mode 100644 index f8e86a8..0000000 --- a/test/w3c/xpath/test495.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the scxml event i/o processor puts events in the correct queues.--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <!-- default target is external queue --> - <send event="event1" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - <send event="event2" target="#_internal" type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor"/> - </onentry> - <!-- we should get the internal event first --> - <transition event="event1" target="fail"/> - <transition event="event2" target="s1"/> - </state> - <state id="s1"> - <transition event="event1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test496.scxml b/test/w3c/xpath/test496.scxml deleted file mode 100644 index a304450..0000000 --- a/test/w3c/xpath/test496.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send type="http://www.w3.org/TR/scxml/#SCXMLEventProcessor" event="event" target="#_scxml_foo"/> - <raise event="foo"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test500.scxml b/test/w3c/xpath/test500.scxml deleted file mode 100644 index 894c532..0000000 --- a/test/w3c/xpath/test500.scxml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field is found inside entry for SCXML Event I/O processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#SCXMLProcessor"]/location/text()"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test501.scxml b/test/w3c/xpath/test501.scxml deleted file mode 100644 index bc81c56..0000000 --- a/test/w3c/xpath/test501.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the location entry for the SCXML Event I/O processor can be used as the target for an event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#SCXMLProcessor"]/location/text()"/> - </datamodel> - <state id="s0"> - <onentry> - <send targetexpr="$Var1" event="foo"/> - <send event="timeout" delay="2s"/> - </onentry> - <transition event="foo" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test503.scxml b/test/w3c/xpath/test503.scxml deleted file mode 100644 index aa2017d..0000000 --- a/test/w3c/xpath/test503.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a targetless transition does not exit and reenter its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- how often we have exited s2 --> - <data id="Var2" expr="0"/> - <!-- how often the targetless transition in s2 has been executed --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2"> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition event="foo"> - <assign location="$Var2" expr="$Var2 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="$Var2/text() =1" target="s3"/> - <transition event="bar" target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s2 was exited only once --> - <transition cond="$Var1/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test504.scxml b/test/w3c/xpath/test504.scxml deleted file mode 100644 index df9ef43..0000000 --- a/test/w3c/xpath/test504.scxml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an external transition exits all states up the the LCCA --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- how often we have exited p --> - <data id="Var2" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="Var3" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="Var4" expr="0"/> - <!-- how often the transition for foo has been taken --> - <data id="Var5" expr="0"/> - <!-- how often we have exited s2 --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <state id="s2"> - <onexit> - <assign location="$Var5" expr="$Var5 + 1"/> - </onexit> - <parallel id="p"> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition event="foo" target="ps1"> - <assign location="$Var4" expr="$Var4 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="$Var4/text() =1" target="s3"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign location="$Var2" expr="$Var2 + 1"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign location="$Var3" expr="$Var3 + 1"/> - </onexit> - </state> - </parallel> - </state> - <state id="s3"> - <!-- make sure that p was exited twice --> - <transition cond="$Var1/text() =2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps1 was exited twice --> - <transition cond="$Var2/text() =2" target="s5"/> - <transition target="fail"/> - </state> - <state id="s5"> - <!-- make sure that ps2 was exited twice --> - <transition cond="$Var3/text() =2" target="s6"/> - <transition target="fail"/> - </state> - <state id="s6"> - <!-- make sure that s1 was exited once --> - <transition cond="$Var5/text() =1" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test505.scxml b/test/w3c/xpath/test505.scxml deleted file mode 100644 index 8fdedab..0000000 --- a/test/w3c/xpath/test505.scxml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition does not exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- how often we have exited s1 --> - <data id="Var2" expr="0"/> - <!-- how often we have exited s11 --> - <data id="Var3" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="s11"> - <assign location="$Var3" expr="$Var3 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="$Var3/text() =1" target="s2"/> - <transition event="bar" target="fail"/> - <state id="s11"> - <onexit> - <assign location="$Var2" expr="$Var2 + 1"/> - </onexit> - </state> - </state> - <state id="s2"> - <!-- make sure that s1 was exited once --> - <transition cond="$Var1/text() =1" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that s11 was exited twice --> - <transition cond="$Var2/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test506.scxml b/test/w3c/xpath/test506.scxml deleted file mode 100644 index 7beb27b..0000000 --- a/test/w3c/xpath/test506.scxml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose targets are not proper descendants of its source state -behaves like an external transition --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- how often we have exited s2 --> - <data id="Var2" expr="0"/> - <!-- how often we have exited s21 --> - <data id="Var3" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="s2"/> - </state> - <state id="s2" initial="s21"> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="s2"> - <assign location="$Var3" expr="$Var3 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="$Var3/text() =1" target="s3"/> - <transition event="bar" target="fail"/> - <state id="s21"> - <onexit> - <assign location="$Var2" expr="$Var2 + 1"/> - </onexit> - </state> - </state> - <state id="s3"> - <!-- make sure that s2 was exited twice --> - <transition cond="$Var1/text() =2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that s21 was exited twice --> - <transition cond="$Var2/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test509.scxml b/test/w3c/xpath/test509.scxml deleted file mode 100644 index d34c944..0000000 --- a/test/w3c/xpath/test509.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP Event I/O processor uses POST method and that it can receive messages -at the accessURI --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <!-- if the event was send by http and we get it, we succeed --> - <transition event="test" cond="contains($_event/raw, 'POST')" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test510.scxml b/test/w3c/xpath/test510.scxml deleted file mode 100644 index 516bb60..0000000 --- a/test/w3c/xpath/test510.scxml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that Basic HTTP messages go into external queue. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - <!-- this creates an internal event --> - <raise event="internal"/> - </onentry> - <!-- we should get 'internal' first, then 'test' --> - <transition event="internal" target="s1"/> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test518.scxml b/test/w3c/xpath/test518.scxml deleted file mode 100644 index 00577c9..0000000 --- a/test/w3c/xpath/test518.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that namelist values get encoded as POST parameters. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" namelist="$Var1" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="test" cond="contains($_event/raw, 'Var1=2')" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test519.scxml b/test/w3c/xpath/test519.scxml deleted file mode 100644 index 2a81e44..0000000 --- a/test/w3c/xpath/test519.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <param> values get encoded as POST parameters. . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="param1" expr="1"/> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="contains($_event/raw, '1=1')" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test520.scxml b/test/w3c/xpath/test520.scxml deleted file mode 100644 index 03b8323..0000000 --- a/test/w3c/xpath/test520.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <content> gets sent as the body of the message. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <content>this is some content</content> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed. Test for two common - ways of encoding --> - <transition event="HTTP.POST" cond="contains($_event/raw, this+is+some+content)" target="pass"/> - <transition event="HTTP.POST" cond="contains($_event/raw, this%20is%20some%20content)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test521.scxml b/test/w3c/xpath/test521.scxml deleted file mode 100644 index 9dd4043..0000000 --- a/test/w3c/xpath/test521.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor raises error.communication if it cannot dispatch the event. -(To create an undispatchable event, we choose a non-existent session as target). If it raises -the error event, we succeed. Otherwise we eventually timeout and fail. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <!-- should cause an error --> - <send target="#_scxml_foo" event="event2"/> - <!-- this will get added to the external event queue after the error has been raised --> - <send event="timeout"/> - </onentry> - <!-- once we've entered the state, we should check for internal events first --> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test522.scxml b/test/w3c/xpath/test522.scxml deleted file mode 100644 index 0a92c55..0000000 --- a/test/w3c/xpath/test522.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field the entry for Basic HTTP Event I/O processor can be used -to send a message to the processor --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()"/> - </onentry> - <!-- the event we receive should be called 'test', but that's not actually - required for this test. Only that the send deliver some event to us. So if - we get something other than timeout or error, we call it success --> - <transition event="timeout" target="fail"/> - <transition event="error" target="fail"/> - <transition event="*" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test525.scxml b/test/w3c/xpath/test525.scxml deleted file mode 100644 index da9248e..0000000 --- a/test/w3c/xpath/test525.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <foreach> does a shallow copy, so that modifying the array does not change -the iteration behavior. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - <data id="Var2" expr="0"/> - <!-- counts the number of iterations --> - </datamodel> - <state id="s0"> - <onentry> - <foreach item="Var3" array="$Var1/*"> - <assign type="lastchild" location="$Var1" expr="$Var1/*"/> - <assign location="$Var2" expr="$Var2 + 1"/> - </foreach> - </onentry> - <transition cond="$Var2/text() =3" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test527.scxml b/test/w3c/xpath/test527.scxml deleted file mode 100644 index 5282186..0000000 --- a/test/w3c/xpath/test527.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that 'expr' works with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="$_event/data = 'foo'" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="'foo'"/> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test528.scxml b/test/w3c/xpath/test528.scxml deleted file mode 100644 index f760ee5..0000000 --- a/test/w3c/xpath/test528.scxml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that illegal 'expr' produces error.execution and empty event.data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0" initial="s01"> - <!-- we should get the error before the done event --> - <transition event="error.execution" target="s1"/> - <transition event="done.state.s0" target="fail"/> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content expr="!1"/> - </donedata> - </final> - </state> - <!-- if we get here, we received the error event. Now check that the done - event has empty event.data --> - <state id="s1"> - <transition event="done.state.s0" cond="not($_event/data/*)" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test529.scxml b/test/w3c/xpath/test529.scxml deleted file mode 100644 index ce850d0..0000000 --- a/test/w3c/xpath/test529.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- simple test that children workn with <content> --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" datamodel="xpath" initial="s0"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="$_event/data = 21" target="pass"> - </transition> - <transition event="done.state.s0" target="fail"> - </transition> - <state id="s01"> - <transition target="s02"/> - </state> - <final id="s02"> - <donedata> - <content>21</content> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test530.scxml b/test/w3c/xpath/test530.scxml deleted file mode 100644 index ab1f564..0000000 --- a/test/w3c/xpath/test530.scxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <content> child is evaluated when <invoke> is. Var1 is initialized -with an integer value, then set to an scxml script in the onentry to s0. If <content> -is evaluated at the right time, we should get invoke.done, otherwise an error --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="1"/> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$Var1"> - <scxml version="1.0"> - <final/> - </scxml> - </assign> - <send event="timeout" delay="2s"/> - </onentry> - <invoke type="http://www.w3.org/TR/scxml/"> - <content expr="$Var1/*"/> - </invoke> - <transition event="done.invoke" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test531.scxml b/test/w3c/xpath/test531.scxml deleted file mode 100644 index ada32cd..0000000 --- a/test/w3c/xpath/test531.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that the value of the <param> _scxmleventname gets used as the name -of the raised event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <send targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="_scxmleventname" expr="'test'"/> - </send> - </onentry> - <!-- if we get an event named 'test' we succeed. Otherwise fail --> - <transition event="test" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test532.scxml b/test/w3c/xpath/test532.scxml deleted file mode 100644 index ea35563..0000000 --- a/test/w3c/xpath/test532.scxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that if _scxmleventname is not present, the name of the HTTP method is used -as the name of the resulting event. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <send targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <!-- this content will be ignored, but it's here to make sure we have a message body --> - <content>some content</content> - </send> - </onentry> - <transition event="HTTP.POST" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test533.scxml b/test/w3c/xpath/test533.scxml deleted file mode 100644 index a40f5c4..0000000 --- a/test/w3c/xpath/test533.scxml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that an internal transition whose source state is not compound does exit its source state --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s1" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - <!-- how often we have exited p --> - <data id="Var2" expr="0"/> - <!-- how often we have exited ps1 --> - <data id="Var3" expr="0"/> - <!-- how often we have exited ps2 --> - <data id="Var4" expr="0"/> - <!-- how often the transition for foo has been taken --> - </datamodel> - <state id="s1"> - <onentry> - <raise event="foo"/> - <raise event="bar"/> - </onentry> - <transition target="p"/> - </state> - <parallel id="p"> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <transition event="foo" type="internal" target="ps1"> - <assign location="$Var4" expr="$Var4 + 1"/> - </transition> - <!-- make sure the transition on foo was actually taken --> - <transition event="bar" cond="$Var4/text() =1" target="s2"/> - <transition event="bar" target="fail"/> - <state id="ps1"> - <onexit> - <assign location="$Var2" expr="$Var2 + 1"/> - </onexit> - </state> - <state id="ps2"> - <onexit> - <assign location="$Var3" expr="$Var3 + 1"/> - </onexit> - </state> - </parallel> - <state id="s2"> - <!-- make sure that p was exited twice --> - <transition cond="$Var1/text() =2" target="s3"/> - <transition target="fail"/> - </state> - <state id="s3"> - <!-- make sure that ps1 was exited twice --> - <transition cond="$Var2/text() =2" target="s4"/> - <transition target="fail"/> - </state> - <state id="s4"> - <!-- make sure that ps2 was exited twice --> - <transition cond="$Var3/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test534.scxml b/test/w3c/xpath/test534.scxml deleted file mode 100644 index b4efee9..0000000 --- a/test/w3c/xpath/test534.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> 'event' value gets sent as the param _scxmleventname . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <send event="timeout" delay="30s"/> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - </send> - </onentry> - <!-- if other end sends us back this event, we succeed --> - <transition event="test" cond="" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test537.scxml b/test/w3c/xpath/test537.scxml deleted file mode 100644 index 2cd3569..0000000 --- a/test/w3c/xpath/test537.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the root element of the datamodel is <datamodel> and that <data> elements are its -children--> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="foo" expr="2"/> - </datamodel> - <state id="s0"> - <transition cond="local-name($foo/..)='datamodel'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test539.scxml b/test/w3c/xpath/test539.scxml deleted file mode 100644 index ea1babf..0000000 --- a/test/w3c/xpath/test539.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that if the child of <data> is XML, or if XML is loaded via src=, the processor - assigns it as the value of the var --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="var1"> - <books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books> - </data> - <data id="var2" src="file:test539.txt"/> - </datamodel> - <state id="s0"> - <transition cond="$var1/books/book[2]/@title = 'title2'" target="s1"/> - <transition target="fail"/> - </state> - <state id="s1"> - <transition cond="$var2/books/book[2]/@title = 'title2'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test540.scxml b/test/w3c/xpath/test540.scxml deleted file mode 100644 index 07a3c34..0000000 --- a/test/w3c/xpath/test540.scxml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that if the child of <data> is a string or if a string is loaded via src=, the processor - does white space normalization on it and assigns it as the value of the var --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="var1">123 -4 5 -</data> - <data id="var2" src="file:test540.txt"/> - </datamodel> - <state id="s0"> - <onentry> - <log label="var1 " expr="$var1"/> - </onentry> - <transition cond="$var1 = '123 4 5' and $var2 = '123 4 5'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test542.scxml b/test/w3c/xpath/test542.scxml deleted file mode 100644 index f357b97..0000000 --- a/test/w3c/xpath/test542.scxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that <content> inside <donedata> handles XML and strings, - including white space normalization. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0" initial="s01"> - <transition event="done.state.s0" cond="$_event/data/books/book[1]/@title = 'title1'" target="s1"/> - <transition event="done" target="fail"/> - <final id="s01"> - <donedata> - <content> - <books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books> - </content> - </donedata> - </final> - </state> - <state id="s1" initial="s11"> - <transition event="done.state.s1" cond="$_event/data = '123 4 5'" target="pass"/> - <transition event="done" target="fail"/> - <final id="s11"> - <donedata> - <content>123 -4 5 - </content> - </donedata> - </final> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test543.scxml b/test/w3c/xpath/test543.scxml deleted file mode 100644 index 9dfc7b0..0000000 --- a/test/w3c/xpath/test543.scxml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that event fields are present as children of _event --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <!-- event isn't bound until an event is raised --> - <raise event="someevent"/> - </onentry> - <!-- origintype sendid, invokeid and data will not be bound in this event. name, type, and origin - are guaranteed to be there. --> - <transition event="*" cond="$_event/name and $_event/origin and $_event/type" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test544.scxml b/test/w3c/xpath/test544.scxml deleted file mode 100644 index 6183c3e..0000000 --- a/test/w3c/xpath/test544.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that kvps are represented as <data> elements under event/data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="someevent"> - <param name="key1" expr="2"/> - </send> - </onentry> - <transition event="*" cond="$_event/data/data[@id='key1'] = 2" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test545.scxml b/test/w3c/xpath/test545.scxml deleted file mode 100644 index c96f12c..0000000 --- a/test/w3c/xpath/test545.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that xml content in send is place as XML under event/data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="someevent"> - <content> - <foo xmlns=""> - <bar>3</bar> - </foo> - </content> - </send> - </onentry> - <transition event="*" cond="$_event/data/foo/bar = 3" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test546.scxml b/test/w3c/xpath/test546.scxml deleted file mode 100644 index d9c4551..0000000 --- a/test/w3c/xpath/test546.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that string content in send is place as a string under event/data --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="someevent"> - <content>some string</content> - </send> - </onentry> - <transition event="*" cond="$_event/data = 'some string'" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test547.scxml b/test/w3c/xpath/test547.scxml deleted file mode 100644 index d38ec4b..0000000 --- a/test/w3c/xpath/test547.scxml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that assiging to a node set performs the assignment to each node. - This example is taken from the spec. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" name="scxmltest" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="cart"> - <myCart xmlns=""> - <books> - <book> - <title>The Zen Mind</title> - </book> - <book> - <title>Freakonomics</title> - </book> - </books> - <cds> - <cd name="Something"/> - </cds> - </myCart> - </data> - </datamodel> - <state id="s0"> - <onentry> - <assign location="$cart/myCart/books/book" expr="'The Zen Mind'"/> - </onentry> - <transition cond="$cart/myCart/books/book[1] = 'The Zen Mind' and $cart/myCart/books/book[2] = 'The Zen Mind'" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test550.scxml b/test/w3c/xpath/test550.scxml deleted file mode 100644 index b1659cf..0000000 --- a/test/w3c/xpath/test550.scxml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that expr can be used to assign a value to a var. This test uses early binding --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath" binding="early"> - <state id="s0"> - <transition cond="$Var1/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1" expr="2"/> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test551.scxml b/test/w3c/xpath/test551.scxml deleted file mode 100644 index d905a73..0000000 --- a/test/w3c/xpath/test551.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that inline content can be used to assign a value to a var. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" binding="early" datamodel="xpath"> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <state id="s1"> - <datamodel> - <data id="Var1"> - <node xmlns="">1</node> - <node xmlns="">2</node> - <node xmlns="">3</node> - </data> - </datamodel> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test552.scxml b/test/w3c/xpath/test552.scxml deleted file mode 100644 index 85e0204..0000000 --- a/test/w3c/xpath/test552.scxml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that src content can be used to assign a value to a var. Edit -test552.txt to have a value that's legal for the datamodel in question --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="Var1" src="file:test552.txt"/> - </datamodel> - <state id="s0"> - <transition cond="$Var1/* or $Var1/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test553.scxml b/test/w3c/xpath/test553.scxml deleted file mode 100644 index 442d5d9..0000000 --- a/test/w3c/xpath/test553.scxml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- we test that the processor does not dispatch the event if evaluation -of <send>'s args causes an error.. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <!-- timeout event --> - <send event="timeout" delayexpr="'1s'"/> - <!-- generate an invalid namelist --> - <send event="event1" namelist=""foo""/> - </onentry> - <!-- if we get the timeout before event1, we assume that event1 hasn't been sent - We ignore the error event here because this assertion doesn't mention it --> - <transition event="timeout" target="pass"/> - <transition event="event1" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test554.scxml b/test/w3c/xpath/test554.scxml deleted file mode 100644 index f7a7f9f..0000000 --- a/test/w3c/xpath/test554.scxml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that if the evaluation of <invoke>'s args causes an error, the -invocation is cancelled. In this test, that means that we don't get done.invoke -before the timer goes off. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <onentry> - <send event="timer" delayexpr="'1s'"/> - </onentry> - <!-- reference an invalid namelist --> - <invoke type="http://www.w3.org/TR/scxml/" namelist=""foo""> - <content> - <scxml initial="subFinal" version="1.0" datamodel="xpath"> - <final id="subFinal"/> - </scxml> - </content> - </invoke> - <transition event="timer" target="pass"/> - <transition event="done.invoke" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test555.scxml b/test/w3c/xpath/test555.scxml deleted file mode 100644 index a76819b..0000000 --- a/test/w3c/xpath/test555.scxml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- in the XPATH data model, test that processor coerces types to produce a string - where it's needed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <datamodel> - <data id="var1"> - <books xmlns=""> - <book title="title1"/> - <book title="title2"/> - </books> - </data> - </datamodel> - <state id="s0"> - <onentry> - <send eventexpr="$var1"/> - </onentry> - <transition event="error" target="fail"/> - <!-- don't really know what the stringification of that xml structure should be, but if - we get something other than an error, we assume that it worked. --> - <transition event="*" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test567.scxml b/test/w3c/xpath/test567.scxml deleted file mode 100644 index ae96404..0000000 --- a/test/w3c/xpath/test567.scxml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that any content in the message other than _scxmleventname is used to populate -_event.data. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="2"/> - </datamodel> - <state id="s0"> - <onentry> - <send event="timeout" delay="3s"/> - <!-- in this case, 'test' will be placed in _scxmleventname. The <param> should - be used to populate _event.data --> - <send event="test" targetexpr="$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"> - <param name="param1" expr="2"/> - </send> - </onentry> - <!-- if we get this event, we succeed --> - <transition event="test" target="s1"> - <assign location="$Var1" expr="$_event/data/data[@id='param1']/text()"/> - </transition> - <transition event="*" target="fail"/> - </state> - <state id="s1"> - <transition cond="$Var1/text() =2" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test568.scxml b/test/w3c/xpath/test568.scxml deleted file mode 100644 index 57d10e0..0000000 --- a/test/w3c/xpath/test568.scxml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that location field is found inside entry for SCXML Event I/O processor in the XPath -data model. The tests for the relevant event i/o processors will test that it can be used to -send events. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="xpath"> - <state id="s0"> - <transition cond="$_ioprocessors/[@name='http://www.w3.org/TR/scxml/#SCXMLEventProcessor']/location/text()" target="pass"/> - <transition target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test570.scxml b/test/w3c/xpath/test570.scxml deleted file mode 100644 index c0abbaa..0000000 --- a/test/w3c/xpath/test570.scxml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that we generate done.state.id when all a parallel state's children are in final states --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="p0" datamodel="xpath" version="1.0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <parallel id="p0"> - <onentry> - <send event="timeout" delay="2s"/> - <raise event="e1"/> - <raise event="e2"/> - </onentry> - <!-- record that we get the first done event --> - <transition event="done.state.p0s1"> - <assign location="$Var1" expr="1"/> - </transition> - <!-- we should get the second done event before done.state.p0 --> - <transition event="done.state.p0s2" target="s1"/> - <transition event="timeout" target="fail"/> - <state id="p0s1" initial="p0s11"> - <state id="p0s11"> - <transition event="e1" target="p0s1final"/> - </state> - <final id="p0s1final"/> - </state> - <state id="p0s2" initial="p0s21"> - <state id="p0s21"> - <transition event="e2" target="p0s2final"/> - </state> - <final id="p0s2final"/> - </state> - </parallel> - <state id="s1"> - <!-- if we get done.state.p0, success --> - <transition event="done.state.p0" cond="$Var1/text() =1" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test576.scxml b/test/w3c/xpath/test576.scxml deleted file mode 100644 index a308b51..0000000 --- a/test/w3c/xpath/test576.scxml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that the 'initial' value of scxml is respected. We set the value to deeply nested non-default parallel siblings and -test that both are entered. --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s11p112 s11p122" datamodel="xpath" version="1.0"> - <state id="s0"> - <transition target="fail"/> - </state> - <state id="s1"> - <onentry> - <send event="timeout" delay="1s"/> - </onentry> - <transition event="timeout" target="fail"/> - <state id="s11" initial="s111"> - <state id="s111"/> - <parallel id="s11p1"> - <state id="s11p11" initial="s11p111"> - <state id="s11p111"/> - <state id="s11p112"> - <onentry> - <raise event="In-s11p112"/> - </onentry> - </state> - </state> - <state id="s11p12" initial="s11p121"> - <state id="s11p121"/> - <state id="s11p122"> - <transition event="In-s11p112" target="pass"/> - </state> - </state> - </parallel> - </state> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test577.scxml b/test/w3c/xpath/test577.scxml deleted file mode 100644 index 45fa360..0000000 --- a/test/w3c/xpath/test577.scxml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that that <send> without target in basichttp event i/o processor -causes error.communication to get added to internal queue . --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" datamodel="xpath" version="1.0"> - <state id="s0"> - <onentry> - <!-- sent by scxml event i/o processor, added to external queue --> - <send event="event1"/> - <!-- should put error.communication on internal queue --> - <send event="test" type="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"/> - </onentry> - <transition event="error.communication" target="pass"/> - <transition event="*" target="fail"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test579.scxml b/test/w3c/xpath/test579.scxml deleted file mode 100644 index f896472..0000000 --- a/test/w3c/xpath/test579.scxml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that default history content is executed correctly. The Process MUST execute any executable content in the transition after the parent state's onentry handlers, and, in the case where the history pseudo-state is the target of an <initial> transition, -the executable content inside the <initial> transition. However the Processor MUST -execute this content only if there is no stored history. Once the history state's -parent state has been visited and exited, the default history content must not be executed --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="xpath"> - <state id="s0"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <initial> - <transition target="sh1"> - <raise event="event2"/> - </transition> - </initial> - <onentry> - <send delayexpr="'1s'" event="timeout"/> - <raise event="event1"/> - </onentry> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - <history id="sh1"> - <transition target="s01"> - <raise event="event3"/> - </transition> - </history> - <state id="s01"> - <transition event="event1" target="s02"/> - <transition event="*" target="fail"/> - </state> - <state id="s02"> - <transition event="event2" target="s03"/> - <transition event="*" target="fail"/> - </state> - <state id="s03"> - <transition cond="$Var1/text() ==0" event="event3" target="s0"/> - <transition cond="$Var1/text() ==1" event="event1" target="s2"/> - <transition event="*" target="fail"/> - </state> - </state> - <state id="s2"> - <transition event="event2" target="s3"/> - <transition event="*" target="fail"/> - </state> - <state id="s3"> - <transition event="event3" target="fail"/> - <transition event="timeout" target="pass"/> - </state> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> diff --git a/test/w3c/xpath/test580.scxml b/test/w3c/xpath/test580.scxml deleted file mode 100644 index 0005cb6..0000000 --- a/test/w3c/xpath/test580.scxml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- test that a history state never ends up part of the configuration --> -<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="p1" datamodel="xpath"> - <datamodel> - <data id="Var1" expr="0"/> - </datamodel> - <parallel id="p1"> - <onentry> - <send delay="2s" event="timeout"/> - </onentry> - <state id="s0"> - <transition cond="In('sh1')" target="fail"/> - <transition event="timeout" target="fail"/> - </state> - <state id="s1"> - <initial> - <transition target="sh1"/> - </initial> - <history id="sh1"> - <transition target="s11"/> - </history> - <state id="s11"> - <transition cond="In('sh1')" target="fail"/> - <transition target="s12"/> - </state> - <state id="s12"/> - <transition cond="In('sh1')" target="fail"/> - <transition cond="$Var1/text() ==0" target="sh1"/> - <transition cond="$Var1/text() ==1" target="pass"/> - <onexit> - <assign location="$Var1" expr="$Var1 + 1"/> - </onexit> - </state> - </parallel> - <final id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> - <final id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> - </final> -</scxml> |