diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-01 17:27:19 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-02 16:20:15 +0000 |
commit | a76d4e32a39befd03dca4faf6d8012a195b537dd (patch) | |
tree | cb303355db999f636af41adf6a3967abb53df0cc /tests | |
parent | d745d6c83ef4a7e1370abbe963920d9d427adae1 (diff) |
Add command support on aspects and QAspectEngine
Change-Id: I5c3847a2779b691a2748083fb768b37d1f629274
Task-Id: QTBUG-49683
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/core/qaspectengine/tst_qaspectengine.cpp | 123 |
1 files changed, 103 insertions, 20 deletions
diff --git a/tests/auto/core/qaspectengine/tst_qaspectengine.cpp b/tests/auto/core/qaspectengine/tst_qaspectengine.cpp index d7a0f9950..4f9bd7b14 100644 --- a/tests/auto/core/qaspectengine/tst_qaspectengine.cpp +++ b/tests/auto/core/qaspectengine/tst_qaspectengine.cpp @@ -42,29 +42,46 @@ using namespace Qt3DCore; -class FakeAspect : public QAbstractAspect -{ - Q_OBJECT -public: - explicit FakeAspect(QObject *parent = 0) - : QAbstractAspect(parent) {} - -private: - void setRootEntity(QEntity *) Q_DECL_OVERRIDE {} - void onInitialize(const QVariantMap &) Q_DECL_OVERRIDE {} - void onStartup() Q_DECL_OVERRIDE {} - void onShutdown() Q_DECL_OVERRIDE {} - void onCleanup() Q_DECL_OVERRIDE {} - void sceneNodeAdded(QSceneChangePtr &) Q_DECL_OVERRIDE {} - void sceneNodeRemoved(QSceneChangePtr &) Q_DECL_OVERRIDE {} - - QVector<QAspectJobPtr> jobsToExecute(qint64) Q_DECL_OVERRIDE - { - return QVector<QAspectJobPtr>(); - } +#define FAKE_ASPECT(ClassName) \ +class ClassName : public QAbstractAspect \ +{ \ + Q_OBJECT \ +public: \ + explicit ClassName(QObject *parent = 0) \ + : QAbstractAspect(parent) {} \ +\ +private: \ + void setRootEntity(QEntity *) Q_DECL_OVERRIDE {} \ + void onInitialize(const QVariantMap &) Q_DECL_OVERRIDE {} \ + void onStartup() Q_DECL_OVERRIDE {} \ + void onShutdown() Q_DECL_OVERRIDE {} \ + void onCleanup() Q_DECL_OVERRIDE {} \ + void sceneNodeAdded(QSceneChangePtr &) Q_DECL_OVERRIDE {} \ + void sceneNodeRemoved(QSceneChangePtr &) Q_DECL_OVERRIDE {} \ +\ + QVector<QAspectJobPtr> jobsToExecute(qint64) Q_DECL_OVERRIDE \ + { \ + return QVector<QAspectJobPtr>(); \ + } \ + \ + QVariant executeCommand(const QStringList &args) Q_DECL_OVERRIDE \ + { \ + if (args.size() >= 2 && args.first() == QLatin1Literal("echo")) { \ + QStringList list = args; \ + list.removeFirst(); \ + return QString("%1 said '%2'").arg(metaObject()->className()).arg(list.join(QLatin1Char(' '))); \ + } \ + \ + return QVariant(); \ + }\ }; +FAKE_ASPECT(FakeAspect) +FAKE_ASPECT(FakeAspect2) +FAKE_ASPECT(FakeAspect3) + QT3D_REGISTER_ASPECT("fake", FakeAspect) +QT3D_REGISTER_ASPECT("otherfake", FakeAspect2) class tst_QAspectEngine : public QObject @@ -137,6 +154,72 @@ private Q_SLOTS: QCOMPARE(engine.aspects().size(), 1); QVERIFY(qobject_cast<FakeAspect*>(engine.aspects().first())); } + + void shouldListLoadedAspects() + { + // GIVEN + QAspectEngine engine; + + // THEN + QCOMPARE(engine.executeCommand("list aspects").toString(), + QString("No loaded aspect")); + + // WHEN + engine.registerAspect("fake"); + + // THEN + QCOMPARE(engine.executeCommand("list aspects").toString(), + QString("Loaded aspects:\n * fake")); + + // WHEN + engine.registerAspect("otherfake"); + + // THEN + QCOMPARE(engine.executeCommand("list aspects").toString(), + QString("Loaded aspects:\n * fake\n * otherfake")); + + // WHEN + engine.registerAspect(new FakeAspect3); + + // THEN + QCOMPARE(engine.executeCommand("list aspects").toString(), + QString("Loaded aspects:\n * fake\n * otherfake\n * <unnamed>")); + } + + void shouldDelegateCommandsToAspects() + { + // GIVEN + QAspectEngine engine; + engine.registerAspect("fake"); + engine.registerAspect("otherfake"); + engine.registerAspect(new FakeAspect3); + + // WHEN + QVariant output = engine.executeCommand("fake echo foo bar"); + + // THEN + QVERIFY(output.isValid()); + QCOMPARE(output.toString(), QString("FakeAspect said 'foo bar'")); + + // WHEN + output = engine.executeCommand("otherfake echo fizz buzz"); + + // THEN + QVERIFY(output.isValid()); + QCOMPARE(output.toString(), QString("FakeAspect2 said 'fizz buzz'")); + + // WHEN + output = engine.executeCommand("mehfake echo fizz buzz"); + + // THEN + QVERIFY(!output.isValid()); + + // WHEN + output = engine.executeCommand("fake mooh fizz buzz"); + + // THEN + QVERIFY(!output.isValid()); + } }; QTEST_MAIN(tst_QAspectEngine) |