summaryrefslogtreecommitdiffstats
path: root/tests/auto/statemachine/tst_statemachine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/statemachine/tst_statemachine.cpp')
-rw-r--r--tests/auto/statemachine/tst_statemachine.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/statemachine/tst_statemachine.cpp b/tests/auto/statemachine/tst_statemachine.cpp
index 99d6661..ed1f424 100644
--- a/tests/auto/statemachine/tst_statemachine.cpp
+++ b/tests/auto/statemachine/tst_statemachine.cpp
@@ -31,6 +31,7 @@
#include <QXmlStreamReader>
#include <QtScxml/qscxmlcompiler.h>
#include <QtScxml/qscxmlstatemachine.h>
+#include <QtScxml/qscxmlinvokableservice.h>
#include <QtScxml/private/qscxmlstatemachine_p.h>
Q_DECLARE_METATYPE(QScxmlError);
@@ -52,6 +53,8 @@ private Q_SLOTS:
void doneDotStateEvent();
void running();
+
+ void invokeStateMachine();
};
void tst_StateMachine::stateNames_data()
@@ -387,6 +390,25 @@ void tst_StateMachine::running()
QCOMPARE(stateMachine->isRunning(), false);
}
+void tst_StateMachine::invokeStateMachine()
+{
+ QScopedPointer<QScxmlStateMachine> stateMachine(
+ QScxmlStateMachine::fromFile(QString(":/tst_statemachine/invoke.scxml")));
+ QVERIFY(!stateMachine.isNull());
+
+ stateMachine->start();
+ QCOMPARE(stateMachine->isRunning(), true);
+ QTRY_VERIFY(stateMachine->activeStateNames().contains(QString("anyplace")));
+
+ QVector<QScxmlInvokableService *> services = stateMachine->invokedServices();
+ QCOMPARE(services.length(), 1);
+ QVariant subMachineVariant = services[0]->property("stateMachine");
+ QVERIFY(subMachineVariant.isValid());
+ QScxmlStateMachine *subMachine = qvariant_cast<QScxmlStateMachine *>(subMachineVariant);
+ QVERIFY(subMachine);
+ QTRY_VERIFY(subMachine->activeStateNames().contains("here"));
+}
+
QTEST_MAIN(tst_StateMachine)
#include "tst_statemachine.moc"