diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-02-26 15:49:53 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-03-02 09:13:26 +0000 |
commit | 5a192653b5ba659f72537980a20c707cb39bb10b (patch) | |
tree | 8a31e4d7e769aaedcca4439869953343108c42d4 /tests/auto/core | |
parent | faca25dd611b92d81463cfda935073f73adeeb39 (diff) |
Add support for aspects depending on other aspects
Aspect can define a list of aspect names it depends one. When it is
registered, these will be automatically created if they don't exist
already.
Change-Id: I12852751a6646ad09d09a6958d059ccf2b2e324d
Caveat: this only works with named aspects.
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests/auto/core')
-rw-r--r-- | tests/auto/core/qaspectengine/tst_qaspectengine.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/tests/auto/core/qaspectengine/tst_qaspectengine.cpp b/tests/auto/core/qaspectengine/tst_qaspectengine.cpp index 48443a66f..dd06943f7 100644 --- a/tests/auto/core/qaspectengine/tst_qaspectengine.cpp +++ b/tests/auto/core/qaspectengine/tst_qaspectengine.cpp @@ -72,12 +72,12 @@ private: QNodeId m_rootEntityId; }; -#define FAKE_ASPECT(ClassName) \ +#define FAKE_ASPECT(ClassName, dependAspects) \ class ClassName : public QAbstractAspect \ { \ Q_OBJECT \ public: \ - explicit ClassName(QObject *parent = 0) \ + explicit ClassName(QObject *parent = nullptr) \ : QAbstractAspect(parent) {} \ \ private: \ @@ -100,14 +100,17 @@ private: \ \ return QVariant(); \ } \ + QStringList dependencies() const override { return dependAspects; } \ }; -FAKE_ASPECT(FakeAspect) -FAKE_ASPECT(FakeAspect2) -FAKE_ASPECT(FakeAspect3) +FAKE_ASPECT(FakeAspect, {}) +FAKE_ASPECT(FakeAspect2, {}) +FAKE_ASPECT(FakeAspect3, {}) +FAKE_ASPECT(FakeAspectDependent, {QLatin1String("fake")}) QT3D_REGISTER_ASPECT("fake", FakeAspect) QT3D_REGISTER_ASPECT("otherfake", FakeAspect2) +QT3D_REGISTER_ASPECT("dependfake", FakeAspectDependent) class tst_QAspectEngine : public QObject @@ -298,6 +301,23 @@ private Q_SLOTS: // THEN QVERIFY(!output.isValid()); } + + void shouldRegisterDependentAspects() + { + // GIVEN + QAspectEngine engine; + + // THEN + QVERIFY(engine.aspects().isEmpty()); + + // WHEN + engine.registerAspect("dependfake"); + + // THEN + QCOMPARE(engine.aspects().size(), 2); + QVERIFY(qobject_cast<FakeAspect*>(engine.aspects().at(0))); + QVERIFY(qobject_cast<FakeAspectDependent*>(engine.aspects().at(1))); + } }; QTEST_MAIN(tst_QAspectEngine) |