diff options
author | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-10-16 14:30:47 -0300 |
---|---|---|
committer | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-10-16 14:30:47 -0300 |
commit | cc79785d02cadd4066c967e7b373d6ac2bb39b1c (patch) | |
tree | 76870946c0f111959410407288be78ee4889fac5 /tests/client/qmltest.cpp | |
parent | a98d5486c37d68e1c1ce8fc1b6ad0a9018dd534d (diff) | |
parent | ced307a448aeed3a20d1a1e4bdcbf4dcbe4b1e46 (diff) | |
download | qmenumodel-cc79785d02cadd4066c967e7b373d6ac2bb39b1c.tar.gz qmenumodel-cc79785d02cadd4066c967e7b373d6ac2bb39b1c.tar.bz2 qmenumodel-cc79785d02cadd4066c967e7b373d6ac2bb39b1c.zip |
Merged mainline.
Diffstat (limited to 'tests/client/qmltest.cpp')
-rw-r--r-- | tests/client/qmltest.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/client/qmltest.cpp b/tests/client/qmltest.cpp new file mode 100644 index 0000000..4e6f288 --- /dev/null +++ b/tests/client/qmltest.cpp @@ -0,0 +1,120 @@ +/* + * Copyright 2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Authors: + * Renato Araujo Oliveira Filho <renato@canonical.com> + */ + +extern "C" { +#include <glib-object.h> +} + +#include "qdbusmenumodel.h" +#include "dbusmenuscript.h" +#include "qmlfiles.h" + +#include <QObject> +#include <QSignalSpy> +#include <QtTestGui> +#include <QDebug> + +#include <QQmlContext> +#include <QQmlEngine> +#include <QQuickView> + + +class QMLTest : public QObject +{ + Q_OBJECT +private: + DBusMenuScript m_script; + +private Q_SLOTS: + void initTestCase() + { + g_type_init(); + Q_ASSERT(m_script.connect()); + } + + void cleanupTestCase() + { + m_script.quit(); + } + + void init() + { + } + + void cleanup() + { + m_script.unpublishMenu(); + } + + /* + * Test if model is destroyed without crash + */ + void destroyModel() + { + m_script.publishMenu(); + m_script.run(); + QTest::qWait(500); + + QQuickView *view = new QQuickView; + view->engine()->addImportPath(QML_BASE_DIR); + view->engine()->rootContext()->setContextProperty("resetModel", QVariant(false)); + view->engine()->rootContext()->setContextProperty("globalBusType", DBusEnums::SessionBus); + view->engine()->rootContext()->setContextProperty("globalBusName", MENU_SERVICE_NAME); + view->engine()->rootContext()->setContextProperty("globalObjectPath", MENU_OBJECT_PATH); + view->setSource(QUrl::fromLocalFile(LOADMODEL_QML)); + view->show(); + QTest::qWait(500); + view->engine()->rootContext()->setContextProperty("resetModel", true); + QTest::qWait(500); + } + + /* + * Test the menu model disappearing from the bus and reappearing + * while the QML application is running. + */ + void testServiceDisappear() + { + m_script.publishMenu(); + m_script.run(); + QTest::qWait(500); + + QQuickView *view = new QQuickView; + view->engine()->addImportPath(QML_BASE_DIR); + view->engine()->rootContext()->setContextProperty("globalBusType", DBusEnums::SessionBus); + view->engine()->rootContext()->setContextProperty("globalBusName", MENU_SERVICE_NAME); + view->engine()->rootContext()->setContextProperty("globalObjectPath", MENU_OBJECT_PATH); + view->setSource(QUrl::fromLocalFile(LOADMODEL2_QML)); + view->show(); + QTest::qWait(500); + + m_script.unpublishMenu(); + QTest::qWait(500); + + m_script.publishMenu(); + m_script.run(); + QTest::qWait(500); + + delete view; + QTest::qWait(1000); + } +}; + +QTEST_MAIN(QMLTest) + +#include "qmltest.moc" |