diff options
Diffstat (limited to 'tests/auto/statemachine/tst_statemachine.cpp')
-rw-r--r-- | tests/auto/statemachine/tst_statemachine.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/statemachine/tst_statemachine.cpp b/tests/auto/statemachine/tst_statemachine.cpp index 7a269b2..fccfd25 100644 --- a/tests/auto/statemachine/tst_statemachine.cpp +++ b/tests/auto/statemachine/tst_statemachine.cpp @@ -46,6 +46,7 @@ private Q_SLOTS: void activeStateNames_data(); void activeStateNames(); void connectToFinal(); + void eventOccurred(); }; void tst_StateMachine::stateNames_data() @@ -128,6 +129,32 @@ void tst_StateMachine::connectToFinal() QVERIFY(stateMachine->connectToState(QString("final"), &dummy, SLOT(deleteLater()))); } +void tst_StateMachine::eventOccurred() +{ + QScopedPointer<QScxmlStateMachine> stateMachine(QScxmlStateMachine::fromFile(QString(":/tst_statemachine/eventoccurred.scxml"))); + QVERIFY(!stateMachine.isNull()); + + qRegisterMetaType<QScxmlEvent>(); + QSignalSpy finishedSpy(stateMachine.data(), SIGNAL(finished())); + QSignalSpy eventOccurredSpy(stateMachine.data(), SIGNAL(eventOccurred(QScxmlEvent))); + QSignalSpy externalEventOccurredSpy(stateMachine.data(), SIGNAL(externalEventOccurred(QScxmlEvent))); + + stateMachine->start(); + + finishedSpy.wait(5000); + + QCOMPARE(eventOccurredSpy.count(), 4); + QCOMPARE(qvariant_cast<QScxmlEvent>(eventOccurredSpy.at(0).at(0)).name(), QLatin1String("internalEvent2")); + QCOMPARE(qvariant_cast<QScxmlEvent>(eventOccurredSpy.at(1).at(0)).name(), QLatin1String("externalEvent")); + QCOMPARE(qvariant_cast<QScxmlEvent>(eventOccurredSpy.at(2).at(0)).name(), QLatin1String("timeout")); + QCOMPARE(qvariant_cast<QScxmlEvent>(eventOccurredSpy.at(3).at(0)).name(), QLatin1String("done.state.top")); + + + QCOMPARE(externalEventOccurredSpy.count(), 1); + QCOMPARE(qvariant_cast<QScxmlEvent>(externalEventOccurredSpy.at(0).at(0)).name(), QLatin1String("externalEvent")); +} + + QTEST_MAIN(tst_StateMachine) #include "tst_statemachine.moc" |