diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2018-04-26 10:25:51 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2018-04-27 08:30:21 +0000 |
commit | 967b83e30cde5ca04c126a4d9631d887513c2e98 (patch) | |
tree | 3f7918b3fbf80767b0e3fba23d04df7a517b6f8d /tests/auto | |
parent | 34a1b32ecf116d7c4a6ad43f0f6f9d68494a63be (diff) | |
download | qtivi-967b83e30cde5ca04c126a4d9631d887513c2e98.tar.gz |
Fix the QIviServiceManager singleton ownership
This makes sure the QIviServiceManager doesn't get
deleted from the QQmlEngine when it gets destroyed
Task-number: QTAUTO-843
Change-Id: Ie1aae9d9cdefaf443db35eed1483f3b6721e962f
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp b/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp index 9444e29..ee08de0 100644 --- a/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp +++ b/tests/auto/core/servicemanagertest/tst_servicemanagertest.cpp @@ -28,6 +28,8 @@ #include <QString> #include <QtTest> +#include <QQmlEngine> +#include <QQmlComponent> #include <qiviservicemanager.h> #include <QtIviCore/private/qiviservicemanager_p.h> #include <qiviserviceinterface.h> @@ -87,6 +89,7 @@ private Q_SLOTS: void initTestCase(); void cleanup(); + void testRetakeSingleton(); void testHasInterface(); void testFindServiceObjectsReturnInValidInstance(); void testFindServiceObjects_data(); @@ -134,6 +137,29 @@ void ServiceManagerTest::cleanup() manager->unloadAllBackends(); } +void ServiceManagerTest::testRetakeSingleton() +{ + QPointer<QIviServiceManager> serviceManager = QIviServiceManager::instance(); + QQmlEngine *engine = new QQmlEngine; + + QByteArray qml ("import QtQuick 2.0; \n\ + import QtIvi 1.0; \n\ + QtObject { \n\ + Component.onCompleted: { \n\ + var count = ServiceManager.count; \n\ + } \n\ + } \n\ + "); + QQmlComponent component(engine); + component.setData(qml, QUrl()); + QScopedPointer<QObject> obj(component.create()); + QVERIFY2(obj, qPrintable(component.errorString())); + + delete engine; + + QVERIFY(!serviceManager.isNull()); +} + #define COMPARE_SERVICE_OBJECT(_model_, _index_, _serviceObject_) \ do { \ QString name = _model_->data(_model_->index(_index_), Qt::DisplayRole).toString(); \ @@ -296,6 +322,6 @@ void ServiceManagerTest::pluginLoaderTest() Q_IMPORT_PLUGIN(SimpleStaticPlugin) Q_IMPORT_PLUGIN(WrongMetadataStaticPlugin) -QTEST_APPLESS_MAIN(ServiceManagerTest) +QTEST_MAIN(ServiceManagerTest) #include "tst_servicemanagertest.moc" |