videocollection/videocollectionview/tsrc/testhintwidget/src/testhintwidget.cpp
changeset 15 cf5481c2bc0b
child 47 45e72b57a2fd
equal deleted inserted replaced
2:dec420019252 15:cf5481c2bc0b
       
     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:   tester for methods in VideoListWidget
       
    15 *
       
    16 */
       
    17 
       
    18 #include <hbicon.h>
       
    19 #include <hbmainwindow.h>
       
    20 #include <hbinstance.h>
       
    21 #include <hblabel.h>
       
    22 #include <hbpushbutton.h>
       
    23 #include <hbapplication.h>
       
    24 
       
    25 #include "videocollectionuiloader.h"
       
    26 #include "videocollectionviewutils.h"
       
    27 #include "videocollectionviewutilsdata.h"
       
    28 #include "videocollectionuiloaderdata.h"
       
    29 #include "testhintwidget.h"
       
    30 
       
    31 #define private public
       
    32 #include "videohintwidget.h"
       
    33 #undef private
       
    34 
       
    35 // ---------------------------------------------------------------------------
       
    36 // main
       
    37 // ---------------------------------------------------------------------------
       
    38 //
       
    39 int main(int argc, char *argv[])
       
    40 {
       
    41     HbApplication app(argc, argv);
       
    42     HbApplication::setKeypadNavigationEnabled(false);
       
    43     HbMainWindow mainWnd;
       
    44     hbInstance->mWindowses.append(&mainWnd);
       
    45 
       
    46     TestHintWidget tv;
       
    47     
       
    48     int res;
       
    49     if(argc > 1)
       
    50     {   
       
    51         res = QTest::qExec(&tv, argc, argv);
       
    52     }
       
    53     else
       
    54     {
       
    55         char *pass[3];
       
    56         pass[0] = argv[0];
       
    57         pass[1] = "-o";
       
    58         pass[2] = "c:\\data\\testhintwidget.txt";
       
    59         res = QTest::qExec(&tv, 3, pass);
       
    60     }
       
    61 
       
    62     return res;
       
    63 }
       
    64 
       
    65 // ---------------------------------------------------------------------------
       
    66 // constructor
       
    67 // ---------------------------------------------------------------------------
       
    68 //
       
    69 TestHintWidget::TestHintWidget():
       
    70     mTestObject(0),
       
    71     mUiLoader(0)
       
    72 {
       
    73     // nop
       
    74 }
       
    75 
       
    76 // ---------------------------------------------------------------------------
       
    77 // destructor
       
    78 // ---------------------------------------------------------------------------
       
    79 //
       
    80 TestHintWidget::~TestHintWidget()
       
    81 {
       
    82     cleanup();
       
    83 }
       
    84 
       
    85 // ---------------------------------------------------------------------------
       
    86 // init
       
    87 // ---------------------------------------------------------------------------
       
    88 //
       
    89 void TestHintWidget::init(bool callInitialize)
       
    90 {
       
    91     mUiLoader = new VideoCollectionUiLoader;
       
    92     
       
    93     HbDocumentLoader::mFindWidgetFails = false;
       
    94     bool ok(false);
       
    95     mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
       
    96     if(!ok)
       
    97     {
       
    98         cleanup();
       
    99         QFAIL("docml loading failed!");
       
   100     }
       
   101     
       
   102     mTestObject = mUiLoader->findObject<VideoHintWidget>(DOCML_NAME_VC_VIDEOHINTWIDGET);
       
   103     if(!mTestObject)
       
   104     {
       
   105         mTestObject = new VideoHintWidget(mUiLoader);
       
   106     }
       
   107     
       
   108     if (callInitialize)
       
   109     {
       
   110         QVERIFY(mTestObject->initialize() == 0);
       
   111     }
       
   112 }
       
   113 
       
   114 // ---------------------------------------------------------------------------
       
   115 // cleanup
       
   116 // ---------------------------------------------------------------------------
       
   117 //
       
   118 void TestHintWidget::cleanup()
       
   119 {
       
   120     if (mUiLoader)
       
   121     {
       
   122         VideoHintWidget* temp = mUiLoader->findObject<VideoHintWidget>(DOCML_NAME_VC_VIDEOHINTWIDGET);
       
   123         if (!temp)
       
   124         {
       
   125             // need to delete mTestObject as it is not owned by uiloader.
       
   126             delete mTestObject;
       
   127             mTestObject = 0;
       
   128         }
       
   129         mTestObject = 0;
       
   130 
       
   131         delete mUiLoader;
       
   132         mUiLoader = 0;
       
   133     }
       
   134 
       
   135     VideoCollectionViewUtilsData::reset();
       
   136     VideoCollectionUiLoaderData::reset();    
       
   137 }
       
   138  
       
   139 // ---------------------------------------------------------------------------
       
   140 // testInitialize
       
   141 // ---------------------------------------------------------------------------
       
   142 //
       
   143 void TestHintWidget::testInitialize()
       
   144 {
       
   145     // getServiceIconStrings fails and returns -1;
       
   146     init(false);
       
   147     VideoCollectionViewUtilsData::mGetServiceIconStringsFails = true;
       
   148     QCOMPARE(mTestObject->initialize(), -1);
       
   149     cleanup();
       
   150     
       
   151     // succeed
       
   152     init(false);
       
   153     VideoCollectionViewUtilsData::mGetServiceIconStringsFails = false;
       
   154     VideoCollectionViewUtilsData::mIconString = "test";
       
   155     VideoCollectionViewUtilsData::mPressedString = "test2";
       
   156     QCOMPARE(mTestObject->initialize(), 0);
       
   157     QCOMPARE(mTestObject->mServiceIconString, VideoCollectionViewUtilsData::mIconString);
       
   158     QCOMPARE(mTestObject->mServiceIconPressedString, VideoCollectionViewUtilsData::mPressedString);
       
   159     
       
   160     // second call to initialize.
       
   161     VideoCollectionViewUtilsData::mIconString = "test3";
       
   162     VideoCollectionViewUtilsData::mPressedString = "test4";
       
   163     QCOMPARE(mTestObject->initialize(), 0);
       
   164     QCOMPARE(mTestObject->mServiceIconString, VideoCollectionViewUtilsData::mIconString);
       
   165     QCOMPARE(mTestObject->mServiceIconPressedString, VideoCollectionViewUtilsData::mPressedString);
       
   166     cleanup();
       
   167 }
       
   168 
       
   169 // ---------------------------------------------------------------------------
       
   170 // testSetLevel
       
   171 // ---------------------------------------------------------------------------
       
   172 //
       
   173 void TestHintWidget::testSetLevel()
       
   174 {
       
   175     init(true);
       
   176     mTestObject->setVisible(false);
       
   177     
       
   178     mTestObject->setLevel(VideoHintWidget::Collection);
       
   179     QCOMPARE(mTestObject->mCurrentLevel, VideoHintWidget::Collection);
       
   180     
       
   181     mTestObject->setLevel(VideoHintWidget::AllVideos);
       
   182     QCOMPARE(mTestObject->mCurrentLevel, VideoHintWidget::AllVideos);
       
   183     
       
   184     mTestObject->setLevel(VideoHintWidget::AllVideos);
       
   185     QCOMPARE(mTestObject->mCurrentLevel, VideoHintWidget::AllVideos);
       
   186     
       
   187     mTestObject->setLevel(VideoHintWidget::Collection);
       
   188     QCOMPARE(mTestObject->mCurrentLevel, VideoHintWidget::Collection);
       
   189     cleanup();
       
   190 }
       
   191 
       
   192 // ---------------------------------------------------------------------------
       
   193 // testActivate
       
   194 // ---------------------------------------------------------------------------
       
   195 //
       
   196 void TestHintWidget::testActivate()
       
   197 {
       
   198     init(true);
       
   199 
       
   200     mTestObject->setVisible(false);
       
   201     
       
   202     // mServiceIconString empty.
       
   203     mTestObject->mServiceIconString = QString();
       
   204     mTestObject->activate();
       
   205     QVERIFY(mTestObject->mServiceIcon == 0);
       
   206     QVERIFY(mTestObject->isVisible() == false);
       
   207     QVERIFY(mTestObject->mActivated == false);
       
   208     
       
   209     // mServiceIconPressedString empty.
       
   210     mTestObject->mServiceIconString = "test";
       
   211     mTestObject->mServiceIconPressedString = QString();
       
   212     mTestObject->activate();
       
   213     QVERIFY(mTestObject->mServiceIcon == 0);
       
   214     QVERIFY(mTestObject->isVisible() == false);
       
   215     QVERIFY(mTestObject->mActivated == false);
       
   216     
       
   217     // successful case.
       
   218     mTestObject->mServiceIconPressedString = "test2";
       
   219     HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
       
   220     QVERIFY(noVideosLabel);
       
   221     noVideosLabel->setVisible(false);
       
   222     
       
   223     mTestObject->activate();
       
   224     QVERIFY(mTestObject->isVisible());
       
   225     QVERIFY(mTestObject->mServiceIcon != 0);
       
   226     QCOMPARE(mTestObject->mServiceIcon->iconName(), mTestObject->mServiceIconString);
       
   227     QCOMPARE(mTestObject->mServiceIcon->iconName(QIcon::Normal, QIcon::On), 
       
   228                 mTestObject->mServiceIconPressedString);
       
   229     QVERIFY(noVideosLabel->isVisible()); // checks that updateUiComponents() has been called.
       
   230     QVERIFY(mTestObject->mActivated == true);
       
   231     
       
   232     cleanup();
       
   233 }
       
   234  
       
   235 // ---------------------------------------------------------------------------
       
   236 // testDeactivate
       
   237 // ---------------------------------------------------------------------------
       
   238 //
       
   239 void TestHintWidget::testDeactivate()
       
   240 {
       
   241     init(true);
       
   242     
       
   243     mTestObject->setVisible(true);
       
   244     mTestObject->mActivated = true;
       
   245     
       
   246     // when serviceButton does not exist
       
   247     mTestObject->mServiceIcon = 0;
       
   248     mTestObject->mAddVideosIcon = 0;
       
   249     HbDocumentLoader::mFindWidgetFails = true;
       
   250     mTestObject->deactivate();
       
   251     QVERIFY(mTestObject->mActivated == false);
       
   252     QVERIFY(mTestObject->isVisible() == false);
       
   253     
       
   254     // when icons are null, but servicebutton has non-null icon.
       
   255     mTestObject->mActivated = true;
       
   256     mTestObject->setVisible(true);
       
   257     HbDocumentLoader::mFindWidgetFails = false;
       
   258     HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
       
   259     QVERIFY(serviceButton);
       
   260     serviceButton->setIcon(HbIcon(QIcon(QPixmap(QSize(100,100)))));
       
   261     QVERIFY(serviceButton->icon().isNull() == false); // make sure test is valid.
       
   262     mTestObject->deactivate();
       
   263     QVERIFY(serviceButton->icon().isNull());
       
   264     QVERIFY(mTestObject->isVisible() == false);
       
   265     
       
   266     // when icons are non-null, but widget is not activated.
       
   267     mTestObject->setVisible(true);
       
   268     mTestObject->mServiceIcon = new HbIcon;
       
   269     mTestObject->mAddVideosIcon = new HbIcon;
       
   270     mTestObject->deactivate();
       
   271     QVERIFY(mTestObject->mServiceIcon != 0);
       
   272     QVERIFY(mTestObject->mAddVideosIcon != 0);
       
   273     QVERIFY(mTestObject->isVisible() == true);
       
   274     
       
   275     // when icons are non-null and widget is activated.
       
   276     mTestObject->mActivated = true;
       
   277     mTestObject->deactivate();
       
   278     QVERIFY(mTestObject->mServiceIcon == 0);
       
   279     QVERIFY(mTestObject->mAddVideosIcon == 0);
       
   280     QVERIFY(mTestObject->isVisible() == false);
       
   281     
       
   282     cleanup();
       
   283 }
       
   284 
       
   285 // ---------------------------------------------------------------------------
       
   286 // testUpdateUiComponents
       
   287 // ---------------------------------------------------------------------------
       
   288 //
       
   289 void TestHintWidget::testUpdateUiComponents()
       
   290 {
       
   291     HbMainWindow *mainWnd = hbInstance->allMainWindows()[0];
       
   292     mainWnd->setOrientation(Qt::Horizontal);
       
   293     
       
   294     init(true);
       
   295     
       
   296     mTestObject->mServiceIcon = new HbIcon(QIcon(QPixmap(QSize(100,100))));
       
   297     mTestObject->mAddVideosIcon = new HbIcon(QIcon(QPixmap(QSize(50,50))));
       
   298     mTestObject->mActivated = true;
       
   299     
       
   300     HbDocumentLoader::mFindWidgetFails = true;
       
   301     // when a widget cannot be found.
       
   302     mTestObject->setLevel(VideoHintWidget::AllVideos);
       
   303     // no verification possible except that it doesn't crash?
       
   304     
       
   305     HbDocumentLoader::mFindWidgetFails = false;
       
   306     HbLabel *hintLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_HINT_LABEL);
       
   307     QVERIFY(hintLabel);
       
   308     HbPushButton *serviceButton = mUiLoader->findWidget<HbPushButton>(DOCML_NAME_HINT_BUTTON);
       
   309     QVERIFY(serviceButton);
       
   310     
       
   311     mainWnd->setOrientation(Qt::Vertical);
       
   312     mTestObject->setLevel(VideoHintWidget::AllVideos);
       
   313     QVERIFY(serviceButton->isVisible() == false);
       
   314     QVERIFY(serviceButton->icon().isNull() == false);
       
   315     QVERIFY(serviceButton->icon().qicon().cacheKey() == mTestObject->mServiceIcon->qicon().cacheKey());
       
   316     QVERIFY(hintLabel->isVisible());
       
   317     
       
   318     mainWnd->setOrientation(Qt::Horizontal);
       
   319     mTestObject->mButtonShown = true;
       
   320     mTestObject->setLevel(VideoHintWidget::Collection);
       
   321     QVERIFY(serviceButton->isVisible());
       
   322     QVERIFY(serviceButton->icon().isNull() == false);
       
   323     QVERIFY(serviceButton->icon().qicon().cacheKey() == mTestObject->mAddVideosIcon->qicon().cacheKey());    
       
   324     QVERIFY(hintLabel->isVisible() == false);
       
   325     
       
   326     mTestObject->mButtonShown = false;
       
   327     mTestObject->setLevel(VideoHintWidget::Collection);
       
   328     QVERIFY(serviceButton->isVisible() == false);
       
   329     
       
   330     cleanup();
       
   331 }
       
   332 
       
   333 // ---------------------------------------------------------------------------
       
   334 // testOrientationChangedSlot
       
   335 // ---------------------------------------------------------------------------
       
   336 //
       
   337 void TestHintWidget::testOrientationChangedSlot()
       
   338 {
       
   339     // NOTE: This also checks that the signals are connected and
       
   340     // disconnected correctly.
       
   341     
       
   342     HbMainWindow *mainWnd = hbInstance->allMainWindows()[0];
       
   343     mainWnd->setOrientation(Qt::Horizontal);
       
   344     connect(this, SIGNAL(testSignal(Qt::Orientation)), mainWnd, SIGNAL(orientationChanged(Qt::Orientation)));
       
   345     
       
   346     init(true);
       
   347     
       
   348     HbLabel *noVideosLabel = mUiLoader->findWidget<HbLabel>(DOCML_NAME_NO_VIDEOS_LABEL);
       
   349     QVERIFY(noVideosLabel);
       
   350 
       
   351     mTestObject->mServiceIconString = "dummy";
       
   352     mTestObject->mServiceIconPressedString = "dummy2";
       
   353     
       
   354     // test that updateUiComponents is not called when only initialize has been called,
       
   355     // ie that no activate calls have been made yet.
       
   356     // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the 
       
   357     // serviceButton->setVisible does not work as expected.
       
   358     mTestObject->setVisible(true);
       
   359     noVideosLabel->setVisible(true);
       
   360     emit testSignal(Qt::Vertical);
       
   361     QVERIFY(noVideosLabel->isVisible());
       
   362     mTestObject->setVisible(false);
       
   363         
       
   364     // tests that updateUiComponents is called when widget is visible.
       
   365     mTestObject->activate();
       
   366     noVideosLabel->setVisible(false);
       
   367     emit testSignal(Qt::Horizontal);
       
   368     QVERIFY(noVideosLabel->isVisible());    
       
   369     mTestObject->deactivate();
       
   370     
       
   371     // tests that updateUiComponents is not called when widget is not visible:
       
   372     // mTestObject->setVisible is needed because othervise childs cannot be set visible, ie the 
       
   373     // serviceButton->setVisible does not work as expected.
       
   374     mTestObject->setVisible(true);    
       
   375     noVideosLabel->setVisible(true);
       
   376     emit testSignal(Qt::Vertical);
       
   377     QVERIFY(noVideosLabel->isVisible());
       
   378     
       
   379     cleanup();
       
   380 }
       
   381 
       
   382 // end of file