diff options
author | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2016-06-08 13:33:26 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-06-09 14:13:57 +0000 |
commit | 17899954bffd902b61ee4c9d339095cb618e4346 (patch) | |
tree | 6d4a74f2c8e41f3760bf9df4ec982af48cf2b798 /tests/auto/statemachine | |
parent | 60b5508b3f0fabee545e8cfd907ed4875ed55ffc (diff) |
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 <ulf.hermann@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'tests/auto/statemachine')
-rw-r--r-- | tests/auto/statemachine/eventoccurred.scxml | 16 | ||||
-rw-r--r-- | tests/auto/statemachine/tst_statemachine.cpp | 31 |
2 files changed, 27 insertions, 20 deletions
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 @@ <transition event="timeout" target="final"/> </state> <final id="final"/> - </state> - <!-- - The done.state.* events are internal, so expose them to the spy too by re-sending them as - external events: - --> - <transition event="done.state.*" cond="_event.type === 'internal'"> - <send eventexpr="_event.name"/> - </transition> + <!-- + The done.state.* events are internal, so expose them to the spy too by re-sending them as + external events: + --> + <transition event="done.state.*" cond="_event.type === 'internal'"> + <send eventexpr="_event.name"/> + </transition> + </state> </scxml> 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<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")); + auto event = [&eventOccurredSpy](int eventIndex) -> QScxmlEvent { + return qvariant_cast<QScxmlEvent>(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<QScxmlEvent>(externalEventOccurredSpy.at(0).at(0)).name(), QLatin1String("externalEvent")); |