homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaper.cpp
author hgs
Mon, 20 Sep 2010 10:19:07 +0300
changeset 90 3ac3aaebaee5
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "t_hsdomainmodel.h"
hgs
parents:
diff changeset
    20
#include "hswallpaper.h"
hgs
parents:
diff changeset
    21
#include "hsscene.h"
hgs
parents:
diff changeset
    22
#include "hspage.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
void TestHsDomainModel::testHsWallpaperConstruction()
hgs
parents:
diff changeset
    25
{
hgs
parents:
diff changeset
    26
    {
hgs
parents:
diff changeset
    27
        HsSceneWallpaper wallpaper(HsScene::instance());
hgs
parents:
diff changeset
    28
        QVERIFY(!wallpaper.parent());
hgs
parents:
diff changeset
    29
    }
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
    HsPage *page = new HsPage();
hgs
parents:
diff changeset
    32
    page->setDatabaseId(1);
hgs
parents:
diff changeset
    33
    {
hgs
parents:
diff changeset
    34
        HbWidget parent;
hgs
parents:
diff changeset
    35
        HsPageWallpaper wallpaper(page, &parent);
hgs
parents:
diff changeset
    36
        QVERIFY(wallpaper.parentItem() == &parent);
hgs
parents:
diff changeset
    37
    }
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
    HsPageWallpaper *pagewallpaper = new HsPageWallpaper(page);
hgs
parents:
diff changeset
    40
    QVERIFY(pagewallpaper);
hgs
parents:
diff changeset
    41
    QVERIFY(!pagewallpaper->parent());
hgs
parents:
diff changeset
    42
    delete pagewallpaper;
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
    HbWidget *parent = new HbWidget();
hgs
parents:
diff changeset
    45
    HsSceneWallpaper *scenewallpaper = new HsSceneWallpaper(HsScene::instance(), parent);
hgs
parents:
diff changeset
    46
    QVERIFY(scenewallpaper);
hgs
parents:
diff changeset
    47
    QVERIFY(scenewallpaper->parentItem() == parent);
hgs
parents:
diff changeset
    48
    delete parent;
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
    delete page;
hgs
parents:
diff changeset
    51
}
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
void TestHsDomainModel::testHsWallpaperSetNRemoveDefaultImage()
hgs
parents:
diff changeset
    54
{
hgs
parents:
diff changeset
    55
    //Default image is set already at construction phase while scene DB id
hgs
parents:
diff changeset
    56
    //is not set.
hgs
parents:
diff changeset
    57
    QVERIFY(QFile::exists(sourceTestWallpaper()));
hgs
parents:
diff changeset
    58
    HsSceneWallpaper *wallpaper = new HsSceneWallpaper(HsScene::instance());
hgs
parents:
diff changeset
    59
    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
hgs
parents:
diff changeset
    60
    wallpaper->setDefaultImage(); //Coverage improvement. Default image already set at construction phase.
hgs
parents:
diff changeset
    61
    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
hgs
parents:
diff changeset
    62
    QVERIFY(wallpaper->mIsDefaultImage);
hgs
parents:
diff changeset
    63
    wallpaper->remove();
hgs
parents:
diff changeset
    64
    QVERIFY(!wallpaper->mIsDefaultImage);
hgs
parents:
diff changeset
    65
    QVERIFY(wallpaper->mPortraitImagePath.isEmpty());
hgs
parents:
diff changeset
    66
    QVERIFY(wallpaper->mLandscapeImagePath.isEmpty());
hgs
parents:
diff changeset
    67
    delete wallpaper;
hgs
parents:
diff changeset
    68
}
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
void TestHsDomainModel::testHsWallpaperSetNRemoveImage()
hgs
parents:
diff changeset
    71
{
hgs
parents:
diff changeset
    72
    mWallpaperTypeScene = false; //Use page wallpaper at this test
hgs
parents:
diff changeset
    73
    //Prepare test case by checking that source file exists and
hgs
parents:
diff changeset
    74
    //deleting any page specific wallpapers existing in target folder
hgs
parents:
diff changeset
    75
    QVERIFY(QFile::exists(sourceTestWallpaper()));
hgs
parents:
diff changeset
    76
    cleanupTargetWallpaperFiles();
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
    HsPage *page = new HsPage();
hgs
parents:
diff changeset
    79
    page->setDatabaseId(1);
hgs
parents:
diff changeset
    80
    //Construction phase sets default image since Id based image does not exist, yet.
hgs
parents:
diff changeset
    81
    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
hgs
parents:
diff changeset
    82
    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    //TEST EMPTY SOURCE STRING
hgs
parents:
diff changeset
    85
    QSignalSpy setImageFailedSpy(wallpaper, SIGNAL(imageSetFailed()));
hgs
parents:
diff changeset
    86
    wallpaper->setImage(QString());
hgs
parents:
diff changeset
    87
    QCOMPARE(setImageFailedSpy.count(), 1);
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    QSignalSpy imageSetSpy(wallpaper, SIGNAL(imageSet()));
hgs
parents:
diff changeset
    90
    QEventLoop waitFinished;
hgs
parents:
diff changeset
    91
    QTimer eventLoopTimer;
hgs
parents:
diff changeset
    92
    eventLoopTimer.setInterval(15000);
hgs
parents:
diff changeset
    93
    eventLoopTimer.setSingleShot(true);
hgs
parents:
diff changeset
    94
    connect(wallpaper, SIGNAL(imageSet()), &waitFinished, SLOT(quit()));
hgs
parents:
diff changeset
    95
    connect(&eventLoopTimer, SIGNAL(timeout()), &waitFinished, SLOT(quit()));
hgs
parents:
diff changeset
    96
    //TEST SETIMAGE
hgs
parents:
diff changeset
    97
    wallpaper->setImage(sourceTestWallpaper());
hgs
parents:
diff changeset
    98
    eventLoopTimer.start();
hgs
parents:
diff changeset
    99
    waitFinished.exec();
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
    QCOMPARE(imageSetSpy.count(), 1);
hgs
parents:
diff changeset
   102
    QVERIFY(eventLoopTimer.isActive());
hgs
parents:
diff changeset
   103
    eventLoopTimer.stop();
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    //Now we have Id based images.
hgs
parents:
diff changeset
   106
    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == targetPortraitTestWallpaper());
