diff options
author | Tomas Junnonen <tomas.junnonen@nokia.com> | 2010-04-12 13:50:25 +0300 |
---|---|---|
committer | Tomas Junnonen <tomas.junnonen@nokia.com> | 2010-04-12 13:52:31 +0300 |
commit | da73676c8a5af66b55523a9cdfbfbea2baa88a2a (patch) | |
tree | 0a3b8933a1817c152116da5fa8a7b5cdd8102e60 /tests/ut_mapplicationextensionareaview | |
parent | 8832674482d3b9a7fcf77b0cfdcb8e6fe4960b4d (diff) |
Changes: Renamed dui to meegotouch
By: Holger, Daniel, Janne
RevBy: Tomas, Holger
Diffstat (limited to 'tests/ut_mapplicationextensionareaview')
4 files changed, 280 insertions, 0 deletions
diff --git a/tests/ut_mapplicationextensionareaview/.gitignore b/tests/ut_mapplicationextensionareaview/.gitignore new file mode 100644 index 00000000..ea5c85f6 --- /dev/null +++ b/tests/ut_mapplicationextensionareaview/.gitignore @@ -0,0 +1 @@ +ut_duiapplicationextensionareaview diff --git a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp new file mode 100644 index 00000000..b25b1285 --- /dev/null +++ b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp @@ -0,0 +1,175 @@ +/*************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (directui@nokia.com) +** +** This file is part of libmeegotouch. +** +** If you have questions regarding the use of this file, please contact +** Nokia at directui@nokia.com. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation +** and appearing in the file LICENSE.LGPL included in the packaging +** of this file. +** +****************************************************************************/ + +#include "ut_mapplicationextensionareaview.h" + +#include "mapplicationextensionarea.h" +#include "../stubs/mockdatastore.h" + +#include <MApplication> +#include <MApplicationWindow> +#include <MLayout> +#include <MContainer> +#include <MAbstractLayoutPolicy> +#include <QDBusInterface> + +#include <QGraphicsLinearLayout> +#include <QtTest/QtTest> + +void QFileSystemWatcher::addPath(const QString &) +{ +} + +bool QDBusConnection::registerObject(const QString &, QObject *, RegisterOptions) +{ + return true; +} + +void Ut_MApplicationExtensionAreaView::initTestCase() +{ + // MApplications must be created manually due to theme system changes + static int argc = 1; + static char *app_name[1] = { (char *)"./ut_mapplicationextensionareaview" }; + app = new MApplication(argc, app_name); + appWindow = new MApplicationWindow; +} + +void Ut_MApplicationExtensionAreaView::cleanupTestCase() +{ + delete appWindow; + delete app; +} + +void Ut_MApplicationExtensionAreaView::init() +{ + extensionArea = new MApplicationExtensionArea("test"); + m_subject = new TestMApplicationExtensionAreaView(extensionArea); + extensionArea->setView(m_subject); +} + +void Ut_MApplicationExtensionAreaView::cleanup() +{ + delete m_subject; +} + +void Ut_MApplicationExtensionAreaView::addWidgetToApplicationExtensionArea(QGraphicsWidget *widget, MDataStore *dataStore) +{ + QMap<QGraphicsWidget *, MDataStore *> *dataStores = const_cast<QMap<QGraphicsWidget *, MDataStore *> *>(extensionArea->model()->dataStores()); + (*dataStores)[widget] = dataStore; + extensionArea->model()->dataStoresModified(); +} + +void Ut_MApplicationExtensionAreaView::removeWidgetFromApplicationExtensionArea(QGraphicsWidget *widget) +{ + QMap<QGraphicsWidget *, MDataStore *> *dataStores = const_cast<QMap<QGraphicsWidget *, MDataStore *> *>(extensionArea->model()->dataStores()); + dataStores->remove(widget); + extensionArea->model()->dataStoresModified(); +} + +QList<MWidget *> *Ut_MApplicationExtensionAreaView::createWidgets(int numberOfWidgets, bool containerMode) +{ + m_subject->modifiableStyle()->setContainerMode(containerMode); + m_subject->applyStyle(); + QList<MWidget *> *widgetList = new QList<MWidget *>; + for (int i = 0; i < numberOfWidgets; ++i) { + MWidget *widget = new MWidget; + MockDataStore *store = new MockDataStore; + addWidgetToApplicationExtensionArea(widget, store); + widgetList->append(widget); + } + return widgetList; +} + +bool Ut_MApplicationExtensionAreaView::widgetInLayout(MWidget *widget) +{ + QGraphicsLinearLayout *layout = dynamic_cast<QGraphicsLinearLayout *>(extensionArea->layout()); + + bool found = false; + for (int i = 0; i < layout->count(); ++i) { + QGraphicsWidget *w = NULL; + + MContainer *container = dynamic_cast<MContainer *>(layout->itemAt(i)); + if (container != NULL) { + // Widget has a container, take the centralWidget data + w = container->centralWidget(); + } else { + // No container + w = dynamic_cast<MWidget *>(layout->itemAt(i)); + } + + found |= w == widget; + } + + return found; +} + +void Ut_MApplicationExtensionAreaView::testLayoutPolicy() +{ + QGraphicsLinearLayout *mainLayout = dynamic_cast<QGraphicsLinearLayout *>(extensionArea->layout()); + QVERIFY(mainLayout != NULL); +} + +void Ut_MApplicationExtensionAreaView::testAddition() +{ + MWidget *widget1 = new MWidget; + MockDataStore store1; + MWidget *widget2 = new MWidget; + MockDataStore store2; + + // Add one widget. + addWidgetToApplicationExtensionArea(widget1, &store1); + + // Check that it was added into the layout. + QVERIFY(widgetInLayout(widget1)); + + // Ensure that the layout data is written to data store. + QVERIFY(store1.contains("layoutIndex")); + + // Add another widget. Addition will change layout data of both widgets. + addWidgetToApplicationExtensionArea(widget2, &store2); + + // Check that it was added into the layout. + QVERIFY(widgetInLayout(widget2)); + + // Ensure that new layout data is stored into data store. + QVERIFY(store1.contains("layoutIndex")); + QVERIFY(store2.contains("layoutIndex")); + + delete widget1; + delete widget2; +} + + +void Ut_MApplicationExtensionAreaView::testRemoval() +{ + QList<MWidget *> *widgetList = createWidgets(3); + + // Remove widget2 + removeWidgetFromApplicationExtensionArea(widgetList->at(1)); + + // Ensure that widget1 and widget3 are still in the layout but widget2 is not. + QVERIFY(widgetInLayout(widgetList->at(0))); + QVERIFY(!widgetInLayout(widgetList->at(1))); + QVERIFY(widgetInLayout(widgetList->at(2))); + + while (!widgetList->isEmpty()) + delete widgetList->takeFirst(); +} + +QTEST_APPLESS_MAIN(Ut_MApplicationExtensionAreaView) diff --git a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h new file mode 100644 index 00000000..bcf15389 --- /dev/null +++ b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h @@ -0,0 +1,90 @@ +/*************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (directui@nokia.com) +** +** This file is part of libmeegotouch. +** +** If you have questions regarding the use of this file, please contact +** Nokia at directui@nokia.com. +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation +** and appearing in the file LICENSE.LGPL included in the packaging +** of this file. +** +****************************************************************************/ + +#ifndef UT_MAPPLICATIONEXTENSIONAREAVIEW_H +#define UT_MAPPLICATIONEXTENSIONAREAVIEW_H + +#include <QObject> +#include "mapplicationextensionareaview.h" + +class MApplicationWindow; +class MApplication; +class MApplicationExtensionAreaView; +class MApplicationExtensionArea; +class MWidget; +class MDataStore; + +class TestMApplicationExtensionAreaView : public MApplicationExtensionAreaView +{ + M_VIEW(MApplicationExtensionAreaModel, MApplicationExtensionAreaStyle) + +public: + TestMApplicationExtensionAreaView(MApplicationExtensionArea *canvas) : MApplicationExtensionAreaView(canvas) {} + + MApplicationExtensionAreaStyle *modifiableStyle() { + MApplicationExtensionAreaStyleContainer &sc = style(); + const MApplicationExtensionAreaStyle *const_s = sc.operator ->(); + MApplicationExtensionAreaStyle *s = const_cast<MApplicationExtensionAreaStyle *>(const_s); + return s; + } + + void applyStyle() { + MApplicationExtensionAreaView::applyStyle(); + } +}; + +class Ut_MApplicationExtensionAreaView : public QObject +{ + Q_OBJECT + +private slots: + // Called before the first testfunction is executed + void initTestCase(); + // Called after the last testfunction was executed + void cleanupTestCase(); + // Called before each testfunction is executed + void init(); + // Called after every testfunction + void cleanup(); + + // Test that the layout is set up as expected + void testLayoutPolicy(); + // Test widget addition + void testAddition(); + // Test widget removal + void testRemoval(); + +private: + bool widgetInLayout(MWidget *widget); + void addWidgetToApplicationExtensionArea(QGraphicsWidget *widget, MDataStore *dataStore); + void removeWidgetFromApplicationExtensionArea(QGraphicsWidget *widget); + + // Widget creation helpers + QList<MWidget *> *createWidgets(int numberOfWidgets, bool containerMode = true); + // MApplication instance required by MWidget. + MApplication *app; + // MApplicationWindow instance required to get the scene and scene manager. + MApplicationWindow *appWindow; + // The object being tested + TestMApplicationExtensionAreaView *m_subject; + // Controller for the view + MApplicationExtensionArea *extensionArea; +}; + +#endif diff --git a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.pro b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.pro new file mode 100644 index 00000000..ee4559c7 --- /dev/null +++ b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.pro @@ -0,0 +1,14 @@ +include(../common_top.pri) +include(../common_mextensions.pri) + +QT += core network gui svg dbus + +# unit test and unit classes +SOURCES += \ + ut_mapplicationextensionareaview.cpp \ + +# unit test and unit classes +HEADERS += \ + ut_mapplicationextensionareaview.h \ + +include(../common_bot.pri) |