diff options
Diffstat (limited to 'tests/auto/statemachine/tst_statemachine.cpp')
-rw-r--r-- | tests/auto/statemachine/tst_statemachine.cpp | 22 |
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" |