summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Funk <kevin.funk@kdab.com>2016-11-17 22:53:14 +0100
committerJan Arne Petersen <jan.petersen@kdab.com>2016-11-22 15:21:17 +0000
commit1806b1b4dd93ab10e0dbe0435596b32aa8b8e1b3 (patch)
tree8e98749a51376ac114901ae05a36a003422d21ba
parent198c94527b48eb402a4043ed5f6c24b04de43f76 (diff)
Add QScxmlStateMachineInfo::stateParent() + tests
Change-Id: I3d97e1d4019c68859c9551e4a60d39348cf7ebe1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r--src/scxml/qscxmlstatemachineinfo.cpp11
-rw-r--r--src/scxml/qscxmlstatemachineinfo_p.h1
-rw-r--r--tests/auto/statemachineinfo/tst_statemachineinfo.cpp8
3 files changed, 20 insertions, 0 deletions
diff --git a/src/scxml/qscxmlstatemachineinfo.cpp b/src/scxml/qscxmlstatemachineinfo.cpp
index 32074cd..7b52f8a 100644
--- a/src/scxml/qscxmlstatemachineinfo.cpp
+++ b/src/scxml/qscxmlstatemachineinfo.cpp
@@ -107,6 +107,17 @@ QString QScxmlStateMachineInfo::stateName(int stateId) const
return QString();
}
+QScxmlStateMachineInfo::StateId QScxmlStateMachineInfo::stateParent(StateId stateId) const
+{
+ Q_D(const QScxmlStateMachineInfo);
+
+ if (stateId < 0 || stateId >= d->stateTable()->stateCount)
+ return InvalidStateId;
+
+ auto state = d->stateTable()->state(stateId);
+ return state.parent;
+}
+
QScxmlStateMachineInfo::StateType QScxmlStateMachineInfo::stateType(StateId stateId) const
{
Q_D(const QScxmlStateMachineInfo);
diff --git a/src/scxml/qscxmlstatemachineinfo_p.h b/src/scxml/qscxmlstatemachineinfo_p.h
index 10d4c02..04d1967 100644
--- a/src/scxml/qscxmlstatemachineinfo_p.h
+++ b/src/scxml/qscxmlstatemachineinfo_p.h
@@ -94,6 +94,7 @@ public: // methods
QVector<StateId> allStates() const;
QVector<TransitionId> allTransitions() const;
QString stateName(int stateId) const;
+ StateId stateParent(StateId stateId) const;
StateType stateType(int stateId) const;
QVector<StateId> stateChildren(StateId stateId) const;
TransitionType transitionType(TransitionId transitionId) const;
diff --git a/tests/auto/statemachineinfo/tst_statemachineinfo.cpp b/tests/auto/statemachineinfo/tst_statemachineinfo.cpp
index 90491d5..efd1840 100644
--- a/tests/auto/statemachineinfo/tst_statemachineinfo.cpp
+++ b/tests/auto/statemachineinfo/tst_statemachineinfo.cpp
@@ -108,6 +108,14 @@ void tst_StateMachineInfo::checkInfo()
QCOMPARE(info->stateName(states.at(3)), QLatin1String("b"));
QCOMPARE(info->stateName(states.at(4)), QLatin1String("theEnd"));
+ QCOMPARE(info->stateParent(QScxmlStateMachineInfo::InvalidState),
+ static_cast<int>(QScxmlStateMachineInfo::InvalidStateId));
+ QCOMPARE(info->stateParent(states.at(0)), static_cast<int>(QScxmlStateMachineInfo::InvalidStateId));
+ QCOMPARE(info->stateParent(states.at(1)), static_cast<int>(QScxmlStateMachineInfo::InvalidStateId));
+ QCOMPARE(info->stateParent(states.at(2)), 1);
+ QCOMPARE(info->stateParent(states.at(3)), 1);
+ QCOMPARE(info->stateParent(states.at(4)), static_cast<int>(QScxmlStateMachineInfo::InvalidStateId));
+
QCOMPARE(info->stateType(states.at(0)), QScxmlStateMachineInfo::NormalState);
QCOMPARE(info->stateType(states.at(1)), QScxmlStateMachineInfo::ParallelState);
QCOMPARE(info->stateType(states.at(2)), QScxmlStateMachineInfo::NormalState);