summaryrefslogtreecommitdiffstats
path: root/tests/auto/core
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-02-26 15:49:53 +0000
committerMike Krus <mike.krus@kdab.com>2020-03-02 09:13:26 +0000
commit5a192653b5ba659f72537980a20c707cb39bb10b (patch)
tree8a31e4d7e769aaedcca4439869953343108c42d4 /tests/auto/core
parentfaca25dd611b92d81463cfda935073f73adeeb39 (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.cpp30
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)