summaryrefslogtreecommitdiffstats
path: root/tests/auto/statemachine
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@theqtcompany.com>2016-06-08 13:33:26 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2016-06-09 14:13:57 +0000
commit17899954bffd902b61ee4c9d339095cb618e4346 (patch)
tree6d4a74f2c8e41f3760bf9df4ec982af48cf2b798 /tests/auto/statemachine
parent60b5508b3f0fabee545e8cfd907ed4875ed55ffc (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.scxml16
-rw-r--r--tests/auto/statemachine/tst_statemachine.cpp31
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"));