summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/src/test-lifecycle.cpp346
-rw-r--r--test/w3c/confEcma.xsl14
-rw-r--r--test/w3c/confXPath.xsl9
-rw-r--r--test/w3c/ecma/test175.scxml6
-rw-r--r--test/w3c/ecma/test185.scxml2
-rw-r--r--test/w3c/ecma/test186.scxml2
-rw-r--r--test/w3c/ecma/test187.scxml4
-rw-r--r--test/w3c/ecma/test207.scxml6
-rw-r--r--test/w3c/ecma/test208.scxml4
-rw-r--r--test/w3c/ecma/test210.scxml4
-rw-r--r--test/w3c/ecma/test236.scxml2
-rw-r--r--test/w3c/ecma/test237.scxml6
-rw-r--r--test/w3c/ecma/test409.scxml2
-rw-r--r--test/w3c/ecma/test422.scxml2
-rw-r--r--test/w3c/ecma/test423.scxml2
-rw-r--r--test/w3c/ecma/test553.scxml2
-rw-r--r--test/w3c/ecma/test554.scxml2
-rw-r--r--test/w3c/ecma/test579.scxml2
-rw-r--r--test/w3c/txml/test175.txml6
-rw-r--r--test/w3c/txml/test185.txml2
-rw-r--r--test/w3c/txml/test186.txml2
-rw-r--r--test/w3c/txml/test187.txml4
-rw-r--r--test/w3c/txml/test207.txml6
-rw-r--r--test/w3c/txml/test208.txml4
-rw-r--r--test/w3c/txml/test210.txml4
-rw-r--r--test/w3c/txml/test236.txml2
-rw-r--r--test/w3c/txml/test237.txml6
-rw-r--r--test/w3c/txml/test409.txml2
-rw-r--r--test/w3c/txml/test422.txml2
-rw-r--r--test/w3c/txml/test423.txml2
-rw-r--r--test/w3c/txml/test553.txml2
-rw-r--r--test/w3c/txml/test554.txml2
-rw-r--r--test/w3c/txml/test579.txml2
-rwxr-xr-xtest/w3c/update-txml.sh7
-rw-r--r--test/w3c/xpath/test175.scxml4
-rw-r--r--test/w3c/xpath/test185.scxml2
-rw-r--r--test/w3c/xpath/test186.scxml2
-rw-r--r--test/w3c/xpath/test187.scxml4
-rw-r--r--test/w3c/xpath/test207.scxml6
-rw-r--r--test/w3c/xpath/test208.scxml4
-rw-r--r--test/w3c/xpath/test210.scxml4
-rw-r--r--test/w3c/xpath/test236.scxml2
-rw-r--r--test/w3c/xpath/test237.scxml6
-rw-r--r--test/w3c/xpath/test409.scxml2
-rw-r--r--test/w3c/xpath/test422.scxml2
-rw-r--r--test/w3c/xpath/test423.scxml2
-rw-r--r--test/w3c/xpath/test553.scxml2
-rw-r--r--test/w3c/xpath/test554.scxml2
-rw-r--r--test/w3c/xpath/test579.scxml2
49 files changed, 389 insertions, 129 deletions
diff --git a/test/src/test-lifecycle.cpp b/test/src/test-lifecycle.cpp
index 4c044c4..c0fb55c 100644
--- a/test/src/test-lifecycle.cpp
+++ b/test/src/test-lifecycle.cpp
@@ -88,8 +88,115 @@ void customTerminate() {
#endif
abort();
}
+
+using namespace uscxml;
+
+enum CallbackType {
+ USCXML_BEFOREPROCESSINGEVENT,
+ USCXML_BEFOREMICROSTEP,
+ USCXML_BEFOREEXITINGSTATE,
+ USCXML_AFTEREXITINGSTATE,
+ USCXML_BEFOREEXECUTINGCONTENT,
+ USCXML_AFTEREXECUTINGCONTENT,
+ USCXML_BEFOREUNINVOKING,
+ USCXML_AFTERUNINVOKING,
+ USCXML_BEFORETAKINGTRANSITION,
+ USCXML_AFTERTAKINGTRANSITION,
+ USCXML_BEFOREENTERINGSTATE,
+ USCXML_AFTERENTERINGSTATE,
+ USCXML_BEFOREINVOKING,
+ USCXML_AFTERINVOKING,
+ USCXML_AFTERMICROSTEP,
+ USCXML_ONSTABLECONFIGURATION,
+ USCXML_BEFORECOMPLETION,
+ USCXML_AFTERCOMPLETION
+};
+
+std::list<CallbackType> callBackSeq;
+
+#define CHECK_CALLBACK_TYPE(type)\
+{\
+ assert(!callBackSeq.empty());\
+ assert(callBackSeq.front() == type);\
+ callBackSeq.pop_front();\
+}
+
+
+class SequenceCheckingMonitor : public InterpreterMonitor {
+ virtual void beforeProcessingEvent(Interpreter interpreter, const Event& event) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREPROCESSINGEVENT);
+ }
+ virtual void beforeMicroStep(Interpreter interpreter) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREMICROSTEP);
+ }
+
+ virtual void beforeExitingState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREEXITINGSTATE);
+ }
+ virtual void afterExitingState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_AFTEREXITINGSTATE);
+ }
+
+ virtual void beforeExecutingContent(Interpreter interpreter, const Arabica::DOM::Element<std::string>& element) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREEXECUTINGCONTENT);
+ }
+ virtual void afterExecutingContent(Interpreter interpreter, const Arabica::DOM::Element<std::string>& element) {
+ CHECK_CALLBACK_TYPE(USCXML_AFTEREXECUTINGCONTENT);
+ }
+
+ virtual void beforeUninvoking(Interpreter interpreter, const Arabica::DOM::Element<std::string>& invokeElem, const std::string& invokeid) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREUNINVOKING);
+ }
+ virtual void afterUninvoking(Interpreter interpreter, const Arabica::DOM::Element<std::string>& invokeElem, const std::string& invokeid) {
+ CHECK_CALLBACK_TYPE(USCXML_AFTERUNINVOKING);
+ }
+
+ virtual void beforeTakingTransition(Interpreter interpreter, const Arabica::DOM::Element<std::string>& transition, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_BEFORETAKINGTRANSITION);
+ }
+ virtual void afterTakingTransition(Interpreter interpreter, const Arabica::DOM::Element<std::string>& transition, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_AFTERTAKINGTRANSITION);
+ }
+
+ virtual void beforeEnteringState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREENTERINGSTATE);
+ }
+ virtual void afterEnteringState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) {
+ if (!moreComing)
+ CHECK_CALLBACK_TYPE(USCXML_AFTERENTERINGSTATE);
+ }
+
+ virtual void beforeInvoking(Interpreter interpreter, const Arabica::DOM::Element<std::string>& invokeElem, const std::string& invokeid) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFOREINVOKING);
+ }
+ virtual void afterInvoking(Interpreter interpreter, const Arabica::DOM::Element<std::string>& invokeElem, const std::string& invokeid) {
+ CHECK_CALLBACK_TYPE(USCXML_AFTERINVOKING);
+ }
+
+ virtual void afterMicroStep(Interpreter interpreter) {
+ CHECK_CALLBACK_TYPE(USCXML_AFTERMICROSTEP);
+ }
+
+ virtual void onStableConfiguration(Interpreter interpreter) {
+ CHECK_CALLBACK_TYPE(USCXML_ONSTABLECONFIGURATION);
+ }
+
+ virtual void beforeCompletion(Interpreter interpreter) {
+ CHECK_CALLBACK_TYPE(USCXML_BEFORECOMPLETION);
+ }
+ virtual void afterCompletion(Interpreter interpreter) {
+ CHECK_CALLBACK_TYPE(USCXML_AFTERCOMPLETION);
+ }
+
+};
+
+
int main(int argc, char** argv) {
- using namespace uscxml;
std::set_terminate(customTerminate);
@@ -99,80 +206,213 @@ int main(int argc, char** argv) {
google::InitGoogleLogging(argv[0]);
google::LogToStderr();
- InterpreterState state;
+ SequenceCheckingMonitor* mon = new SequenceCheckingMonitor();
+
int iterations = 1;
while(iterations--) {
if (1) {
// syntactic xml parse error
- const char* xml = "<invalid>";
- Interpreter interpreter = Interpreter::fromXML(xml);
- state = interpreter.getState();
- assert(!interpreter);
- assert(state == uscxml::InterpreterState::USCXML_FAULTED);
- std::cout << interpreter.getState() << std::endl;
+ try {
+ const char* xml = "<invalid";
+ Interpreter interpreter = Interpreter::fromXML(xml);
+ assert(false);
+ } catch (Event& e) {
+ std::cout << e;
+ }
}
if (1) {
// semantic xml parse error
- const char* xml = "<invalid />";
- Interpreter interpreter = Interpreter::fromXML(xml);
- state = interpreter.getState();
- assert(state == uscxml::InterpreterState::USCXML_INSTANTIATED);
+ try {
+ const char* xml = "<invalid />";
+ Interpreter interpreter = Interpreter::fromXML(xml);
+ interpreter.addMonitor(mon);
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ interpreter.step();
+ assert(false);
+ } catch (Event& e) {
+ std::cout << e;
+ }
+ }
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FAULTED);
- std::cout << interpreter.getState() << std::endl;
+ if (1) {
+ // request unknown datamodel
+ try {
+ const char* xml =
+ "<scxml datamodel=\"invalid\">"
+ " <state id=\"start\">"
+ " <transition target=\"done\" />"
+ " </state>"
+ " <final id=\"done\" />"
+ "</scxml>";
+ Interpreter interpreter = Interpreter::fromXML(xml);
+ interpreter.addMonitor(mon);
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ interpreter.step();
+ assert(false);
+ } catch (Event& e) {
+ std::cout << e;
+ }
}
if (1) {
+ // two microsteps
+ const char* xml =
+ "<scxml>"
+ " <state id=\"start\">"
+ " <transition target=\"s2\" />"
+ " </state>"
+ " <state id=\"s2\">"
+ " <transition target=\"done\" />"
+ " </state>"
+ " <final id=\"done\" />"
+ "</scxml>";
+
+ Interpreter interpreter = Interpreter::fromXML(xml);
+ interpreter.addMonitor(mon);
+
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFORECOMPLETION);
+ callBackSeq.push_back(USCXML_AFTERCOMPLETION);
+
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ assert(interpreter.step() == USCXML_MICROSTEPPED);
+ assert(interpreter.step() == USCXML_MICROSTEPPED);
+ assert(interpreter.step() == USCXML_FINISHED);
+ assert(callBackSeq.empty());
+ }
+
+ if (1) {
// single macrostep, multiple runs
const char* xml =
- "<scxml>"
- " <state id=\"start\">"
- " <transition target=\"done\" />"
- " </state>"
- " <final id=\"done\" />"
- "</scxml>";
-
+ "<scxml>"
+ " <state id=\"start\">"
+ " <transition target=\"done\" />"
+ " </state>"
+ " <final id=\"done\" />"
+ "</scxml>";
+
Interpreter interpreter = Interpreter::fromXML(xml);
- assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED);
- interpreter.reset();
- assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED);
- interpreter.reset();
- assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED);
+ interpreter.addMonitor(mon);
+
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFORECOMPLETION);
+ callBackSeq.push_back(USCXML_AFTERCOMPLETION);
+
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ assert(interpreter.step() == USCXML_MICROSTEPPED);
+ assert(interpreter.step() == USCXML_FINISHED);
interpreter.reset();
- assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED);
- }
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFORECOMPLETION);
+ callBackSeq.push_back(USCXML_AFTERCOMPLETION);
+
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ assert(interpreter.step() == USCXML_MICROSTEPPED);
+ assert(interpreter.step() == USCXML_FINISHED);
+ }
+
if (1) {
- // two microsteps
+ // macrostep in between
const char* xml =
- "<scxml>"
- " <state id=\"start\">"
- " <transition target=\"s2\" />"
- " </state>"
- " <state id=\"s2\">"
- " <transition target=\"done\" />"
- " </state>"
- " <final id=\"done\" />"
- "</scxml>";
-
+ "<scxml>"
+ " <state id=\"start\">"
+ " <onentry>"
+ " <send event=\"continue\" delay=\"2s\"/>"
+ " </onentry>"
+ " <transition target=\"s2\" event=\"continue\" />"
+ " </state>"
+ " <state id=\"s2\">"
+ " <transition target=\"done\" />"
+ " </state>"
+ " <final id=\"done\" />"
+ "</scxml>";
+
Interpreter interpreter = Interpreter::fromXML(xml);
-
- assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED);
- assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED);
+ interpreter.addMonitor(mon);
+
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_BEFOREEXECUTINGCONTENT);
+ callBackSeq.push_back(USCXML_AFTEREXECUTINGCONTENT);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_ONSTABLECONFIGURATION);
+
+ callBackSeq.push_back(USCXML_BEFOREPROCESSINGEVENT);
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFOREMICROSTEP);
+ callBackSeq.push_back(USCXML_BEFOREEXITINGSTATE);
+ callBackSeq.push_back(USCXML_AFTEREXITINGSTATE);
+ callBackSeq.push_back(USCXML_BEFORETAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_AFTERTAKINGTRANSITION);
+ callBackSeq.push_back(USCXML_BEFOREENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERENTERINGSTATE);
+ callBackSeq.push_back(USCXML_AFTERMICROSTEP);
+
+ callBackSeq.push_back(USCXML_BEFORECOMPLETION);
+ callBackSeq.push_back(USCXML_AFTERCOMPLETION);
+
+ assert(interpreter.getState() == USCXML_INSTANTIATED);
+ assert(interpreter.step() == USCXML_IDLE);
+ assert(interpreter.step(true) == USCXML_MACROSTEPPED);
+ assert(interpreter.step() == USCXML_MICROSTEPPED);
+ assert(interpreter.step() == USCXML_FINISHED);
}
+
+#if 0
+
if (0) {
// macrostep in between
@@ -271,7 +511,7 @@ int main(int argc, char** argv) {
assert(!(state & InterpreterState::USCXML_THREAD_RUNNING));
}
+#endif
}
-
return EXIT_SUCCESS;
} \ No newline at end of file
diff --git a/test/w3c/confEcma.xsl b/test/w3c/confEcma.xsl
index af3c8d2..ffc922d 100644
--- a/test/w3c/confEcma.xsl
+++ b/test/w3c/confEcma.xsl
@@ -165,6 +165,8 @@
<content xmlns="http://www.w3.org/2005/07/scxml">foo</content>
</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>
@@ -241,8 +243,14 @@
</xsl:template>
<!-- delayexpr takes the value of the specified variable -->
-<xsl:template match="//@conf:delayExpr">
- <xsl:attribute name="delayexpr">Var<xsl:value-of select="." /></xsl:attribute>
+<xsl:template match="//@conf:delayFromVar">
+ <xsl:attribute name="delayexpr">(Var<xsl:value-of select="." />.slice(0, - 1)) * 50 + 'ms'</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=". * 50"/>ms'</xsl:attribute>
</xsl:template>
<!-- the specified variable is used as idlocation -->
@@ -722,4 +730,4 @@ 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
+</xsl:stylesheet>
diff --git a/test/w3c/confXPath.xsl b/test/w3c/confXPath.xsl
index fa67f3b..71286ce 100644
--- a/test/w3c/confXPath.xsl
+++ b/test/w3c/confXPath.xsl
@@ -206,6 +206,7 @@ is of the same type as array123 -->
+
<!-- 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>
@@ -239,10 +240,16 @@ is of the same type as array123 -->
</xsl:template>
<!-- delayexpr takes the value of the specified variable -->
-<xsl:template match="//@conf:delayExpr">
+<xsl:template match="//@conf:delayFromVar">
<xsl:attribute name="delayexpr">$Var<xsl:value-of select="." /></xsl:attribute>
</xsl:template>
+<!-- returns a delayexpr. 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>
diff --git a/test/w3c/ecma/test175.scxml b/test/w3c/ecma/test175.scxml
index 4876821..cda3b5a 100644
--- a/test/w3c/ecma/test175.scxml
+++ b/test/w3c/ecma/test175.scxml
@@ -7,9 +7,9 @@ event1 will be raised first. Succeed if event1 occurs before event2, otherwise
<state id="s0">
<onentry>
- <assign location="Var1" expr="'3s'"/>
- <send delayexpr="Var1" event="event2"/>
- <send delay="1s" event="event1"/>
+ <assign location="Var1" expr="'1s'"/>
+ <send delayexpr="(Var1.slice(0, - 1)) * 50 + 'ms'" event="event2"/>
+ <send delayexpr="'25ms'" event="event1"/>
</onentry>
<transition event="event1" target="s1"/>
diff --git a/test/w3c/ecma/test185.scxml b/test/w3c/ecma/test185.scxml
index cdf8a77..6a83574 100644
--- a/test/w3c/ecma/test185.scxml
+++ b/test/w3c/ecma/test185.scxml
@@ -4,7 +4,7 @@
<state id="s0">
<onentry>
- <send event="event2" delay="2s"/>
+ <send event="event2" delayexpr="'50ms'"/>
<send event="event1"/>
</onentry>
diff --git a/test/w3c/ecma/test186.scxml b/test/w3c/ecma/test186.scxml
index 20f0063..68254d3 100644
--- a/test/w3c/ecma/test186.scxml
+++ b/test/w3c/ecma/test186.scxml
@@ -8,7 +8,7 @@ in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --><scxml
<state id="s0">
<onentry>
- <send event="event1" delay="2s">
+ <send event="event1" delayexpr="'50ms'">
<param name="aParam" expr="Var1"/>
</send>
<assign location="Var1" expr="2"/>
diff --git a/test/w3c/ecma/test187.scxml b/test/w3c/ecma/test187.scxml
index d03c16d..c4f2a6f 100644
--- a/test/w3c/ecma/test187.scxml
+++ b/test/w3c/ecma/test187.scxml
@@ -6,7 +6,7 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis
<state id="s0">
<onentry>
- <send event="timeout" delay="10s"/>
+ <send event="timeout" delayexpr="'50ms'"/>
</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="ecmascript">
<state id="sub0">
<onentry>
- <send event="childToParent" target="#_parent" delay="1s"/>
+ <send event="childToParent" target="#_parent" delayexpr="'25ms'"/>
</onentry>
<transition target="subFinal"/>
</state>
diff --git a/test/w3c/ecma/test207.scxml b/test/w3c/ecma/test207.scxml
index aa5786a..fe30bf1 100644
--- a/test/w3c/ecma/test207.scxml
+++ b/test/w3c/ecma/test207.scxml
@@ -6,7 +6,7 @@ raised in another session, but the spec doesn't define any way to refer to an ev
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="10s"/>
+ <send event="timeout" delayexpr="'100ms'"/>
</onentry>
<invoke type="scxml">
<content>
@@ -18,8 +18,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="ecmascript">
<state id="sub0">
<onentry>
- <send event="event1" id="foo" delay="3s"/>
- <send event="event2" delay="5s"/>
+ <send event="event1" id="foo" delayexpr="'50ms'"/>
+ <send event="event2" delayexpr="'75ms'"/>
<send target="#_parent" event="childToParent"/>
</onentry>
diff --git a/test/w3c/ecma/test208.scxml b/test/w3c/ecma/test208.scxml
index 6faa9c1..043e537 100644
--- a/test/w3c/ecma/test208.scxml
+++ b/test/w3c/ecma/test208.scxml
@@ -4,8 +4,8 @@ we get event1 or an error first, cancel didn't work and we fail. --><scxml xmln
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" delayexpr="'50ms'"/>
+ <send event="event2" delayexpr="'75ms'"/>
<cancel sendid="foo"/>
</onentry>
diff --git a/test/w3c/ecma/test210.scxml b/test/w3c/ecma/test210.scxml
index e29b65d..f103ecd 100644
--- a/test/w3c/ecma/test210.scxml
+++ b/test/w3c/ecma/test210.scxml
@@ -6,8 +6,8 @@ delayed event1. Thus we get event2 first and pass. If we get event1 or an erro
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" delayexpr="'50ms'"/>
+ <send event="event2" delayexpr="'75ms'"/>
<assign location="Var1" expr="'foo'"/>
<cancel sendidexpr="Var1"/>
</onentry>
diff --git a/test/w3c/ecma/test236.scxml b/test/w3c/ecma/test236.scxml
index 700c6f8..acb1cda 100644
--- a/test/w3c/ecma/test236.scxml
+++ b/test/w3c/ecma/test236.scxml
@@ -5,7 +5,7 @@ events after the done.invoke. Hence timeout indicates success --><scxml xmlns
<state id="s0">
<onentry>
- <send event="timeout" delay="2s"/>
+ <send event="timeout" delayexpr="'100ms'"/>
</onentry>
<invoke type="http://www.w3.org/TR/scxml/">
<content>
diff --git a/test/w3c/ecma/test237.scxml b/test/w3c/ecma/test237.scxml
index b23811d..442b04c 100644
--- a/test/w3c/ecma/test237.scxml
+++ b/test/w3c/ecma/test237.scxml
@@ -6,7 +6,7 @@ the time timeout2 fires, success --><scxml xmlns="http://www.w3.org/2005/07/sc
<state id="s0">
<onentry>
- <send event="timeout1" delay="1s"/>
+ <send event="timeout1" delayexpr="'50ms'"/>
</onentry>
<invoke type="http://www.w3.org/TR/scxml/">
<content>
@@ -14,7 +14,7 @@ the time timeout2 fires, success --><scxml xmlns="http://www.w3.org/2005/07/sc
<scxml initial="sub0" version="1.0" datamodel="ecmascript">
<state id="sub0">
<onentry>
- <send event="timeout" delay="2s"/>
+ <send event="timeout" delayexpr="'100ms'"/>
</onentry>
<transition event="timeout" target="subFinal"/>
</state>
@@ -29,7 +29,7 @@ the time timeout2 fires, success --><scxml xmlns="http://www.w3.org/2005/07/sc
<state id="s1">
<onentry>
- <send event="timeout2" delay="2s"/>
+ <send event="timeout2" delayexpr="'75ms'"/>
</onentry>
<!-- here we should NOT get done.invoke -->
<transition event="done.invoke" target="fail"/>
diff --git a/test/w3c/ecma/test409.scxml b/test/w3c/ecma/test409.scxml
index 9b4f1aa..0fa71a2 100644
--- a/test/w3c/ecma/test409.scxml
+++ b/test/w3c/ecma/test409.scxml
@@ -5,7 +5,7 @@ be raised. Therefore the timeout should fire to indicate success --><scxml xm
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="1s"/>
+ <send event="timeout" delayexpr="'50ms'"/>
</onentry>
<transition event="timeout" target="pass"/>
diff --git a/test/w3c/ecma/test422.scxml b/test/w3c/ecma/test422.scxml
index 803f75f..637ff77 100644
--- a/test/w3c/ecma/test422.scxml
+++ b/test/w3c/ecma/test422.scxml
@@ -10,7 +10,7 @@ in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermor
</datamodel>
<state id="s1" initial="s11">
<onentry>
- <send event="timeout" delay="5s"/>
+ <send event="timeout" delayexpr="'100ms'"/>
</onentry>
<transition event="invokeS1 invokeS12">
<assign location="Var1" expr="Var1 + 1"/>
diff --git a/test/w3c/ecma/test423.scxml b/test/w3c/ecma/test423.scxml
index f6287ab..ab6c84f 100644
--- a/test/w3c/ecma/test423.scxml
+++ b/test/w3c/ecma/test423.scxml
@@ -4,7 +4,7 @@
<state id="s0">
<onentry>
<send event="externalEvent1"/>
- <send event="externalEvent2" delay="1s"/>
+ <send event="externalEvent2" delayexpr="'50ms'"/>
<raise event="internalEvent"/>
</onentry>
<!-- in this state we should process only internalEvent -->
diff --git a/test/w3c/ecma/test553.scxml b/test/w3c/ecma/test553.scxml
index 114c4a2..0beddea 100644
--- a/test/w3c/ecma/test553.scxml
+++ b/test/w3c/ecma/test553.scxml
@@ -5,7 +5,7 @@ of <send>'s args causes an error.. --><scxml xmlns="http://www.w3.org/2005/07/s
<state id="s0">
<onentry>
<!-- timeout event -->
- <send event="timeout" delay="3s"/>
+ <send event="timeout" delayexpr="'50ms'"/>
<!-- include a non-existing var in the namelist -->
<send event="event1" namelist="Var2"/>
</onentry>
diff --git a/test/w3c/ecma/test554.scxml b/test/w3c/ecma/test554.scxml
index b328ae9..960f5ac 100644
--- a/test/w3c/ecma/test554.scxml
+++ b/test/w3c/ecma/test554.scxml
@@ -5,7 +5,7 @@ before the timer goes off. --><scxml xmlns="http://www.w3.org/2005/07/scxml" xm
<state id="s0">
<onentry>
- <send event="timer" delay="2s"/>
+ <send event="timer" delayexpr="'50ms'"/>
</onentry>
<!-- namelist references an undeclared variable -->
diff --git a/test/w3c/ecma/test579.scxml b/test/w3c/ecma/test579.scxml
index f89b1a9..c315f82 100644
--- a/test/w3c/ecma/test579.scxml
+++ b/test/w3c/ecma/test579.scxml
@@ -14,7 +14,7 @@ parent state has been visited and exited, the default history content must not b
</transition>
</initial>
<onentry>
- <send delay="2s" event="timeout"/>
+ <send delayexpr="'50ms'" event="timeout"/>
<raise event="event1"/>
</onentry>
<onexit>
diff --git a/test/w3c/txml/test175.txml b/test/w3c/txml/test175.txml
index aba7ac4..0c5065d 100644
--- a/test/w3c/txml/test175.txml
+++ b/test/w3c/txml/test175.txml
@@ -10,9 +10,9 @@ event1 will be raised first. Succeed if event1 occurs before event2, otherwise
<state id="s0">
<onentry>
- <assign conf:location="1" conf:quoteExpr="3s"/>
- <send conf:delayExpr="1" event="event2"/>
- <send delay="1s" event="event1"/>
+ <assign conf:location="1" conf:quoteExpr="1s"/>
+ <send conf:delayFromVar="1" event="event2"/>
+ <send conf:delay=".5" event="event1"/>
</onentry>
<transition event="event1" target="s1"/>
diff --git a/test/w3c/txml/test185.txml b/test/w3c/txml/test185.txml
index c036cbf..f9663c5 100644
--- a/test/w3c/txml/test185.txml
+++ b/test/w3c/txml/test185.txml
@@ -7,7 +7,7 @@
<state id="s0">
<onentry>
- <send event="event2" delay="2s"/>
+ <send event="event2" conf:delay="1"/>
<send event="event1"/>
</onentry>
diff --git a/test/w3c/txml/test186.txml b/test/w3c/txml/test186.txml
index e91c290..ef903f8 100644
--- a/test/w3c/txml/test186.txml
+++ b/test/w3c/txml/test186.txml
@@ -11,7 +11,7 @@ in the interval.) If var2 ends up == 1, we pass. Otherwise we fail -->
<state id="s0">
<onentry>
- <send event="event1" delay="2s">
+ <send event="event1" conf:delay="1">
<param name="aParam" conf:varExpr="1"/>
</send>
<assign conf:location="1" conf:expr="2"/>
diff --git a/test/w3c/txml/test187.txml b/test/w3c/txml/test187.txml
index 994a489..a39b6a3 100644
--- a/test/w3c/txml/test187.txml
+++ b/test/w3c/txml/test187.txml
@@ -9,7 +9,7 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis
<state id="s0" >
<onentry>
- <send event="timeout" delay="10s"/>
+ <send event="timeout" conf:delay="1"/>
</onentry>
<invoke type="scxml" >
<content>
@@ -17,7 +17,7 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis
<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="childToParent" target="#_parent" delay="1s"/>
+ <send event="childToParent" target="#_parent" conf:delay=".5"/>
</onentry>
<transition target="subFinal"/>
</state>
diff --git a/test/w3c/txml/test207.txml b/test/w3c/txml/test207.txml
index 6893dcf..df37f54 100644
--- a/test/w3c/txml/test207.txml
+++ b/test/w3c/txml/test207.txml
@@ -10,7 +10,7 @@ raised in another session, but the spec doesn't define any way to refer to an ev
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="10s"/>
+ <send event="timeout" conf:delay="2"/>
</onentry>
<invoke type="scxml">
<content>
@@ -22,8 +22,8 @@ raised in another session, but the spec doesn't define any way to refer to an ev
<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="event1" id="foo" delay="3s"/>
- <send event="event2" delay="5s"/>
+ <send event="event1" id="foo" conf:delay="1"/>
+ <send event="event2" conf:delay="1.5"/>
<send target="#_parent" event="childToParent"/>
</onentry>
diff --git a/test/w3c/txml/test208.txml b/test/w3c/txml/test208.txml
index 5a86e6d..cce0316 100644
--- a/test/w3c/txml/test208.txml
+++ b/test/w3c/txml/test208.txml
@@ -8,8 +8,8 @@ we get event1 or an error first, cancel didn't work and we fail. -->
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" conf:delay="1"/>
+ <send event="event2" conf:delay="1.5"/>
<cancel sendid="foo"/>
</onentry>
diff --git a/test/w3c/txml/test210.txml b/test/w3c/txml/test210.txml
index 402ed36..24fdce0 100644
--- a/test/w3c/txml/test210.txml
+++ b/test/w3c/txml/test210.txml
@@ -10,8 +10,8 @@ delayed event1. Thus we get event2 first and pass. If we get event1 or an erro
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" conf:delay="1"/>
+ <send event="event2" conf:delay="1.5"/>
<assign conf:location="1" conf:quoteExpr="foo"/>
<cancel conf:sendIDExpr="1"/>
</onentry>
diff --git a/test/w3c/txml/test236.txml b/test/w3c/txml/test236.txml
index 5d18c2f..34e76ab 100644
--- a/test/w3c/txml/test236.txml
+++ b/test/w3c/txml/test236.txml
@@ -9,7 +9,7 @@ events after the done.invoke. Hence timeout indicates success -->
<state id="s0">
<onentry>
- <send event="timeout" delay="2s"/>
+ <send event="timeout" conf:delay="2"/>
</onentry>
<invoke type="http://www.w3.org/TR/scxml/">
<content>
diff --git a/test/w3c/txml/test237.txml b/test/w3c/txml/test237.txml
index c6097bc..5923705 100644
--- a/test/w3c/txml/test237.txml
+++ b/test/w3c/txml/test237.txml
@@ -10,7 +10,7 @@ the time timeout2 fires, success -->
<state id="s0">
<onentry>
- <send event="timeout1" delay="1s"/>
+ <send event="timeout1" conf:delay="1"/>
</onentry>
<invoke type="http://www.w3.org/TR/scxml/">
<content>
@@ -18,7 +18,7 @@ the time timeout2 fires, 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="2"/>
</onentry>
<transition event="timeout" target="subFinal"/>
</state>
@@ -33,7 +33,7 @@ the time timeout2 fires, success -->
<state id="s1">
<onentry>
- <send event="timeout2" delay="2s"/>
+ <send event="timeout2" conf:delay="1.5"/>
</onentry>
<!-- here we should NOT get done.invoke -->
<transition event="done.invoke" conf:targetfail=""/>
diff --git a/test/w3c/txml/test409.txml b/test/w3c/txml/test409.txml
index abc92ee..020f097 100644
--- a/test/w3c/txml/test409.txml
+++ b/test/w3c/txml/test409.txml
@@ -9,7 +9,7 @@ be raised. Therefore the timeout should fire to indicate success -->
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="1s"/>
+ <send event="timeout" conf:delay="1"/>
</onentry>
<transition event="timeout" conf:targetpass=""/>
diff --git a/test/w3c/txml/test422.txml b/test/w3c/txml/test422.txml
index 2e830d9..0349bd0 100644
--- a/test/w3c/txml/test422.txml
+++ b/test/w3c/txml/test422.txml
@@ -13,7 +13,7 @@ in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermor
</datamodel>
<state id="s1" initial="s11">
<onentry>
- <send event="timeout" delay="5s"/>
+ <send event="timeout" conf:delay="2"/>
</onentry>
<transition event="invokeS1 invokeS12">
<conf:incrementID id="1"/>
diff --git a/test/w3c/txml/test423.txml b/test/w3c/txml/test423.txml
index fd64587..0e877cf 100644
--- a/test/w3c/txml/test423.txml
+++ b/test/w3c/txml/test423.txml
@@ -7,7 +7,7 @@
<state id="s0">
<onentry>
<send event="externalEvent1"/>
- <send event="externalEvent2" delay="1s"/>
+ <send event="externalEvent2" conf:delay="1"/>
<raise event="internalEvent"/>
</onentry>
<!-- in this state we should process only internalEvent -->
diff --git a/test/w3c/txml/test553.txml b/test/w3c/txml/test553.txml
index 322d4bb..0c6a622 100644
--- a/test/w3c/txml/test553.txml
+++ b/test/w3c/txml/test553.txml
@@ -9,7 +9,7 @@ of <send>'s args causes an error.. -->
<state id="s0">
<onentry>
<!-- timeout event -->
- <send event="timeout" delay="3s"/>
+ <send event="timeout" conf:delay="1"/>
<!-- include a non-existing var in the namelist -->
<send event="event1" conf:namelist="2"/>
</onentry>
diff --git a/test/w3c/txml/test554.txml b/test/w3c/txml/test554.txml
index d9ad55b..663424f 100644
--- a/test/w3c/txml/test554.txml
+++ b/test/w3c/txml/test554.txml
@@ -9,7 +9,7 @@ before the timer goes off. -->
<state id="s0">
<onentry>
- <send event="timer" delay="2s"/>
+ <send event="timer" conf:delay="1"/>
</onentry>
<!-- namelist references an undeclared variable -->
diff --git a/test/w3c/txml/test579.txml b/test/w3c/txml/test579.txml
index 7c48c37..9b1ef2a 100644
--- a/test/w3c/txml/test579.txml
+++ b/test/w3c/txml/test579.txml
@@ -18,7 +18,7 @@ parent state has been visited and exited, the default history content must not b
</transition>
</initial>
<onentry>
- <send delay="2s" event="timeout"/>
+ <send conf:delay="1" event="timeout"/>
<raise event="event1"/>
</onentry>
<onexit>
diff --git a/test/w3c/update-txml.sh b/test/w3c/update-txml.sh
index b733c6b..09a9602 100755
--- a/test/w3c/update-txml.sh
+++ b/test/w3c/update-txml.sh
@@ -9,4 +9,9 @@ wget -rl1 -Atxml,txt,xsl http://www.w3.org/Voice/2013/scxml-irp/
find ./www.w3.org -name "*.txml" -exec cp {} ./txml \;
find ./www.w3.org -name "*.txt" -exec cp {} ./txml \;
find ./www.w3.org -name "*.xsl" -exec cp {} . \;
-rm -rf www.w3.org \ No newline at end of file
+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
+
+rm confEcma.xsle \ No newline at end of file
diff --git a/test/w3c/xpath/test175.scxml b/test/w3c/xpath/test175.scxml
index 8dfd670..67fa473 100644
--- a/test/w3c/xpath/test175.scxml
+++ b/test/w3c/xpath/test175.scxml
@@ -7,9 +7,9 @@ event1 will be raised first. Succeed if event1 occurs before event2, otherwise
<state id="s0">
<onentry>
- <assign location="$Var1" expr="'3s'"/>
+ <assign location="$Var1" expr="'1s'"/>
<send delayexpr="$Var1" event="event2"/>
- <send delay="1s" event="event1"/>
+ <send delayexpr="'.5s'" event="event1"/>
</onentry>
<transition event="event1" target="s1"/>
diff --git a/test/w3c/xpath/test185.scxml b/test/w3c/xpath/test185.scxml
index c6b4b48..387086d 100644
--- a/test/w3c/xpath/test185.scxml
+++ b/test/w3c/xpath/test185.scxml
@@ -4,7 +4,7 @@
<state id="s0">
<onentry>
- <send event="event2" delay="2s"/>
+ <send event="event2" delayexpr="'1s'"/>
<send event="event1"/>
</onentry>
diff --git a/test/w3c/xpath/test186.scxml b/test/w3c/xpath/test186.scxml
index 8353bf2..8121a17 100644
--- a/test/w3c/xpath/test186.scxml
+++ b/test/w3c/xpath/test186.scxml
@@ -8,7 +8,7 @@ in the interval.) If var2 ends up == 1, we pass. Otherwise we fail --><scxml
<state id="s0">
<onentry>
- <send event="event1" delay="2s">
+ <send event="event1" delayexpr="'1s'">
<param name="aParam" expr="$Var1/text()"/>
</send>
<assign location="$Var1" expr="2"/>
diff --git a/test/w3c/xpath/test187.scxml b/test/w3c/xpath/test187.scxml
index 12cbb8b..5cbb817 100644
--- a/test/w3c/xpath/test187.scxml
+++ b/test/w3c/xpath/test187.scxml
@@ -6,7 +6,7 @@ parent session, should not receive childToParent. If it does, we fail. Otherwis
<state id="s0">
<onentry>
- <send event="timeout" delay="10s"/>
+ <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="xpath">
<state id="sub0">
<onentry>
- <send event="childToParent" target="#_parent" delay="1s"/>
+ <send event="childToParent" target="#_parent" delayexpr="'.5s'"/>
</onentry>
<transition target="subFinal"/>
</state>
diff --git a/test/w3c/xpath/test207.scxml b/test/w3c/xpath/test207.scxml
index e74ec8f..b99e511 100644
--- a/test/w3c/xpath/test207.scxml
+++ b/test/w3c/xpath/test207.scxml
@@ -6,7 +6,7 @@ raised in another session, but the spec doesn't define any way to refer to an ev
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="10s"/>
+ <send event="timeout" delayexpr="'2s'"/>
</onentry>
<invoke type="scxml">
<content>
@@ -18,8 +18,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="xpath">
<state id="sub0">
<onentry>
- <send event="event1" id="foo" delay="3s"/>
- <send event="event2" delay="5s"/>
+ <send event="event1" id="foo" delayexpr="'1s'"/>
+ <send event="event2" delayexpr="'1.5s'"/>
<send target="#_parent" event="childToParent"/>
</onentry>
diff --git a/test/w3c/xpath/test208.scxml b/test/w3c/xpath/test208.scxml
index e768e7c..4aa9ebe 100644
--- a/test/w3c/xpath/test208.scxml
+++ b/test/w3c/xpath/test208.scxml
@@ -4,8 +4,8 @@ we get event1 or an error first, cancel didn't work and we fail. --><scxml xmln
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" delayexpr="'1s'"/>
+ <send event="event2" delayexpr="'1.5s'"/>
<cancel sendid="foo"/>
</onentry>
diff --git a/test/w3c/xpath/test210.scxml b/test/w3c/xpath/test210.scxml
index 5ec8f23..17dfc95 100644
--- a/test/w3c/xpath/test210.scxml
+++ b/test/w3c/xpath/test210.scxml
@@ -6,8 +6,8 @@ delayed event1. Thus we get event2 first and pass. If we get event1 or an erro
<state id="s0">
<onentry>
- <send id="foo" event="event1" delay="1s"/>
- <send event="event2" delay="5s"/>
+ <send id="foo" event="event1" delayexpr="'1s'"/>
+ <send event="event2" delayexpr="'1.5s'"/>
<assign location="$Var1" expr="'foo'"/>
<cancel sendidexpr="$Var1"/>
</onentry>
diff --git a/test/w3c/xpath/test236.scxml b/test/w3c/xpath/test236.scxml
index 2c2d41a..0964f71 100644
--- a/test/w3c/xpath/test236.scxml
+++ b/test/w3c/xpath/test236.scxml
@@ -5,7 +5,7 @@ events after the done.invoke. Hence timeout indicates success --><scxml xmlns
<state id="s0">
<onentry>
- <send event="timeout" delay="2s"/>
+ <send event="timeout" delayexpr="'2s'"/>
</onentry>
<invoke type="http://www.w3.org/TR/scxml/">
<content>
diff --git a/test/w3c/xpath/test237.scxml b/test/w3c/xpath/test237.scxml
index 19c2480..a81e36a 100644
--- a/test/w3c/xpath/test237.scxml
+++ b/test/w3c/xpath/test237.scxml
@@ -6,7 +6,7 @@ the time timeout2 fires, success --><scxml xmlns="http://www.w3.org/2005/07/sc
<state id="s0">
<onentry>
- <send event="timeout1" delay="1s"/>
+ <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 xmlns="http://www.w3.org/2005/07/sc
<scxml initial="sub0" version="1.0" datamodel="xpath">
<state id="sub0">
<onentry>
- <send event="timeout" delay="2s"/>
+ <send event="timeout" delayexpr="'2s'"/>
</onentry>
<transition event="timeout" target="subFinal"/>
</state>
@@ -29,7 +29,7 @@ the time timeout2 fires, success --><scxml xmlns="http://www.w3.org/2005/07/sc
<state id="s1">
<onentry>
- <send event="timeout2" delay="2s"/>
+ <send event="timeout2" delayexpr="'1.5s'"/>
</onentry>
<!-- here we should NOT get done.invoke -->
<transition event="done.invoke" target="fail"/>
diff --git a/test/w3c/xpath/test409.scxml b/test/w3c/xpath/test409.scxml
index 2d5a63d..e321d46 100644
--- a/test/w3c/xpath/test409.scxml
+++ b/test/w3c/xpath/test409.scxml
@@ -5,7 +5,7 @@ be raised. Therefore the timeout should fire to indicate success --><scxml xm
<state id="s0" initial="s01">
<onentry>
- <send event="timeout" delay="1s"/>
+ <send event="timeout" delayexpr="'1s'"/>
</onentry>
<transition event="timeout" target="pass"/>
diff --git a/test/w3c/xpath/test422.scxml b/test/w3c/xpath/test422.scxml
index f62098d..4ef15ce 100644
--- a/test/w3c/xpath/test422.scxml
+++ b/test/w3c/xpath/test422.scxml
@@ -10,7 +10,7 @@ in s11. So we should receive invokeS1, invokeS12, but not invokeS12. Furthermor
</datamodel>
<state id="s1" initial="s11">
<onentry>
- <send event="timeout" delay="5s"/>
+ <send event="timeout" delayexpr="'2s'"/>
</onentry>
<transition event="invokeS1 invokeS12">
<assign location="$Var1" expr="$Var1 + 1"/>
diff --git a/test/w3c/xpath/test423.scxml b/test/w3c/xpath/test423.scxml
index 7726963..f3bf8c8 100644
--- a/test/w3c/xpath/test423.scxml
+++ b/test/w3c/xpath/test423.scxml
@@ -4,7 +4,7 @@
<state id="s0">
<onentry>
<send event="externalEvent1"/>
- <send event="externalEvent2" delay="1s"/>
+ <send event="externalEvent2" delayexpr="'1s'"/>
<raise event="internalEvent"/>
</onentry>
<!-- in this state we should process only internalEvent -->
diff --git a/test/w3c/xpath/test553.scxml b/test/w3c/xpath/test553.scxml
index eb6f24b..00bd1e8 100644
--- a/test/w3c/xpath/test553.scxml
+++ b/test/w3c/xpath/test553.scxml
@@ -5,7 +5,7 @@ of <send>'s args causes an error.. --><scxml xmlns="http://www.w3.org/2005/07/s
<state id="s0">
<onentry>
<!-- timeout event -->
- <send event="timeout" delay="3s"/>
+ <send event="timeout" delayexpr="'1s'"/>
<!-- include a non-existing var in the namelist -->
<send event="event1" namelist="$Var2"/>
</onentry>
diff --git a/test/w3c/xpath/test554.scxml b/test/w3c/xpath/test554.scxml
index 64274aa..1a2b58a 100644
--- a/test/w3c/xpath/test554.scxml
+++ b/test/w3c/xpath/test554.scxml
@@ -5,7 +5,7 @@ before the timer goes off. --><scxml xmlns="http://www.w3.org/2005/07/scxml" xm
<state id="s0">
<onentry>
- <send event="timer" delay="2s"/>
+ <send event="timer" delayexpr="'1s'"/>
</onentry>
<!-- namelist references an undeclared variable -->
diff --git a/test/w3c/xpath/test579.scxml b/test/w3c/xpath/test579.scxml
index 311c0a9..28cdf28 100644
--- a/test/w3c/xpath/test579.scxml
+++ b/test/w3c/xpath/test579.scxml
@@ -14,7 +14,7 @@ parent state has been visited and exited, the default history content must not b
</transition>
</initial>
<onentry>
- <send delay="2s" event="timeout"/>
+ <send delayexpr="'1s'" event="timeout"/>
<raise event="event1"/>
</onentry>
<onexit>