From 17899954bffd902b61ee4c9d339095cb618e4346 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 8 Jun 2016 13:33:26 +0200 Subject: Replace the QStateMachine-based implementation. Under the 'hood a table-based state machine is now used instead of the QStateMachine. The advantage is that states and transitions are no longer QObjects but integers (so no (private) object allocations), and we're no longer hijacking the QStateMachinePrivate to work around some implementation details. Change-Id: I47ab47ab01cbb2204b9ca0e4cdd6a72faf724ce3 Reviewed-by: Ulf Hermann Reviewed-by: Erik Verbruggen --- tests/auto/statemachine/eventoccurred.scxml | 16 +++++++------- tests/auto/statemachine/tst_statemachine.cpp | 31 +++++++++++++++++----------- 2 files changed, 27 insertions(+), 20 deletions(-) (limited to 'tests/auto/statemachine') diff --git a/tests/auto/statemachine/eventoccurred.scxml b/tests/auto/statemachine/eventoccurred.scxml index 87aaf41..ffceb3f 100644 --- a/tests/auto/statemachine/eventoccurred.scxml +++ b/tests/auto/statemachine/eventoccurred.scxml @@ -41,13 +41,13 @@ - - - - - + + + + + diff --git a/tests/auto/statemachine/tst_statemachine.cpp b/tests/auto/statemachine/tst_statemachine.cpp index fc20118..e2e0d22 100644 --- a/tests/auto/statemachine/tst_statemachine.cpp +++ b/tests/auto/statemachine/tst_statemachine.cpp @@ -62,18 +62,18 @@ void tst_StateMachine::stateNames_data() << (QStringList() << QString("a1") << QString("a2") << QString("final")); QTest::newRow("stateNames-notCompressed") << QString(":/tst_statemachine/statenames.scxml") << false - << (QStringList() << QString("a") << QString("a1") << QString("a2") << QString("b") << QString("final") << QString("top")); + << (QStringList() << QString("top") << QString("a") << QString("a1") << QString("a2") << QString("b") << QString("final")); QTest::newRow("stateNamesNested-compressed") << QString(":/tst_statemachine/statenamesnested.scxml") << true << (QStringList() << QString("a") << QString("b")); QTest::newRow("stateNamesNested-notCompressed") << QString(":/tst_statemachine/statenamesnested.scxml") << false - << (QStringList() << QString("a") << QString("b") << QString("super_top")); + << (QStringList() << QString("super_top") << QString("a") << QString("b")); QTest::newRow("ids1") << QString(":/tst_statemachine/ids1.scxml") << false - << (QStringList() << QString("_") << QString("foo-bar") - << QString("foo.bar") << QString("foo_bar")); + << (QStringList() << QString("foo.bar") << QString("foo-bar") + << QString("foo_bar") << QString("_")); } void tst_StateMachine::stateNames() @@ -100,13 +100,13 @@ void tst_StateMachine::activeStateNames_data() << (QStringList() << QString("a1") << QString("final")); QTest::newRow("stateNames-notCompressed") << QString(":/tst_statemachine/statenames.scxml") << false - << (QStringList() << QString("a") << QString("a1") << QString("b") << QString("final") << QString("top")); + << (QStringList() << QString("top") << QString("a") << QString("a1") << QString("b") << QString("final")); QTest::newRow("stateNamesNested-compressed") << QString(":/tst_statemachine/statenamesnested.scxml") << true - << (QStringList() << QString("a")<< QString("b")); + << (QStringList() << QString("a") << QString("b")); QTest::newRow("stateNamesNested-notCompressed") << QString(":/tst_statemachine/statenamesnested.scxml") << false - << (QStringList() << QString("a") << QString("b") << QString("super_top")); + << (QStringList() << QString("super_top") << QString("a") << QString("b")); } void tst_StateMachine::activeStateNames() @@ -150,12 +150,19 @@ void tst_StateMachine::eventOccurred() finishedSpy.wait(5000); - QCOMPARE(eventOccurredSpy.count(), 4); - QCOMPARE(qvariant_cast(eventOccurredSpy.at(0).at(0)).name(), QLatin1String("internalEvent2")); - QCOMPARE(qvariant_cast(eventOccurredSpy.at(1).at(0)).name(), QLatin1String("externalEvent")); - QCOMPARE(qvariant_cast(eventOccurredSpy.at(2).at(0)).name(), QLatin1String("timeout")); - QCOMPARE(qvariant_cast(eventOccurredSpy.at(3).at(0)).name(), QLatin1String("done.state.top")); + auto event = [&eventOccurredSpy](int eventIndex) -> QScxmlEvent { + return qvariant_cast(eventOccurredSpy.at(eventIndex).at(0)); + }; + QCOMPARE(eventOccurredSpy.count(), 4); + QCOMPARE(event(0).name(), QLatin1String("internalEvent2")); + QCOMPARE(event(0).eventType(), QScxmlEvent::ExternalEvent); + QCOMPARE(event(1).name(), QLatin1String("externalEvent")); + QCOMPARE(event(1).eventType(), QScxmlEvent::ExternalEvent); + QCOMPARE(event(2).name(), QLatin1String("timeout")); + QCOMPARE(event(2).eventType(), QScxmlEvent::ExternalEvent); + QCOMPARE(event(3).name(), QLatin1String("done.state.top")); + QCOMPARE(event(3).eventType(), QScxmlEvent::ExternalEvent); QCOMPARE(externalEventOccurredSpy.count(), 1); QCOMPARE(qvariant_cast(externalEventOccurredSpy.at(0).at(0)).name(), QLatin1String("externalEvent")); -- cgit v1.2.3