diff -r e4f038c420f7 -r 3ac3aaebaee5 homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdomainmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdomainmodel.cpp Mon Sep 20 10:19:07 2010 +0300 @@ -0,0 +1,258 @@ +/* +* 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: Main test class for domain model. +* +*/ + +#include +#include +#include "t_hsdomainmodel.h" +#include "hsdatabase.h" +#include "hspage.h" +#include "hsscene.h" +#include "hsdomainmodeldatastructures.h" +#include "hswidgetpositioningonwidgetadd.h" +#include "hswidgetcomponentregistry.h" +#include "hsbackuprestoreobserver.h" +#include "hsshortcutservice.h" +#include "caservice.h" +#include "hsconfiguration.h" +#include "hswallpaper.h" + +QTM_USE_NAMESPACE + +#ifdef Q_OS_SYMBIAN +#include +#endif + +const char WIDGET_PLUGIN_PATH[] = "./hsresources/plugins/widgetplugins/"; +const char WIDGET_PLUGIN_XML[] = "mockwidgetplugin.xml"; +const char WIDGET_PLUGIN_TOOSMALL_XML[] = "mockwidgetplugintoosmall.xml"; +const char WIDGET_PLUGIN_TOOBIG_XML[] = "mockwidgetplugintoobig.xml"; +const char WIDGET_PLUGIN_CHEATER_XML[] = "mockwidgetplugincheater.xml"; +const char DBPATH[]= "./"; +const char DBNAME[] = "hsdomainmodeltest2.db"; +const char DBNAMECLEAN[] = "hsdomainmodeltest.db"; + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void TestHsDomainModel::initTestCase() +{ + mCaService = CaService::instance(); + QString path = QDir(WIDGET_PLUGIN_PATH).absolutePath(); + QApplication::addLibraryPath(path); + QServiceManager manager; + if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_XML))) { + QServiceManager::Error err = manager.error(); + qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugin failed" << err; + } + if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_TOOSMALL_XML))) { + QServiceManager::Error err = manager.error(); + qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugintoosmall failed" << err; + } + + if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_TOOBIG_XML))) { + QServiceManager::Error err = manager.error(); + qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugintoobig failed" << err; + } + + if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_CHEATER_XML))) { + QServiceManager::Error err = manager.error(); + qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugincheater failed" << err; + } + + HsConfiguration::setInstance(new HsConfiguration); + + HsWidgetPositioningOnWidgetAdd::setInstance( + new HsAnchorPointInBottomRight); +} + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void TestHsDomainModel::cleanupTestCase() +{ + QServiceManager manager; + manager.removeService("mockwidgetplugin"); + manager.removeService("mockwidgetplugintoosmall"); + manager.removeService("mockwidgetplugintoobig"); + manager.removeService("mockwidgetplugincheater"); + HsDatabase::setInstance(0); + + delete HsWidgetComponentRegistry::mInstance; + HsWidgetComponentRegistry::mInstance = 0; + + delete HsShortcutService::mInstance; + HsShortcutService::mInstance = 0; +} + +void TestHsDomainModel::init() +{ + QString dbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAME); + QString testDbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAMECLEAN); + QFile::remove(dbFile); + QFile::copy(testDbFile, dbFile); + + HsScene::setInstance(new HsScene); + + HsDatabase *db = new HsDatabase; + HsDatabase::setInstance(db); + db->setConnectionName("homescreen.dbc"); + db->setDatabaseName(dbFile); + db->open(); + + mWallpaperTypeScene = true; +} + +void TestHsDomainModel::cleanup() +{ + // cleanup all the pages and widgets + HsDatabase::setInstance(0); + QString path = QDir(WIDGET_PLUGIN_PATH).absolutePath(); + QApplication::addLibraryPath( path ); + QString dbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAME); + QFile::remove(dbFile); + + if (HsBackupRestoreObserver::mInstance) { + delete HsBackupRestoreObserver::mInstance; + HsBackupRestoreObserver::mInstance = 0; + } + + delete HsScene::takeInstance(); +} + +void TestHsDomainModel::createPagesToDatabase(int pageCount) +{ + HsDatabase *db = HsDatabase::instance(); + for (int i = 0; i < pageCount; ++i) { + HsPageData data; + data.indexPosition = i; + db->insertPage(data); + } +} + +void TestHsDomainModel::createSceneWithPages(int pageCount,int activePageIndex) +{ + for (int i = 0; i < pageCount; ++i) { + HsPageData pageData; + pageData.indexPosition = i; + HsPage *p = HsPage::createInstance(pageData); + HsScene::instance()->addPage(p); + } + if (activePageIndex < pageCount) { + QList pages = HsScene::instance()->pages(); + if(activePageIndex < pages.count()) + HsScene::instance()->setActivePage(pages.at(activePageIndex)); + } + +} + +void TestHsDomainModel::destroySceneAndPages() +{ + delete HsScene::takeInstance(); +} + +QString TestHsDomainModel::sourceTestWallpaper() +{ + QString testImage("default_portrait.png"); + QString fullSource(wallpaperDirectory() + testImage); + return QDir::toNativeSeparators(fullSource); +} + +QString TestHsDomainModel::targetPortraitTestWallpaper() +{ + QString path = wallpaperDirectory() + + "1_portrait." + + QFileInfo(sourceTestWallpaper()).suffix(); + return QDir::toNativeSeparators(path); +} + +QString TestHsDomainModel::targetLandscapeTestWallpaper() +{ + QString path = wallpaperDirectory() + + "1_landscape." + + QFileInfo(sourceTestWallpaper()).suffix(); + return QDir::toNativeSeparators(path); +} + +QString TestHsDomainModel::tempTestWallpaper() +{ + QString tempTestImage("tempdefault_portrait.png"); + QString fullTarget(wallpaperDirectory() + tempTestImage); + return QDir::toNativeSeparators(fullTarget); +} + +QString TestHsDomainModel::notExistingTestWallpaper() +{ + QString tempTestImage("notfound.png"); + QString fullTarget(wallpaperDirectory() + tempTestImage); + return QDir::toNativeSeparators(fullTarget); +} + +QString TestHsDomainModel::wallpaperDirectory() +{ + QString directory; + if (mWallpaperTypeScene) { + HsSceneWallpaper wallpaper(HsScene::instance()); + directory = wallpaper.wallpaperDirectory(); + } else { + HsPage *page = new HsPage(); + HsPageWallpaper wallpaper(page); + directory = wallpaper.wallpaperDirectory(); + delete page; + } + + return directory; +} + +void TestHsDomainModel::cleanupTargetWallpaperFiles() +{ + if (QFile::exists(targetPortraitTestWallpaper())) { + QFile::remove(targetPortraitTestWallpaper()); + } + + if (QFile::exists(targetLandscapeTestWallpaper())) { + QFile::remove(targetLandscapeTestWallpaper()); + } + + if (QFile::exists(tempTestWallpaper())) { + QFile::remove(tempTestWallpaper()); + } +} + +#ifdef Q_OS_SYMBIAN +//QTEST_MAIN corrected since crashes if TRAP not in correct place. +//Will be corrected in later (estimate 4.6.0) Qt release for Symbian. +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + int error(0); + TRAP_IGNORE( QTEST_DISABLE_KEYPAD_NAVIGATION \ + HbInstance::instance(); \ + TestHsDomainModel tc; \ + error = QTest::qExec(&tc, argc, argv);); + return error; +} +#else //Q_OS_SYMBIAN +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + QTEST_DISABLE_KEYPAD_NAVIGATION + HbInstance::instance(); + TestHsDomainModel tc; + return QTest::qExec(&tc, argc, argv); +} +//QTEST_MAIN(TestHsDomainModel) +#endif //Q_OS_SYMBIAN