--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsscene.cpp Mon Sep 20 10:19:07 2010 +0300
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "t_hsdomainmodel.h"
+#include "hsscene.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+#include "hspage.h"
+#include "hsconfiguration.h"
+
+void TestHsDomainModel::testSceneDefaultValues()
+{
+ HsScene *scene = new HsScene;
+
+ QCOMPARE(scene->databaseId(), -1);
+ QCOMPARE(scene->pages().count(), 0);
+ QVERIFY(scene->isOnline());
+
+ QVERIFY(!scene->wallpaper());
+
+ QVERIFY(!scene->activeWidget());
+ QVERIFY(!scene->activePage());
+ QCOMPARE(scene->activePageIndex(), -1);
+ QVERIFY(!scene->setActivePageIndex(1));
+ QVERIFY(!scene->setActivePageIndex(-1));
+ QVERIFY(!scene->setActivePage(0));
+
+ QVERIFY(!scene->removePage(0));
+ QVERIFY(!scene->addPage(0));
+
+ delete scene;
+}
+
+void TestHsDomainModel::testSceneStaticInterface()
+{
+ HsScene *stored = HsScene::takeInstance();
+
+ HsScene *scene = new HsScene;
+ QVERIFY(!HsScene::instance());
+ HsScene::setInstance(scene);
+ QVERIFY(HsScene::instance() == scene);
+ HsScene::setInstance(scene);
+ QVERIFY(HsScene::instance() == scene);
+ HsScene *scene2 = HsScene::takeInstance();
+ QVERIFY(!HsScene::instance());
+ QVERIFY(scene == scene2);
+ delete scene;
+
+ HsScene::setInstance(stored);
+}
+
+void TestHsDomainModel::testSceneLoad()
+{
+ // no page
+ HsScene *scene = HsScene::instance();
+ QVERIFY(!scene->load());
+
+ createPagesToDatabase(1);
+ scene = HsScene::instance();
+ HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+ QVERIFY(scene->load());
+ QVERIFY(scene->wallpaper());
+ // set configuration back to original
+ HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+ destroySceneAndPages();
+}
+
+
+void TestHsDomainModel::testSceneAddPages()
+{
+ createSceneWithPages(0, 0);
+ HsScene *scene = HsScene::instance();
+ HsPage *page = new HsPage();
+ QVERIFY(!scene->addPage(page));
+ delete page;
+
+ HsPageData pageData;
+ pageData.indexPosition = 0;
+ page = HsPage::createInstance(pageData);
+ QVERIFY(scene->addPage(page));
+ QVERIFY(scene->setActivePage(page));
+ QVERIFY(scene->setActivePageIndex(0));
+ QVERIFY(scene->addPage(page));
+ QCOMPARE(scene->pages().count(), 1);
+
+ // add page to left
+ HsPageData pageData2;
+ pageData2.indexPosition = 0;
+ HsPage *page2 = HsPage::createInstance(pageData2);
+ QVERIFY(scene->addPage(page2));
+ QCOMPARE(scene->pages().count(), 2);
+ QVERIFY(scene->removePage(page2));
+ QCOMPARE(scene->pages().count(), 1);
+
+ int dbId = page->databaseId();
+ page->setDatabaseId(dbId-1);
+ QVERIFY(scene->removePage(page));
+ page->setDatabaseId(dbId);
+ QVERIFY(scene->removePage(page));
+ QVERIFY(!scene->setActivePage(page));
+ QCOMPARE(scene->pages().count(), 0);
+
+ delete HsScene::mInstance;
+ HsScene::mInstance = 0;
+}
+
+
+void TestHsDomainModel::testSceneOnline()
+{
+ createSceneWithPages(3,0);
+ HsScene *scene = HsScene::instance();
+
+ HsWidgetData widgetData;
+ widgetData.pageId = HsScene::instance()->activePage()->databaseId();
+ widgetData.uri = "mockwidgetplugin";
+
+ HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+ QVERIFY(widget);
+ widget->setPage(HsScene::instance()->activePage());
+ widget->startWidget();
+ QVERIFY(widget->mStateMachine->isRunning());
+ HsScene::instance()->activePage()->addNewWidget(widget);
+
+ QVERIFY(widget->mWidget->property("isOnline").isValid());
+ QVERIFY(widget->mWidget->property("isOnline").toBool());
+ scene->setOnline(true);
+ QVERIFY(widget->mWidget->property("isOnline").toBool());
+ scene->setOnline(false);
+ QVERIFY(!widget->mWidget->property("isOnline").toBool());
+
+ QVERIFY(!scene->activeWidget());
+ scene->setActiveWidget(widget);
+ QCOMPARE(scene->activeWidget(), widget);
+
+ delete HsScene::mInstance;
+ HsScene::mInstance = 0;
+}
+
+void TestHsDomainModel::testSceneEventFilter()
+{
+ createSceneWithPages(3, 0);
+ HsScene *scene = HsScene::instance();
+
+ QEvent activateEvent(QEvent::ApplicationActivate);
+ QEvent deactivateEvent(QEvent::ApplicationDeactivate);
+ QEvent randomEvent(QEvent::AccessibilityHelp);
+
+ scene->eventFilter(0, &activateEvent);
+ scene->eventFilter(0, &deactivateEvent);
+ scene->eventFilter(0, &randomEvent);
+
+ destroySceneAndPages();
+}