diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/statemachine/tst_statemachine.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/statemachine/tst_statemachine.cpp b/tests/auto/statemachine/tst_statemachine.cpp index 85d06c8..1aa74f7 100644 --- a/tests/auto/statemachine/tst_statemachine.cpp +++ b/tests/auto/statemachine/tst_statemachine.cpp @@ -31,6 +31,7 @@ private Q_SLOTS: void doneDotStateEvent(); void running(); + void restart(); void invokeStateMachine(); @@ -392,6 +393,24 @@ void tst_StateMachine::running() QCOMPARE(stateMachine->isRunning(), false); } +void tst_StateMachine::restart() +{ + QScopedPointer<QScxmlStateMachine> stateMachine( + QScxmlStateMachine::fromFile(QString(":/tst_statemachine/stateDotDoneEvent.scxml"))); + QVERIFY(!stateMachine.isNull()); + + QSignalSpy finishedSpy(stateMachine.data(), SIGNAL(finished())); + + stateMachine->start(); + finishedSpy.wait(5000); + QCOMPARE(finishedSpy.size(), 1); + QCOMPARE(stateMachine->activeStateNames(true).size(), 1); + QVERIFY(stateMachine->activeStateNames(true).contains(QLatin1String("success"))); + + QTest::ignoreMessage(QtWarningMsg, QRegularExpression("(.*)Can't start finished machine")); + stateMachine->start(); +} + void tst_StateMachine::invokeStateMachine() { QScopedPointer<QScxmlStateMachine> stateMachine( |