summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@theqtcompany.com>2015-03-26 11:11:23 +0100
committerErik Verbruggen <erik.verbruggen@theqtcompany.com>2015-03-30 11:43:50 +0300
commit2de05c0d608b0af4ec5da9370de876579a9c3b61 (patch)
tree44db3223073e939e87a5c4e78920257288305bd8
parent43ea5d5e9f35cb6cf9f8e86fbf8372dbdbe1f600 (diff)
Generate a single QTest that embeds all scion tests.
Change-Id: Ibe7a9a2ba0332e9578e109fb96baac37874cd575 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
-rw-r--r--.gitignore2
-rw-r--r--src/qscxmllib/scxmlparser.cpp44
-rw-r--r--src/qscxmllib/scxmlparser.h11
-rw-r--r--src/qscxmllib/scxmlstatetable.h6
-rwxr-xr-xtests/3rdparty/gen-scion-tests.py52
-rw-r--r--tests/3rdparty/scion.h277
-rw-r--r--tests/3rdparty/scion.qrc553
-rw-r--r--tests/scion/scion.pro21
-rw-r--r--tests/scion/tst_scion.cpp385
-rw-r--r--tests/tests.pro1
10 files changed, 1330 insertions, 22 deletions
diff --git a/.gitignore b/.gitignore
index c4a42e9..7cef2c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,5 @@ moc_*.cpp
/tests/testCpp/testCpp
tst_cppgen
+qrc_*.cpp
+tst_scion
diff --git a/src/qscxmllib/scxmlparser.cpp b/src/qscxmllib/scxmlparser.cpp
index b2cb194..59f45a9 100644
--- a/src/qscxmllib/scxmlparser.cpp
+++ b/src/qscxmllib/scxmlparser.cpp
@@ -49,7 +49,7 @@ void ScxmlParser::ensureInitialState(const QByteArray &initialId)
if (!initialId.isEmpty()) {
QAbstractState *initialState = table()->idToValue<QAbstractState>(initialId, true);
if (initialState) {
- m_currentParent->setInitialState(initialState);
+ currentParent()->setInitialState(initialState);
} else {
addError(QStringLiteral("could not resolve '%1', for the initial state of %2")
.arg(QString::fromUtf8(initialId),
@@ -58,9 +58,9 @@ void ScxmlParser::ensureInitialState(const QByteArray &initialId)
return;
}
}
- if (!m_currentParent->initialState()) {
+ if (!currentParent()->initialState()) {
QAbstractState *firstState = 0;
- loopOnSubStates(m_currentParent, [&firstState](QState *s) -> bool {
+ loopOnSubStates(currentParent(), [&firstState](QState *s) -> bool {
if (!firstState)
firstState = s;
return false;
@@ -69,11 +69,18 @@ void ScxmlParser::ensureInitialState(const QByteArray &initialId)
firstState = s;
});
if (firstState) {
- m_currentParent->setInitialState(firstState);
+ currentParent()->setInitialState(firstState);
}
}
}
+QState *ScxmlParser::currentParent() const
+{
+ QState *parent = qobject_cast<QState*>(m_currentParent);
+ Q_ASSERT(!m_currentParent || parent);
+ return parent;
+}
+
void ScxmlParser::parse()
{
m_table = new StateTable;
@@ -182,7 +189,7 @@ void ScxmlParser::parse()
m_stack.append(pNew);
} else if (elName == QLatin1String("state")) {
if (!checkAttributes(attributes, "|id,initial")) return;
- QState *newState = new ScxmlState(m_currentParent);
+ QState *newState = new ScxmlState(currentParent());
if (!maybeId(attributes, newState)) return;
ParserState pNew = ParserState(ParserState::State);
pNew.initialId = attributes.value(QLatin1String("initial")).toUtf8();
@@ -190,25 +197,25 @@ void ScxmlParser::parse()
m_stack.append(pNew);
} else if (elName == QLatin1String("parallel")) {
if (!checkAttributes(attributes, "|id")) return;
- QState *newState = new ScxmlState(m_currentParent);
+ QState *newState = new ScxmlState(currentParent());
if (!maybeId(attributes, newState)) return;
newState->setChildMode(QState::ParallelStates);
m_currentState = m_currentParent = newState;
m_stack.append(ParserState(ParserState::Parallel));
} else if (elName == QLatin1String("initial")) {
if (!checkAttributes(attributes, "")) return;
- if (m_currentParent->childMode() == QState::ParallelStates) {
+ if (currentParent()->childMode() == QState::ParallelStates) {
addError(QStringLiteral("Explicit initial state for parallel states not supported (only implicitly through the initial states of its substates)"));
m_state = ParsingError;
return;
}
ParserState pNew(ParserState::Initial);
- QState *newState = new ScxmlInitialState(m_currentParent);
+ QState *newState = new ScxmlInitialState(currentParent());
m_currentState = m_currentParent = newState;
m_stack.append(pNew);
} else if (elName == QLatin1String("transition")) {
if (!checkAttributes(attributes, "|event,cond,target,type")) return;
- m_currentTransition = new ScxmlTransition(m_currentParent,
+ m_currentTransition = new ScxmlTransition(currentParent(),
attributes.value(QLatin1String("event")).toUtf8().split(' '),
attributes.value(QLatin1String("target")).toUtf8().split(' '),
attributes.value(QLatin1String("cond")).toString());
@@ -222,15 +229,16 @@ void ScxmlParser::parse()
m_stack.append(pNew);
} else if (elName == QLatin1String("final")) {
if (!checkAttributes(attributes, "|id")) return;
- QFinalState *newState = new QFinalState(m_currentParent);
+ ScxmlFinalState *newState = new ScxmlFinalState(currentParent());
if (!maybeId(attributes, newState)) return;
- m_currentState = newState;
+ m_currentState = m_currentParent = newState;
m_stack.append(ParserState(ParserState::Final));
} else if (elName == QLatin1String("onentry")) {
if (!checkAttributes(attributes, "")) return;
ParserState pNew(ParserState::OnEntry);
switch (m_stack.last().kind) {
case ParserState::Final:
+ Q_ASSERT(qobject_cast<ScxmlFinalState *>(m_currentState));
pNew.instructionContainer = &qobject_cast<ScxmlFinalState *>(m_currentState)->onEntryInstruction;
break;
case ParserState::State:
@@ -262,7 +270,7 @@ void ScxmlParser::parse()
m_stack.append(pNew);
} else if (elName == QLatin1String("history")) {
if (!checkAttributes(attributes, "|id,type")) return;
- QHistoryState *newState = new QHistoryState(m_currentParent);
+ QHistoryState *newState = new QHistoryState(currentParent());
if (!maybeId(attributes, newState)) return;
QStringRef type = attributes.value(QLatin1String("type"));
if (type.isEmpty() || type == QLatin1String("shallow")) {
@@ -275,7 +283,7 @@ void ScxmlParser::parse()
return;
}
ParserState pNew = ParserState(ParserState::History);
- m_currentState = newState;
+ m_currentState = m_currentParent = newState;
m_stack.append(pNew);
} else if (elName == QLatin1String("raise")) {
if (!checkAttributes(attributes, "event")) return;
@@ -337,7 +345,7 @@ void ScxmlParser::parse()
data.id = attributes.value(QLatin1String("id")).toString();
data.src = attributes.value(QLatin1String("src")).toString();
data.expr = attributes.value(QLatin1String("expr")).toString();
- data.context = m_currentParent;
+ data.context = currentParent();
table()->m_data.append(data);
m_stack.append(ParserState(ParserState::Data));
} else if (elName == QLatin1String("assign")) {
@@ -477,12 +485,12 @@ void ScxmlParser::parse()
m_currentState = m_currentParent = m_currentParent->parentState();
break;
case ParserState::Initial: {
- if (m_currentParent->transitions().size() != 1) {
+ if (currentParent()->transitions().size() != 1) {
addError("initial state should have exactly one transition");
m_state = ParsingError;
return;
}
- ScxmlTransition *t = qobject_cast<ScxmlTransition *>(m_currentParent->transitions().first());
+ ScxmlTransition *t = qobject_cast<ScxmlTransition *>(currentParent()->transitions().first());
if (!t->eventSelector.isEmpty()
|| !t->conditionalExp.isEmpty()) {
addError("transition in initial state should have no event or condition");
@@ -508,11 +516,11 @@ void ScxmlParser::parse()
}
case ParserState::Final:
case ParserState::History:
- m_currentState = m_currentParent;
+ m_currentState = m_currentParent = m_currentParent->parentState();
break;
case ParserState::Transition:
Q_ASSERT(m_currentTransition);
- m_currentParent->addTransition(m_currentTransition);
+ currentParent()->addTransition(m_currentTransition);
m_currentTransition = 0;
case ParserState::OnEntry:
break;
diff --git a/src/qscxmllib/scxmlparser.h b/src/qscxmllib/scxmlparser.h
index 21ce49e..e6492ea 100644
--- a/src/qscxmllib/scxmlparser.h
+++ b/src/qscxmllib/scxmlparser.h
@@ -72,8 +72,11 @@ struct ParserState {
bool collectChars();
- ParserState(Kind kind=None) :
- kind(kind) { }
+ ParserState(Kind kind=None)
+ : kind(kind)
+ , instruction(0)
+ , instructionContainer(0)
+ {}
~ParserState() { }
bool validChild(ParserState::Kind child) const;
@@ -146,9 +149,11 @@ private:
QStringList optionalNames);
void ensureInitialState(const QByteArray &initialId);
+ QState *currentParent() const;
+
StateTable *m_table;
ScxmlTransition *m_currentTransition;
- QState *m_currentParent;
+ QAbstractState *m_currentParent;
QAbstractState *m_currentState;
LoaderFunction m_loader;
QStringList m_namespacesToIgnore;
diff --git a/src/qscxmllib/scxmlstatetable.h b/src/qscxmllib/scxmlstatetable.h
index 36b1efb..d844f10 100644
--- a/src/qscxmllib/scxmlstatetable.h
+++ b/src/qscxmllib/scxmlstatetable.h
@@ -607,7 +607,11 @@ class SCXML_EXPORT ScxmlFinalState: public QFinalState
{
Q_OBJECT
public:
- ScxmlFinalState(QState *parent) : QFinalState(parent) { }
+ ScxmlFinalState(QState *parent)
+ : QFinalState(parent)
+ , onEntryInstruction(this)
+ , onExitInstruction(this)
+ {}
StateTable *table() const;
virtual bool init();
diff --git a/tests/3rdparty/gen-scion-tests.py b/tests/3rdparty/gen-scion-tests.py
new file mode 100755
index 0000000..40c66fa
--- /dev/null
+++ b/tests/3rdparty/gen-scion-tests.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+
+# Copyright (c) 2015 Digia Plc
+# For any questions to Digia, please use contact form at http://qt.digia.com/
+#
+# All Rights Reserved.
+#
+# NOTICE: All information contained herein is, and remains
+# the property of Digia Plc and its suppliers,
+# if any. The intellectual and technical concepts contained
+# herein are proprietary to Digia Plc
+# and its suppliers and may be covered by Finnish and Foreign Patents,
+# patents in process, and are protected by trade secret or copyright law.
+# Dissemination of this information or reproduction of this material
+# is strictly forbidden unless prior written permission is obtained
+# from Digia Plc.
+
+from os import walk
+from os.path import isfile, join, splitext
+
+f = open("scion.qrc", "w")
+f.write("<!DOCTYPE RCC><RCC version=\"1.0\">\n<qresource>\n")
+
+g = open("scion.h","w")
+g.write("const char *testBases[] = {")
+
+first = True
+mypath = "scion-tests/scxml-test-framework/test"
+for root, _, filenames in walk(mypath):
+ for filename in filenames:
+ if filename.endswith(".scxml"):
+ base = join(root,splitext(filename)[0])
+ json = base+".json"
+ if isfile(json):
+ f.write("<file>")
+ f.write(join(root,filename))
+ f.write("</file>\n")
+ f.write("<file>")
+ f.write(json)
+ f.write("</file>\n")
+ if first:
+ first = False
+ else:
+ g.write(",")
+ g.write("\n \"" + base + "\"")
+
+f.write("</qresource></RCC>\n")
+f.close()
+
+g.write("\n};\n")
+g.close()
+
diff --git a/tests/3rdparty/scion.h b/tests/3rdparty/scion.h
new file mode 100644
index 0000000..8dbfacd
--- /dev/null
+++ b/tests/3rdparty/scion.h
@@ -0,0 +1,277 @@
+const char *testBases[] = {
+ "scion-tests/scxml-test-framework/test/actionSend/send1",
+ "scion-tests/scxml-test-framework/test/actionSend/send2",
+ "scion-tests/scxml-test-framework/test/actionSend/send3",
+ "scion-tests/scxml-test-framework/test/actionSend/send4",
+ "scion-tests/scxml-test-framework/test/actionSend/send5",
+ "scion-tests/scxml-test-framework/test/actionSend/send6",
+ "scion-tests/scxml-test-framework/test/actionSend/send7",
+ "scion-tests/scxml-test-framework/test/actionSend/send8",
+ "scion-tests/scxml-test-framework/test/assign-current-small-step/test0",
+ "scion-tests/scxml-test-framework/test/assign-current-small-step/test1",
+ "scion-tests/scxml-test-framework/test/assign-current-small-step/test2",
+ "scion-tests/scxml-test-framework/test/assign-current-small-step/test3",
+ "scion-tests/scxml-test-framework/test/assign-current-small-step/test4",
+ "scion-tests/scxml-test-framework/test/atom3-basic-tests/m0",
+ "scion-tests/scxml-test-framework/test/atom3-basic-tests/m1",
+ "scion-tests/scxml-test-framework/test/atom3-basic-tests/m2",
+ "scion-tests/scxml-test-framework/test/atom3-basic-tests/m3",
+ "scion-tests/scxml-test-framework/test/basic/basic0",
+ "scion-tests/scxml-test-framework/test/basic/basic1",
+ "scion-tests/scxml-test-framework/test/basic/basic2",
+ "scion-tests/scxml-test-framework/test/cond-js/test0",
+ "scion-tests/scxml-test-framework/test/cond-js/test1",
+ "scion-tests/scxml-test-framework/test/cond-js/test2",
+ "scion-tests/scxml-test-framework/test/cond-js/TestConditionalTransition",
+ "scion-tests/scxml-test-framework/test/default-initial-state/initial1",
+ "scion-tests/scxml-test-framework/test/default-initial-state/initial2",
+ "scion-tests/scxml-test-framework/test/delayedSend/send1",
+ "scion-tests/scxml-test-framework/test/delayedSend/send2",
+ "scion-tests/scxml-test-framework/test/delayedSend/send3",
+ "scion-tests/scxml-test-framework/test/documentOrder/documentOrder0",
+ "scion-tests/scxml-test-framework/test/foreach/test1",
+ "scion-tests/scxml-test-framework/test/hierarchy/hier0",
+ "scion-tests/scxml-test-framework/test/hierarchy/hier1",
+ "scion-tests/scxml-test-framework/test/hierarchy/hier2",
+ "scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test0",
+ "scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test1",
+ "scion-tests/scxml-test-framework/test/history/history0",
+ "scion-tests/scxml-test-framework/test/history/history1",
+ "scion-tests/scxml-test-framework/test/history/history2",
+ "scion-tests/scxml-test-framework/test/history/history3",
+ "scion-tests/scxml-test-framework/test/history/history4",
+ "scion-tests/scxml-test-framework/test/history/history5",
+ "scion-tests/scxml-test-framework/test/history/history6",
+ "scion-tests/scxml-test-framework/test/if-else/test0",
+ "scion-tests/scxml-test-framework/test/in/TestInPredicate",
+ "scion-tests/scxml-test-framework/test/internal-transitions/test0",
+ "scion-tests/scxml-test-framework/test/internal-transitions/test1",
+ "scion-tests/scxml-test-framework/test/more-parallel/test0",
+ "scion-tests/scxml-test-framework/test/more-parallel/test1",
+ "scion-tests/scxml-test-framework/test/more-parallel/test10",
+ "scion-tests/scxml-test-framework/test/more-parallel/test2",
+ "scion-tests/scxml-test-framework/test/more-parallel/test3",
+ "scion-tests/scxml-test-framework/test/more-parallel/test4",
+ "scion-tests/scxml-test-framework/test/more-parallel/test5",
+ "scion-tests/scxml-test-framework/test/more-parallel/test6",
+ "scion-tests/scxml-test-framework/test/more-parallel/test7",
+ "scion-tests/scxml-test-framework/test/more-parallel/test8",
+ "scion-tests/scxml-test-framework/test/more-parallel/test9",
+ "scion-tests/scxml-test-framework/test/multiple-events-per-transition/test1",
+ "scion-tests/scxml-test-framework/test/parallel/test0",
+ "scion-tests/scxml-test-framework/test/parallel/test1",
+ "scion-tests/scxml-test-framework/test/parallel/test2",
+ "scion-tests/scxml-test-framework/test/parallel/test3",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test0",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test1",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test10",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test11",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test12",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test13",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test14",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test15",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test16",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test17",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test18",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test19",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test2",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test20",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test21",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test22",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test23",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test24",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test25",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test26",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test27",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test28",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test29",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test3",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test30",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test31",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test4",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test5",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test6",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test7",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test8",
+ "scion-tests/scxml-test-framework/test/parallel+interrupt/test9",
+ "scion-tests/scxml-test-framework/test/script/test0",
+ "scion-tests/scxml-test-framework/test/script/test1",
+ "scion-tests/scxml-test-framework/test/script/test2",
+ "scion-tests/scxml-test-framework/test/script-src/test0",
+ "scion-tests/scxml-test-framework/test/script-src/test1",
+ "scion-tests/scxml-test-framework/test/script-src/test2",
+ "scion-tests/scxml-test-framework/test/script-src/test3",
+ "scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/star0",
+ "scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test0",
+ "scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test1",
+ "scion-tests/scxml-test-framework/test/send-data/send1",
+ "scion-tests/scxml-test-framework/test/send-internal/test0",
+ "scion-tests/scxml-test-framework/test/targetless-transition/test0",
+ "scion-tests/scxml-test-framework/test/targetless-transition/test1",
+ "scion-tests/scxml-test-framework/test/targetless-transition/test2",
+ "scion-tests/scxml-test-framework/test/targetless-transition/test3",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test144.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test147.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test148.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test149.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test150.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test151.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test152.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test153.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test155.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test156.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test158.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test159.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test172.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test173.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test174.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test175.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test176.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test178.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test179.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test183.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test185.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test186.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test187.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test194.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test198.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test199.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test200.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test201.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test205.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test208.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test210.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test215.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test216.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test220.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test223.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test224.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test225.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test226.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test228.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test233.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test235.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test236.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test239.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test247.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test250.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test276.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test278.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test279.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test280.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test286.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test287.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test294.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test298.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test301.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test302.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test303.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test304.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test307.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test309.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test310.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test311.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test312.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test313.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test314.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test318.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test319.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test321.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test322.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test323.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test324.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test325.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test326.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test329.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test330.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test331.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test332.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test333.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test335.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test337.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test338.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test339.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test342.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test343.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test344.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test346.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test355.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test364.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test372.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test375.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test376.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test377.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test378.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test387.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test388.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test396.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test399.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test401.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test402.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test403a.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test403b.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test403c.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test404.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test405.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test406.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test407.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test409.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test411.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test412.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test413.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test416.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test417.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test419.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test421.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test423.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test436.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test441a.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test441b.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test444.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test445.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test448.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test449.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test451.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test453.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test456.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test487.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test488.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test503.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test504.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test505.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test506.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test521.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test525.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test527.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test528.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test529.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test530.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test533.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test550.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test551.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test552.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test554.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test557.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test558.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test560.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test562.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test569.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test570.txml",
+ "scion-tests/scxml-test-framework/test/w3c-ecma/test576.txml"
+};
diff --git a/tests/3rdparty/scion.qrc b/tests/3rdparty/scion.qrc
new file mode 100644
index 0000000..f01cb3b
--- /dev/null
+++ b/tests/3rdparty/scion.qrc
@@ -0,0 +1,553 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+<file>scion-tests/scxml-test-framework/test/actionSend/send1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send1.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send2.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send3.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send4.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send4.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send5.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send5.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send6.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send6.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send7.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send7.json</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send8.scxml</file>
+<file>scion-tests/scxml-test-framework/test/actionSend/send8.json</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test4.scxml</file>
+<file>scion-tests/scxml-test-framework/test/assign-current-small-step/test4.json</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m0.json</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m1.json</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m2.json</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/atom3-basic-tests/m3.json</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic0.json</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic1.json</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/basic/basic2.json</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/TestConditionalTransition.scxml</file>
+<file>scion-tests/scxml-test-framework/test/cond-js/TestConditionalTransition.json</file>
+<file>scion-tests/scxml-test-framework/test/default-initial-state/initial1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/default-initial-state/initial1.json</file>
+<file>scion-tests/scxml-test-framework/test/default-initial-state/initial2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/default-initial-state/initial2.json</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send1.json</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send2.json</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/delayedSend/send3.json</file>
+<file>scion-tests/scxml-test-framework/test/documentOrder/documentOrder0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/documentOrder/documentOrder0.json</file>
+<file>scion-tests/scxml-test-framework/test/foreach/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/foreach/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier0.json</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier1.json</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy/hier2.json</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/hierarchy+documentOrder/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history0.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history1.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history2.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history3.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history4.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history4.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history5.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history5.json</file>
+<file>scion-tests/scxml-test-framework/test/history/history6.scxml</file>
+<file>scion-tests/scxml-test-framework/test/history/history6.json</file>
+<file>scion-tests/scxml-test-framework/test/if-else/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/if-else/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/in/TestInPredicate.scxml</file>
+<file>scion-tests/scxml-test-framework/test/in/TestInPredicate.json</file>
+<file>scion-tests/scxml-test-framework/test/internal-transitions/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/internal-transitions/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/internal-transitions/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/internal-transitions/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test10.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test10.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test4.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test4.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test5.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test5.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test6.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test6.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test7.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test7.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test8.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test8.json</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test9.scxml</file>
+<file>scion-tests/scxml-test-framework/test/more-parallel/test9.json</file>
+<file>scion-tests/scxml-test-framework/test/multiple-events-per-transition/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/multiple-events-per-transition/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test10.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test10.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test11.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test11.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test12.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test12.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test13.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test13.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test14.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test14.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test15.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test15.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test16.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test16.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test17.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test17.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test18.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test18.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test19.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test19.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test20.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test20.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test21.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test21.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test22.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test22.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test23.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test23.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test24.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test24.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test25.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test25.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test26.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test26.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test27.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test27.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test28.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test28.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test29.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test29.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test30.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test30.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test31.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test31.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test4.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test4.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test5.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test5.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test6.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test6.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test7.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test7.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test8.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test8.json</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test9.scxml</file>
+<file>scion-tests/scxml-test-framework/test/parallel+interrupt/test9.json</file>
+<file>scion-tests/scxml-test-framework/test/script/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/script/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/script/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/script-src/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/star0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/star0.json</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/scxml-prefix-event-name-matching/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/send-data/send1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/send-data/send1.json</file>
+<file>scion-tests/scxml-test-framework/test/send-internal/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/send-internal/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test0.scxml</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test0.json</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test1.scxml</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test1.json</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test2.scxml</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test2.json</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test3.scxml</file>
+<file>scion-tests/scxml-test-framework/test/targetless-transition/test3.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test144.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test144.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test147.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test147.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test148.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test148.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test149.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test149.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test150.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test150.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test151.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test151.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test152.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test152.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test153.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test153.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test155.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test155.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test156.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test156.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test158.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test158.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test159.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test159.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test172.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test172.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test173.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test173.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test174.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test174.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test175.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test175.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test176.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test176.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test178.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test178.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test179.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test179.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test183.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test183.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test185.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test185.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test186.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test186.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test187.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test187.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test194.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test194.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test198.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test198.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test199.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test199.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test200.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test200.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test201.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test201.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test205.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test205.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test208.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test208.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test210.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test210.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test215.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test215.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test216.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test216.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test220.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test220.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test223.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test223.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test224.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test224.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test225.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test225.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test226.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test226.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test228.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test228.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test233.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test233.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test235.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test235.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test236.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test236.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test239.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test239.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test247.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test247.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test250.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test250.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test276.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test276.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test278.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test278.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test279.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test279.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test280.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test280.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test286.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test286.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test287.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test287.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test294.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test294.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test298.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test298.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test301.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test301.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test302.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test302.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test303.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test303.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test304.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test304.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test307.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test307.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test309.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test309.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test310.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test310.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test311.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test311.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test312.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test312.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test313.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test313.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test314.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test314.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test318.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test318.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test319.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test319.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test321.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test321.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test322.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test322.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test323.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test323.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test324.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test324.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test325.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test325.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test326.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test326.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test329.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test329.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test330.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test330.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test331.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test331.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test332.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test332.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test333.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test333.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test335.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test335.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test337.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test337.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test338.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test338.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test339.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test339.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test342.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test342.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test343.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test343.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test344.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test344.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test346.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test346.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test355.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test355.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test364.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test364.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test372.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test372.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test375.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test375.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test376.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test376.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test377.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test377.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test378.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test378.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test387.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test387.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test388.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test388.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test396.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test396.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test399.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test399.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test401.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test401.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test402.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test402.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403a.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403a.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403b.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403b.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403c.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test403c.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test404.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test404.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test405.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test405.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test406.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test406.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test407.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test407.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test409.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test409.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test411.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test411.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test412.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test412.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test413.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test413.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test416.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test416.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test417.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test417.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test419.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test419.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test421.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test421.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test423.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test423.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test436.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test436.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test441a.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test441a.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test441b.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test441b.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test444.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test444.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test445.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test445.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test448.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test448.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test449.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test449.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test451.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test451.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test453.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test453.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test456.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test456.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test487.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test487.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test488.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test488.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test503.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test503.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test504.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test504.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test505.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test505.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test506.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test506.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test521.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test521.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test525.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test525.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test527.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test527.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test528.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test528.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test529.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test529.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test530.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test530.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test533.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test533.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test550.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test550.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test551.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test551.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test552.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test552.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test554.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test554.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test557.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test557.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test558.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test558.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test560.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test560.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test562.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test562.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test569.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test569.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test570.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test570.txml.json</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test576.txml.scxml</file>
+<file>scion-tests/scxml-test-framework/test/w3c-ecma/test576.txml.json</file>
+</qresource></RCC>
diff --git a/tests/scion/scion.pro b/tests/scion/scion.pro
new file mode 100644
index 0000000..1f53b13
--- /dev/null
+++ b/tests/scion/scion.pro
@@ -0,0 +1,21 @@
+include (../../src/qscxmllib/qscxmllib.pri)
+
+QT += testlib
+CONFIG += testcase
+
+QT += core qml
+QT -= gui
+
+TARGET = tst_scion
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+RESOURCES = ../3rdparty/scion.qrc
+
+SOURCES += \
+ tst_scion.cpp
+
+HEADERS += \
+ $$PWD/../3rdparty/scion.h
diff --git a/tests/scion/tst_scion.cpp b/tests/scion/tst_scion.cpp
new file mode 100644
index 0000000..4dedb45
--- /dev/null
+++ b/tests/scion/tst_scion.cpp
@@ -0,0 +1,385 @@
+/****************************************************************************
+ **
+ ** Copyright (c) 2015 Digia Plc
+ ** For any questions to Digia, please use contact form at http://qt.digia.com/
+ **
+ ** All Rights Reserved.
+ **
+ ** NOTICE: All information contained herein is, and remains
+ ** the property of Digia Plc and its suppliers,
+ ** if any. The intellectual and technical concepts contained
+ ** herein are proprietary to Digia Plc
+ ** and its suppliers and may be covered by Finnish and Foreign Patents,
+ ** patents in process, and are protected by trade secret or copyright law.
+ ** Dissemination of this information or reproduction of this material
+ ** is strictly forbidden unless prior written permission is obtained
+ ** from Digia Plc.
+ ****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QJsonDocument>
+
+#include <qscxmllib/scxmlparser.h>
+
+#include "../3rdparty/scion.h"
+
+enum { SpyWaitTime = 500 };
+
+static QSet<QString> weFailOnThese = QSet<QString>()
+ ;
+
+static QSet<QString> weDieOnThese = QSet<QString>()
+ << QLatin1String("scion-tests/scxml-test-framework/test/delayedSend/send1")
+ << QLatin1String("scion-tests/scxml-test-framework/test/delayedSend/send2")
+ << QLatin1String("scion-tests/scxml-test-framework/test/delayedSend/send3")
+ << QLatin1String("scion-tests/scxml-test-framework/test/foreach/test1")
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history3") // infinite loop?
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history5") // infinite loop?
+ << QLatin1String("scion-tests/scxml-test-framework/test/send-data/send1")
+ << QLatin1String("scion-tests/scxml-test-framework/test/send-internal/test0")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test144.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test147.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test150.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test151.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test152.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test153.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test155.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test156.txml")
+ // the ones below here require <send> to work
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test172.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test173.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test174.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test175.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test176.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test178.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test179.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test183.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test185.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test186.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test187.txml") // sub state machine?
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test194.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test198.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test199.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test200.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test200.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test201.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test201.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test205.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test205.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test207.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test208.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test208.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test210.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test210.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test215.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test216.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test220.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test223.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test224.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test225.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test226.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test228.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test229.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test230.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test232.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test233.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test233.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test234.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test235.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test236.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test236.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test237.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test239.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test240.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test241.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test242.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test243.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test244.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test245.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test247.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test250.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test250.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test252.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test253.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test330.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test331.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test332.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test333.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test336.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test338.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test338.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test342.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test364.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test372.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test376.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test378.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test387.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test388.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test399.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test401.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test402.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test403a.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test403c.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test405.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test406.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test409.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test411.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test412.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test416.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test417.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test419.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test421.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test422.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test423.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test423.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test521.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test530.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test554.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test560.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test562.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test570.txml")
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test576.txml")
+ // <foreach>
+ << QLatin1String("scion-tests/scxml-test-framework/test/w3c-ecma/test525.txml")
+ ;
+
+static QSet<QString> differentSemantics = QSet<QString>()
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history0")
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history1")
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history2")
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history4")
+ << QLatin1String("scion-tests/scxml-test-framework/test/history/history6")
+ ;
+
+using namespace Scxml;
+
+class TestScion: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+ void scion_data();
+ void scion();
+
+private:
+ bool runTest(StateTable *stateMachine, const QJsonObject &testDescription);
+};
+
+void TestScion::initTestCase()
+{
+}
+
+void TestScion::scion_data()
+{
+ QTest::addColumn<QString>("scxml");
+ QTest::addColumn<QString>("json");
+ QTest::addColumn<bool>("weFailOnThis");
+
+ const int nrOfTests = sizeof(testBases)/sizeof(const char *);
+ for (int i = 0; i < nrOfTests; ++i) {
+ QString base = QString::fromUtf8(testBases[i]);
+ if (weDieOnThese.contains(base) || differentSemantics.contains(base))
+ continue;
+ QTest::newRow(testBases[i]) << base + QLatin1String(".scxml")
+ << base + QLatin1String(".json")
+ << weFailOnThese.contains(base);
+ }
+}
+
+void TestScion::scion()
+{
+ QFETCH(QString, scxml);
+ QFETCH(QString, json);
+ QFETCH(bool, weFailOnThis);
+
+ fprintf(stderr, "\n\n%s\n\n", qPrintable(json));
+
+ QFile jsonFile(QLatin1String(":/") + json);
+ QVERIFY(jsonFile.open(QIODevice::ReadOnly));
+ auto testDescription = QJsonDocument::fromJson(jsonFile.readAll());
+ jsonFile.close();
+
+ QFile scxmlFile(QLatin1String(":/") + scxml);
+ QVERIFY(scxmlFile.open(QIODevice::ReadOnly));
+ QXmlStreamReader xmlReader(&scxmlFile);
+ ScxmlParser parser(&xmlReader);
+ parser.parse();
+ QCOMPARE(parser.state(), ScxmlParser::FinishedParsing);
+ QVERIFY(parser.errors().isEmpty());
+ scxmlFile.close();
+
+ if (weFailOnThis)
+ QEXPECT_FAIL("", "We are expected to fail", Continue);
+ QVERIFY(runTest(parser.table(), testDescription.object()));
+}
+
+static QList<QByteArray> getStates(const QJsonObject &obj, const QString &key)
+{
+ QList<QByteArray> states;
+ auto jsonStates = obj.value(key).toArray();
+ for (int i = 0, ei = jsonStates.size(); i != ei; ++i) {
+ QString state = jsonStates.at(i).toString();
+ Q_ASSERT(!state.isEmpty());
+ states.append(state.toUtf8());
+ }
+ std::sort(states.begin(), states.end());
+ return states;
+}
+
+static bool verifyStates(StateTable *stateMachine, const QJsonObject &stateDescription, const QString &key)
+{
+ auto current = stateMachine->currentStates();
+ std::sort(current.begin(), current.end());
+ auto expected = getStates(stateDescription, key);
+ if (current == expected)
+ return true;
+
+ qWarning() << "Incorrect" << key << "!";
+ qWarning() << "Current configuration:" << current;
+ qWarning() << "Expected configuration:" << expected;
+ return false;
+}
+
+static bool playEvent(StateTable *stateMachine, const QJsonObject &eventDescription)
+{
+ if (!stateMachine->isRunning()) {
+ qWarning() << "State machine stopped running!";
+ return false;
+ }
+
+ Q_ASSERT(eventDescription.contains(QLatin1String("event")));
+ auto event = eventDescription.value(QLatin1String("event")).toObject();
+ auto eventName = event.value(QLatin1String("name")).toString().toUtf8();
+ Q_ASSERT(!eventName.isEmpty());
+ ScxmlEvent::EventType type = ScxmlEvent::External;
+ if (event.contains(QLatin1String("type"))) {
+ QString typeStr = event.value(QLatin1String("type")).toString();
+ if (typeStr.compare(QLatin1String("external"), Qt::CaseInsensitive) == 0)
+ type = ScxmlEvent::Internal;
+ else if (typeStr.compare(QLatin1String("platform"), Qt::CaseInsensitive) == 0)
+ type = ScxmlEvent::Platform;
+ else {
+ qWarning() << "unexpected event type in " << eventDescription;
+ return false;
+ }
+ }
+ QVariantList datas;
+ QStringList dataNames;
+ // remove ifs and rely on defaults?
+ if (event.contains(QLatin1String("data"))) {
+ QJsonValue dataVal = event.value(QLatin1String("data"));
+ if (dataVal.isObject()) {
+ QJsonObject dataObj = dataVal.toObject();
+ for (QJsonObject::const_iterator i = dataObj.constBegin(); i != dataObj.constEnd(); ++i) {
+ dataNames.append(i.key());
+ datas.append(i.value().toVariant());
+ }
+ } else {
+ datas.append(dataVal.toVariant());
+ }
+ }
+ QByteArray sendid;
+ if (event.contains(QLatin1String("sendid")))
+ sendid = event.value(QLatin1String("sendid")).toString().toUtf8();
+ QString origin;
+ if (event.contains(QLatin1String("origin")))
+ origin = event.value(QLatin1String("origin")).toString();
+ QString origintype;
+ if (event.contains(QLatin1String("origintype")))
+ origintype = event.value(QLatin1String("origintype")).toString();
+ QByteArray invokeid;
+ if (event.contains(QLatin1String("invokeid")))
+ invokeid = event.value(QLatin1String("invokeid")).toString().toUtf8();
+ stateMachine->submitEvent(eventName, datas, dataNames, type, sendid, origin, origintype, invokeid);
+
+ if (!QSignalSpy(stateMachine, SIGNAL(reachedStableState(bool))).wait(SpyWaitTime)) {
+ qWarning() << "State machine did not reach a stable state!";
+ } else if (verifyStates(stateMachine, eventDescription, QLatin1String("nextConfiguration")))
+ return true;
+
+ qWarning() << "... after sending event" << event;
+ return false;
+}
+
+static bool playEvents(StateTable *stateMachine, const QJsonObject &testDescription)
+{
+ auto jsonEvents = testDescription.value(QLatin1String("events"));
+ Q_ASSERT(!jsonEvents.isNull());
+ auto eventsArray = jsonEvents.toArray();
+ for (int i = 0, ei = eventsArray.size(); i != ei; ++i) {
+ if (!playEvent(stateMachine, eventsArray.at(i).toObject()))
+ return false;
+ }
+ return true;
+}
+
+bool TestScion::runTest(StateTable *stateMachine, const QJsonObject &testDescription)
+{
+ QSignalSpy stableStateSpy(stateMachine, SIGNAL(reachedStableState(bool)));
+
+ QJSEngine *jsEngine = new QJSEngine(stateMachine);
+ stateMachine->setEngine(jsEngine);
+ if (!stateMachine->init()) {
+ qWarning() << "init failed";
+ return false;
+ }
+ stateMachine->start();
+ if (!stableStateSpy.wait(SpyWaitTime)) { qWarning() << "failed to reach stable state"; return false; }
+
+ if (!verifyStates(stateMachine, testDescription, QLatin1String("initialConfiguration")))
+ return false;
+
+ return playEvents(stateMachine, testDescription);
+}
+
+QTEST_MAIN(TestScion)
+#include "tst_scion.moc"
diff --git a/tests/tests.pro b/tests/tests.pro
index ff04319..ede5bdf 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -3,4 +3,5 @@ TEMPLATE = subdirs
SUBDIRS += \
cppgen \
+ scion \
testCpp