summaryrefslogtreecommitdiffstats
path: root/test/w3c/lua/test207.scxml
diff options
context:
space:
mode:
Diffstat (limited to 'test/w3c/lua/test207.scxml')
-rw-r--r--test/w3c/lua/test207.scxml47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/w3c/lua/test207.scxml b/test/w3c/lua/test207.scxml
new file mode 100644
index 0000000..0672356
--- /dev/null
+++ b/test/w3c/lua/test207.scxml
@@ -0,0 +1,47 @@
+<?xml version="1.0" standalone="no"?>
+<!-- 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">
+ <state id="s0" initial="s01">
+ <onentry>
+ <send event="timeout" delay="200ms"/>
+ </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="lua">
+ <state id="sub0">
+ <onentry>
+ <send event="event1" id="foo" delay="100ms"/>
+ <send event="event2" delay="100ms"/>
+ <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"/>
+ <final id="fail"/>
+</scxml>