summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/statemachine/tst_statemachine.cpp19
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(