From 5a4550879d30d1897e9b62e4fb73e7392c4182b8 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 15 Aug 2017 13:04:54 +0200 Subject: Fix the crash when sending an event into not running sevice Task-number: QTBUG-61484 Change-Id: I3cebb3378a73d16901b18ec9465bcacf2e5ad486 Reviewed-by: Ulf Hermann --- .../statemachine/multipleinvokableservices.scxml | 48 ++++++++++++++++++++++ tests/auto/statemachine/tst_statemachine.cpp | 19 ++++++++- tests/auto/statemachine/tst_statemachine.qrc | 1 + 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 tests/auto/statemachine/multipleinvokableservices.scxml (limited to 'tests') diff --git a/tests/auto/statemachine/multipleinvokableservices.scxml b/tests/auto/statemachine/multipleinvokableservices.scxml new file mode 100644 index 0000000..8b20695 --- /dev/null +++ b/tests/auto/statemachine/multipleinvokableservices.scxml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/auto/statemachine/tst_statemachine.cpp b/tests/auto/statemachine/tst_statemachine.cpp index 69d38b6..4575737 100644 --- a/tests/auto/statemachine/tst_statemachine.cpp +++ b/tests/auto/statemachine/tst_statemachine.cpp @@ -56,6 +56,8 @@ private Q_SLOTS: void running(); void invokeStateMachine(); + + void multipleInvokableServices(); // QTBUG-61484 }; void tst_StateMachine::stateNames_data() @@ -384,7 +386,6 @@ void tst_StateMachine::doneDotStateEvent() finishedSpy.wait(5000); QCOMPARE(finishedSpy.count(), 1); QCOMPARE(stateMachine->activeStateNames(true).size(), 1); - qDebug() << stateMachine->activeStateNames(true); QVERIFY(stateMachine->activeStateNames(true).contains(QLatin1String("success"))); } @@ -428,6 +429,22 @@ void tst_StateMachine::invokeStateMachine() QTRY_VERIFY(subMachine->activeStateNames().contains("here")); } +void tst_StateMachine::multipleInvokableServices() +{ + QScopedPointer stateMachine( + QScxmlStateMachine::fromFile(QString(":/tst_statemachine/multipleinvokableservices.scxml"))); + QVERIFY(!stateMachine.isNull()); + + QSignalSpy finishedSpy(stateMachine.data(), SIGNAL(finished())); + stateMachine->start(); + QCOMPARE(stateMachine->isRunning(), true); + + finishedSpy.wait(5000); + QCOMPARE(finishedSpy.count(), 1); + QCOMPARE(stateMachine->activeStateNames(true).size(), 1); + QVERIFY(stateMachine->activeStateNames(true).contains(QLatin1String("success"))); +} + QTEST_MAIN(tst_StateMachine) #include "tst_statemachine.moc" diff --git a/tests/auto/statemachine/tst_statemachine.qrc b/tests/auto/statemachine/tst_statemachine.qrc index 78c1f00..0bd68ff 100644 --- a/tests/auto/statemachine/tst_statemachine.qrc +++ b/tests/auto/statemachine/tst_statemachine.qrc @@ -7,5 +7,6 @@ stateDotDoneEvent.scxml invoke.scxml historystate.scxml + multipleinvokableservices.scxml -- cgit v1.2.3