aboutsummaryrefslogtreecommitdiff
path: root/tests/ut_mapplicationextensionareaview
diff options
context:
space:
mode:
authorTomas Junnonen <tomas.junnonen@nokia.com>2010-04-12 13:50:25 +0300
committerTomas Junnonen <tomas.junnonen@nokia.com>2010-04-12 13:52:31 +0300
commitda73676c8a5af66b55523a9cdfbfbea2baa88a2a (patch)
tree0a3b8933a1817c152116da5fa8a7b5cdd8102e60 /tests/ut_mapplicationextensionareaview
parent8832674482d3b9a7fcf77b0cfdcb8e6fe4960b4d (diff)
Changes: Renamed dui to meegotouch
By: Holger, Daniel, Janne RevBy: Tomas, Holger
Diffstat (limited to 'tests/ut_mapplicationextensionareaview')
-rw-r--r--tests/ut_mapplicationextensionareaview/.gitignore1
-rw-r--r--tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp175
-rw-r--r--tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h90
-rw-r--r--tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.pro14
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)