homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsscene.cpp
changeset 96 458d8c8d9580
equal deleted inserted replaced
92:6727c5d0afc7 96:458d8c8d9580
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "t_hsdomainmodel.h"
       
    19 #include "hsscene.h"
       
    20 #include "hsdomainmodeldatastructures.h"
       
    21 #include "hswidgethost.h"
       
    22 #include "hspage.h"
       
    23 #include "hsconfiguration.h"
       
    24 
       
    25 void TestHsDomainModel::testSceneDefaultValues()
       
    26 {    
       
    27     HsScene *scene = new HsScene;
       
    28     
       
    29     QCOMPARE(scene->databaseId(), -1); 
       
    30     QCOMPARE(scene->pages().count(), 0);
       
    31     QVERIFY(scene->isOnline()); 
       
    32     
       
    33     QVERIFY(!scene->wallpaper());
       
    34     
       
    35     QVERIFY(!scene->activeWidget()); 
       
    36     QVERIFY(!scene->activePage()); 
       
    37     QCOMPARE(scene->activePageIndex(), -1);     
       
    38     QVERIFY(!scene->setActivePageIndex(1)); 
       
    39     QVERIFY(!scene->setActivePageIndex(-1)); 
       
    40     QVERIFY(!scene->setActivePage(0)); 
       
    41     
       
    42     QVERIFY(!scene->removePage(0)); 
       
    43     QVERIFY(!scene->addPage(0)); 
       
    44     
       
    45     delete scene;
       
    46 }
       
    47 
       
    48 void TestHsDomainModel::testSceneStaticInterface()
       
    49 {    
       
    50     HsScene *stored = HsScene::takeInstance();
       
    51     
       
    52     HsScene *scene = new HsScene;
       
    53     QVERIFY(!HsScene::instance());
       
    54     HsScene::setInstance(scene);
       
    55     QVERIFY(HsScene::instance() == scene);
       
    56     HsScene::setInstance(scene);
       
    57     QVERIFY(HsScene::instance() == scene);
       
    58     HsScene *scene2 = HsScene::takeInstance();
       
    59     QVERIFY(!HsScene::instance());
       
    60     QVERIFY(scene == scene2);
       
    61     delete scene;
       
    62     
       
    63     HsScene::setInstance(stored);
       
    64 }
       
    65 
       
    66 void TestHsDomainModel::testSceneLoad()
       
    67 {
       
    68     // no page
       
    69     HsScene *scene = HsScene::instance();
       
    70     QVERIFY(!scene->load());
       
    71 
       
    72     createPagesToDatabase(1);
       
    73     scene = HsScene::instance();
       
    74     HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
       
    75     QVERIFY(scene->load());
       
    76     QVERIFY(scene->wallpaper());
       
    77     // set configuration back to original
       
    78     HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
       
    79     destroySceneAndPages();
       
    80 }
       
    81 
       
    82 
       
    83 void TestHsDomainModel::testSceneAddPages()
       
    84 {
       
    85     createSceneWithPages(0, 0);
       
    86     HsScene *scene = HsScene::instance();    
       
    87     HsPage *page = new HsPage();
       
    88     QVERIFY(!scene->addPage(page)); 
       
    89     delete page;
       
    90     
       
    91     HsPageData pageData;
       
    92     pageData.indexPosition = 0;
       
    93     page = HsPage::createInstance(pageData);
       
    94     QVERIFY(scene->addPage(page)); 
       
    95     QVERIFY(scene->setActivePage(page)); 
       
    96     QVERIFY(scene->setActivePageIndex(0)); 
       
    97     QVERIFY(scene->addPage(page)); 
       
    98     QCOMPARE(scene->pages().count(), 1);
       
    99 
       
   100     // add page to left
       
   101     HsPageData pageData2;
       
   102     pageData2.indexPosition = 0;
       
   103     HsPage *page2 = HsPage::createInstance(pageData2);
       
   104     QVERIFY(scene->addPage(page2));
       
   105     QCOMPARE(scene->pages().count(), 2);
       
   106     QVERIFY(scene->removePage(page2));
       
   107     QCOMPARE(scene->pages().count(), 1);
       
   108 
       
   109     int dbId = page->databaseId();
       
   110     page->setDatabaseId(dbId-1);
       
   111     QVERIFY(scene->removePage(page)); 
       
   112     page->setDatabaseId(dbId);
       
   113     QVERIFY(scene->removePage(page)); 
       
   114     QVERIFY(!scene->setActivePage(page)); 
       
   115     QCOMPARE(scene->pages().count(), 0);
       
   116     
       
   117     delete HsScene::mInstance;
       
   118     HsScene::mInstance = 0;
       
   119 }
       
   120 
       
   121 
       
   122 void TestHsDomainModel::testSceneOnline()
       
   123 {
       
   124     createSceneWithPages(3,0);
       
   125     HsScene *scene = HsScene::instance();
       
   126     
       
   127     HsWidgetData widgetData;
       
   128     widgetData.pageId = HsScene::instance()->activePage()->databaseId();
       
   129     widgetData.uri = "mockwidgetplugin";
       
   130     
       
   131     HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
       
   132     QVERIFY(widget);
       
   133     widget->setPage(HsScene::instance()->activePage());
       
   134     widget->startWidget();
       
   135     QVERIFY(widget->mStateMachine->isRunning());
       
   136     HsScene::instance()->activePage()->addNewWidget(widget);
       
   137     
       
   138     QVERIFY(widget->mWidget->property("isOnline").isValid());
       
   139     QVERIFY(widget->mWidget->property("isOnline").toBool());
       
   140     scene->setOnline(true);
       
   141     QVERIFY(widget->mWidget->property("isOnline").toBool());
       
   142     scene->setOnline(false);
       
   143     QVERIFY(!widget->mWidget->property("isOnline").toBool());
       
   144     
       
   145     QVERIFY(!scene->activeWidget());
       
   146     scene->setActiveWidget(widget);
       
   147     QCOMPARE(scene->activeWidget(), widget);
       
   148     
       
   149     delete HsScene::mInstance;
       
   150     HsScene::mInstance = 0;
       
   151 }
       
   152 
       
   153 void TestHsDomainModel::testSceneEventFilter()
       
   154 {
       
   155     createSceneWithPages(3, 0);
       
   156     HsScene *scene = HsScene::instance();
       
   157     
       
   158     QEvent activateEvent(QEvent::ApplicationActivate);
       
   159     QEvent deactivateEvent(QEvent::ApplicationDeactivate);
       
   160     QEvent randomEvent(QEvent::AccessibilityHelp);
       
   161 
       
   162     scene->eventFilter(0, &activateEvent);
       
   163     scene->eventFilter(0, &deactivateEvent);
       
   164     scene->eventFilter(0, &randomEvent);
       
   165 
       
   166     destroySceneAndPages();
       
   167 }