From 1806b1b4dd93ab10e0dbe0435596b32aa8b8e1b3 Mon Sep 17 00:00:00 2001 From: Kevin Funk Date: Thu, 17 Nov 2016 22:53:14 +0100 Subject: Add QScxmlStateMachineInfo::stateParent() + tests Change-Id: I3d97e1d4019c68859c9551e4a60d39348cf7ebe1 Reviewed-by: Ulf Hermann --- src/scxml/qscxmlstatemachineinfo.cpp | 11 +++++++++++ src/scxml/qscxmlstatemachineinfo_p.h | 1 + tests/auto/statemachineinfo/tst_statemachineinfo.cpp | 8 ++++++++ 3 files changed, 20 insertions(+) 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 allStates() const; QVector allTransitions() const; QString stateName(int stateId) const; + StateId stateParent(StateId stateId) const; StateType stateType(int stateId) const; QVector 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(QScxmlStateMachineInfo::InvalidStateId)); + QCOMPARE(info->stateParent(states.at(0)), static_cast(QScxmlStateMachineInfo::InvalidStateId)); + QCOMPARE(info->stateParent(states.at(1)), static_cast(QScxmlStateMachineInfo::InvalidStateId)); + QCOMPARE(info->stateParent(states.at(2)), 1); + QCOMPARE(info->stateParent(states.at(3)), 1); + QCOMPARE(info->stateParent(states.at(4)), static_cast(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); -- cgit v1.2.3