hgs
parents:
diff changeset
   107
    QVERIFY(QDir::toNativeSeparators(wallpaper->mLandscapeImagePath) == targetLandscapeTestWallpaper());
hgs
parents:
diff changeset
   108
    QVERIFY(QFile::exists(targetPortraitTestWallpaper()));
hgs
parents:
diff changeset
   109
    QVERIFY(QFile::exists(targetLandscapeTestWallpaper()));
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    //TEST REMOVE
hgs
parents:
diff changeset
   112
    wallpaper->remove();
hgs
parents:
diff changeset
   113
    QVERIFY(wallpaper->mPortraitImagePath.isEmpty());
hgs
parents:
diff changeset
   114
    QVERIFY(wallpaper->mLandscapeImagePath.isEmpty());
hgs
parents:
diff changeset
   115
    QVERIFY(!QFile::exists(targetPortraitTestWallpaper()));
hgs
parents:
diff changeset
   116
    QVERIFY(!QFile::exists(targetLandscapeTestWallpaper()));
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    delete wallpaper;
hgs
parents:
diff changeset
   119
    delete page;
hgs
parents:
diff changeset
   120
}
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
void TestHsDomainModel::testHsWallpaperLoaderFailed()
hgs
parents:
diff changeset
   123
{
hgs
parents:
diff changeset
   124
    cleanupTargetWallpaperFiles();
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    HsPage *page = new HsPage();
hgs
parents:
diff changeset
   127
    page->setDatabaseId(1);
hgs
parents:
diff changeset
   128
    //Construction phase sets default image since Id based image does not exist, yet.
hgs
parents:
diff changeset
   129
    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
hgs
parents:
diff changeset
   130
    QSignalSpy loaderFailedSpy(wallpaper, SIGNAL(imageSetFailed()));
hgs
parents:
diff changeset
   131
    wallpaper->onLoaderFailed();
hgs
parents:
diff changeset
   132
    QCOMPARE(loaderFailedSpy.count(), 1);
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
    delete wallpaper;
hgs
parents:
diff changeset
   135
    delete page;
hgs
parents:
diff changeset
   136
}
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
void TestHsDomainModel::testHsWallpaperScene()
hgs
parents:
diff changeset
   139
{
hgs
parents:
diff changeset
   140
    cleanupTargetWallpaperFiles();
hgs
parents:
diff changeset
   141
    //Construction phase sets default image since Id based image does not exist, yet.
hgs
parents:
diff changeset
   142
    HsSceneWallpaper *wallpaper = new HsSceneWallpaper(HsScene::instance());
hgs
parents:
diff changeset
   143
    QVariantHash papers = wallpaper->createTargets(".");
hgs
parents:
diff changeset
   144
    QVERIFY(papers.count()==2);
hgs
parents:
diff changeset
   145
    wallpaper->setScene(0);
hgs
parents:
diff changeset
   146
    QVERIFY(HsScene::instance() == wallpaper->mScene);
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    delete wallpaper;
hgs
parents:
diff changeset
   149
}
hgs
parents:
diff changeset
   150
void TestHsDomainModel::testHsWallpaperPage()
hgs
parents:
diff changeset
   151
{
hgs
parents:
diff changeset
   152
    cleanupTargetWallpaperFiles();
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
    HsPage *page = new HsPage();
hgs
parents:
diff changeset
   155
    page->setDatabaseId(1);
hgs
parents:
diff changeset
   156
    //Construction phase sets default image since Id based image does not exist, yet.
hgs
parents:
diff changeset
   157
    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
hgs
parents:
diff changeset
   158
    wallpaper->setPage(0);
hgs
parents:
diff changeset
   159
    QVERIFY(page == wallpaper->mPage);
hgs
parents:
diff changeset
   160
    delete wallpaper;
hgs
parents:
diff changeset
   161
    delete page;
hgs
parents:
diff changeset
   162
}
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
void TestHsDomainModel::testHsWallpaperSetImages()
hgs
parents:
diff changeset
   165
{
hgs
parents:
diff changeset
   166
    HsPageWallpaper wp(0);
hgs
parents:
diff changeset
   167
    QSignalSpy spyIS(&wp, SIGNAL(imageSet()));
hgs
parents:
diff changeset
   168
    QSignalSpy spyISF(&wp, SIGNAL(imageSetFailed()));
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
    wp.setImages(QString(), QString());
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
    QCOMPARE(spyIS.count(), 0);
hgs
parents:
diff changeset
   173
    QCOMPARE(spyISF.count(), 1);    
hgs
parents:
diff changeset
   174
}