diff -r 3738fe97f027 -r 8aed59de29f9 videocollection/videocollectionview/tsrc/testvideocollectionuiloader/src/testvideocollectionuiloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/tsrc/testvideocollectionuiloader/src/testvideocollectionuiloader.cpp Fri Apr 16 18:13:14 2010 +0300 @@ -0,0 +1,928 @@ +/** +* Copyright (c) 2010 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: tester for methods in VideoCollectionUiLoader +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "testvideocollectionuiloader.h" +#include "videohintwidget.h" +#include "videocollectionwrapperdata.h" + +#define private public +#include "videocollectionuiloader.h" +#include "videocollectionuiloaderdef.h" +#undef private + +int main(int argc, char *argv[]) +{ + HbApplication app(argc, argv); + HbMainWindow window; + TestVideoCollectionUiLoader tv; + int res; + if (argc > 1) + { + res = QTest::qExec(&tv, argc, argv); + } + else + { + char *pass[3]; + pass[0] = argv[0]; + pass[1] = "-o"; + pass[2] = "c:\\data\\testvideocollectionuiloader.txt"; + res = QTest::qExec(&tv, 3, pass); + } + + return res; +} + +TestVideoCollectionUiLoader::TestVideoCollectionUiLoader(): + mTestObject(0) +{ + +} + +TestVideoCollectionUiLoader::~TestVideoCollectionUiLoader() +{ + cleanup(); +} + +// --------------------------------------------------------------------------- +// init +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::init() +{ + // create test object + if (!mTestObject) + { + mTestObject = new VideoCollectionUiLoader; + } + + // clear object list + mObjects.clear(); + + HbDocumentLoader::cleanup(); +} + +// --------------------------------------------------------------------------- +// cleanup +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::cleanup() +{ + // delete test object + delete mTestObject; + mTestObject = 0; +} + +// TEST CASES START ---------------------------------------------------------- + +// --------------------------------------------------------------------------- +// testAddData +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testAddData() +{ + VideoCollectionUiLoaderParam banner( + DOCML_NAME_VC_HEADINGBANNER, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionWidget( + DOCML_NAME_VC_COLLECTIONWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionContentWidget( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + const int COUNT = 3; + + // add items + QList params; + params.append(banner); + params.append(collectionWidget); + params.append(collectionContentWidget); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + QVERIFY(mTestObject->mQueue.count() == COUNT); + QVERIFY(mTestObject->mQueue.contains(banner)); + QVERIFY(mTestObject->mQueue.contains(collectionWidget)); + QVERIFY(mTestObject->mQueue.contains(collectionContentWidget)); + + // add duplicate items + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + QVERIFY(mTestObject->mQueue.count() == COUNT); + QVERIFY(mTestObject->mQueue.contains(banner)); + QVERIFY(mTestObject->mQueue.contains(collectionWidget)); + QVERIFY(mTestObject->mQueue.contains(collectionContentWidget)); + + // load first phase and add duplicate items + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + QCOMPARE(mTestObject->mQueue.count(), 0); +} + +// --------------------------------------------------------------------------- +// testFindWidget +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testFindWidget() +{ + HbDocumentLoader::cleanup(); + + QList params; + VideoCollectionUiLoaderParam banner( + DOCML_NAME_VC_HEADINGBANNER, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam hint( + DOCML_NAME_VC_VIDEOHINTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + + // pre-load widget asynchronously and find widget + params.append(banner); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + HbGroupBox *bannerWidget = + mTestObject->findWidget( + DOCML_NAME_VC_HEADINGBANNER); + QVERIFY(bannerWidget); + QVERIFY(mObjects.contains(DOCML_NAME_VC_HEADINGBANNER)); + params.clear(); + cleanup(); + init(); + + // do not pre-load widget and load it, docml not loaded + HbDocumentLoader::mFindWidgetFails = true; + bannerWidget = + mTestObject->findWidget( + DOCML_NAME_VC_HEADINGBANNER); + QVERIFY(!bannerWidget); + QVERIFY(!mObjects.contains(DOCML_NAME_VC_HEADINGBANNER)); + cleanup(); + init(); + + // do not pre-load widget but add it in queue, docml loaded + bool ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + params.append(banner); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + bannerWidget = + mTestObject->findWidget( + DOCML_NAME_VC_HEADINGBANNER); + QVERIFY(bannerWidget); + QVERIFY(mObjects.contains(DOCML_NAME_VC_HEADINGBANNER)); + params.clear(); + cleanup(); + init(); + + // do not pre-load widget, docml loaded + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + bannerWidget = + mTestObject->findWidget( + DOCML_NAME_VC_HEADINGBANNER); + QVERIFY(bannerWidget); + QVERIFY(!mObjects.contains(DOCML_NAME_VC_HEADINGBANNER)); + cleanup(); + init(); + + // do not pre-load widget but add it in queue, section loaded + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + &ok); + QVERIFY(ok); + params.append(hint); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + VideoHintWidget *hintWidget = + mTestObject->findWidget( + DOCML_NAME_VC_VIDEOHINTWIDGET); + QVERIFY(hintWidget); + QVERIFY(mObjects.contains(DOCML_NAME_VC_VIDEOHINTWIDGET)); + params.clear(); + cleanup(); + init(); + + // do not pre-load widget, section not loaded + ok = false; + HbDocumentLoader::mFindWidgetFails = true; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + hintWidget = + mTestObject->findWidget( + DOCML_NAME_VC_VIDEOHINTWIDGET); + QVERIFY(!hintWidget); + QVERIFY(!mObjects.contains(DOCML_NAME_VC_VIDEOHINTWIDGET)); +} + +// --------------------------------------------------------------------------- +// testFindObject +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testFindObject() +{ + HbDocumentLoader::cleanup(); + + QList params; + VideoCollectionUiLoaderParam addToCollectionParam( + DOCML_NAME_ADD_TO_COLLECTION, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + + // find object: + // -docml not loaded + // -object not added in loading queue + HbDocumentLoader::mFindObjectFails = true; + HbAction *addToCollection = mTestObject->findObject(DOCML_NAME_ADD_TO_COLLECTION); + QVERIFY(!addToCollection); + QVERIFY(!mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + cleanup(); + init(); + + // find object: + // -docml not loaded + // -object added in loading queue + params.append(addToCollectionParam); + mTestObject->addData(params, this, SLOT(handleObjectReady(QObject*, const QString&))); + addToCollection = mTestObject->findObject(DOCML_NAME_ADD_TO_COLLECTION); + QVERIFY(addToCollection); + QVERIFY(mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + params.clear(); + cleanup(); + init(); + + // find object: + // -docml loaded + // -object not added in loading queue + bool ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + addToCollection = mTestObject->findObject(DOCML_NAME_ADD_TO_COLLECTION); + QVERIFY(addToCollection); + QVERIFY(!mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + cleanup(); + init(); + + // find object: + // -docml loaded + // -object added in loading queue + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + params.append(addToCollectionParam); + mTestObject->addData(params, this, SLOT(handleObjectReady(QObject*, const QString&))); + addToCollection = mTestObject->findObject(DOCML_NAME_ADD_TO_COLLECTION); + QVERIFY(addToCollection); + QVERIFY(mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + params.clear(); +} + +// --------------------------------------------------------------------------- +// testIsService +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testIsService() +{ + // is service: + // -service flag set + mTestObject->setIsService(true); + QVERIFY(mTestObject->mIsService); + cleanup(); + init(); + + // is service: + // -service flag not set + mTestObject->setIsService(false); + QVERIFY(!mTestObject->mIsService); +} + +// --------------------------------------------------------------------------- +// testLoadDocml +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testLoadDocml() +{ + HbDocumentLoader::mLoadReturns.append(new QObject()); + + // load docml: + // -correct docml once + bool ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mDocmls.contains(DOCML_VIDEOCOLLECTIONVIEW_FILE)); + cleanup(); + init(); + + // load docml: + // -two correct docmls + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mDocmls.contains(DOCML_VIDEOCOLLECTIONVIEW_FILE)); + mTestObject->load(DOCML_VIDEOSELECTIONDIALOG_FILE, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mDocmls.contains(DOCML_VIDEOSELECTIONDIALOG_FILE)); + cleanup(); + init(); + + // load docml: + // -same docml twice + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mDocmls.contains(DOCML_VIDEOCOLLECTIONVIEW_FILE)); + int objectCount = mTestObject->mOrphans.count(); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mDocmls.contains(DOCML_VIDEOCOLLECTIONVIEW_FILE)); + QVERIFY(objectCount == mTestObject->mOrphans.count()); + cleanup(); + init(); + + // load docml: + // -incorrect docml + const char *INVALID_DOCML = "invalid docml"; + ok = false; + HbDocumentLoader::mLoadFails = true; + mTestObject->load(INVALID_DOCML, &ok); + QVERIFY(!ok); + QVERIFY(!mTestObject->mDocmls.contains(INVALID_DOCML)); +} + +// --------------------------------------------------------------------------- +// testLoadSection +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testLoadSection() +{ + HbDocumentLoader::cleanup(); + + // load section: + // -docml loaded + // -correct section once + bool ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST)); + cleanup(); + init(); + + // load section: + // -docml loaded + // -two correct sections + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST)); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT)); + cleanup(); + init(); + + // load section: + // -docml loaded + // -same section twice + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, &ok); + QVERIFY(ok); + QVERIFY(mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST)); + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, &ok); + int sectionCount = mTestObject->mSections.count(); + QVERIFY(ok); + QVERIFY(mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST)); + QVERIFY(sectionCount == mTestObject->mSections.count()); + cleanup(); + init(); + + // load section: + // -docml not loaded + // -correct section once + ok = false; + HbDocumentLoader::mLoadFails = true; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, &ok); + QVERIFY(!ok); + QVERIFY(!mTestObject->mSections.contains(DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST)); + cleanup(); + init(); +} + +// --------------------------------------------------------------------------- +// testLoadPhase +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testLoadPhase() +{ + HbDocumentLoader::cleanup(); + + // load phase: + // -add first phase items in queue + // -load first phase + VideoCollectionUiLoaderParam videoWidgetParam( + DOCML_NAME_VC_VIDEOLISTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionWidgetParam( + DOCML_NAME_VC_COLLECTIONWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionContentWidgetParam( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + QList params; + params.append(videoWidgetParam); + params.append(collectionWidgetParam); + params.append(collectionContentWidgetParam); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mPhases.contains(VideoCollectionUiLoaderParam::LoadPhasePrimary)); + QCOMPARE(mTestObject->mObjects.count(), 3); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_VC_VIDEOLISTWIDGET)); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_VC_COLLECTIONWIDGET)); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET)); + params.clear(); + cleanup(); + init(); + + // load phase: + // -add second phase items in queue + // -load first phase + // -load second phase + VideoCollectionUiLoaderParam addToCollectionParam( + DOCML_NAME_ADD_TO_COLLECTION, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhaseSecondary); + VideoCollectionUiLoaderParam createCollectionParam( + DOCML_NAME_CREATE_COLLECTION, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhaseSecondary); + VideoCollectionUiLoaderParam deleteMultipleParam( + DOCML_NAME_DELETE_MULTIPLE, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhaseSecondary); + params.append(addToCollectionParam); + params.append(createCollectionParam); + params.append(deleteMultipleParam); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mPhases.contains(VideoCollectionUiLoaderParam::LoadPhasePrimary)); + QVERIFY(mTestObject->mObjects.count() == 0); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhaseSecondary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mPhases.contains(VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + QCOMPARE(mTestObject->mObjects.count(), 3); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_CREATE_COLLECTION)); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_DELETE_MULTIPLE)); + params.clear(); + cleanup(); + init(); + + // load phase: + // -add first phase items in queue + // -add second phase items in queue + // -load first phase + // -load second phase + params.append(videoWidgetParam); + params.append(addToCollectionParam); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhaseSecondary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mPhases.contains(VideoCollectionUiLoaderParam::LoadPhasePrimary)); + QVERIFY(mTestObject->mPhases.contains(VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + QCOMPARE(mTestObject->mObjects.count(), 2); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_VC_VIDEOLISTWIDGET)); + QVERIFY(mTestObject->mObjects.contains(DOCML_NAME_ADD_TO_COLLECTION)); + params.clear(); + cleanup(); + init(); +} + +// --------------------------------------------------------------------------- +// testLoadPhase_2 +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testLoadPhase_2() +{ + // load phase: + // -add all items + // -load all items + QList params; + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VIEW, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VC_HEADINGBANNER, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VC_COLLECTIONWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VC_VIDEOLISTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_VC_VIDEOHINTWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_OPTIONS_MENU, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_SORT_MENU, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_SORT_BY_DATE, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_SORT_BY_NAME, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_SORT_BY_SIZE, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_ADD_TO_COLLECTION, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_CREATE_COLLECTION, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_DELETE_MULTIPLE, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + false, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_HINT_BUTTON, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_HINT_LABEL, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_NO_VIDEOS_LABEL, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_HINT, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_DIALOG, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_DLG_HEADINGLBL, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_CHECK_CONTAINER, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_MARKALL, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_LBL_SELECTION, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + params.append(VideoCollectionUiLoaderParam( + DOCML_NAME_LIST_CONTAINER, + DOCML_VIDEOSELECTIONDIALOG_FILE, + true, + VideoCollectionUiLoaderParam::LoadPhaseSecondary)); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhaseSecondary); + QTest::qWait(5000); // 5 seconds + QCOMPARE(mObjects.count(), params.count()); + QHash::const_iterator i = mObjects.constBegin(); + while (i != mObjects.constEnd()) + { + bool found = false; + foreach (const VideoCollectionUiLoaderParam ¶m, params) + { + if (param == i.key()) + { + found = true; + break; + } + } + QVERIFY(found); + i++; + } + + // Getting proxymodel fails. + cleanup(); + init(); + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + VideoCollectionWrapperData::mGetModelFails = true; + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhaseSecondary); + QTest::qWait(5000); // 5 seconds + QCOMPARE(mObjects.count(), params.count()); + i = mObjects.constBegin(); + while (i != mObjects.constEnd()) + { + bool found = false; + foreach (const VideoCollectionUiLoaderParam ¶m, params) + { + if (param == i.key()) + { + found = true; + break; + } + } + QVERIFY(found); + i++; + } + params.clear(); +} + +// --------------------------------------------------------------------------- +// testDelete +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testDelete() +{ + VideoCollectionWrapperData::reset(); + + // delete: + // -load docml + // -delete one "root" item + bool ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + QVERIFY(ok); + HbAction *addToCollection = mTestObject->findObject(DOCML_NAME_ADD_TO_COLLECTION); + HbAction *tempAction = addToCollection; + delete addToCollection; + QVERIFY(!mTestObject->mOrphans.contains(tempAction)); + cleanup(); + init(); + + // delete: + // -load docml + // -delete all items + ok = false; + mTestObject->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + foreach (QObject *object, mTestObject->mOrphans) + { + delete object; + } + QVERIFY(!mTestObject->mOrphans.count()); + QVERIFY(ok); +} + +// --------------------------------------------------------------------------- +// testRemoveOrphanFromList +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testRemoveOrphanFromList() +{ + QObject *obj = 0; + + // Nothing in the object lists. + cleanup(); + init(); + connect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + emit testSignal(obj); + disconnect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + QCOMPARE(mTestObject->mOrphans.count(), 0); + QCOMPARE(mTestObject->mObjects.count(), 0); + + // Orphans and objects contain the object. + cleanup(); + init(); + connect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + obj = new QObject(); + mTestObject->mOrphans.append(obj); + mTestObject->mObjects.insert("test", obj); + emit testSignal(obj); + disconnect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + QCOMPARE(mTestObject->mOrphans.count(), 0); + QCOMPARE(mTestObject->mObjects.count(), 0); + delete obj; + + // Orphans contain the object, objects has different + cleanup(); + init(); + connect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + obj = new QObject(); + mTestObject->mOrphans.append(obj); + mTestObject->mObjects.insert("test", new QObject()); + emit testSignal(obj); + disconnect(this, SIGNAL(testSignal(QObject *)), mTestObject, SLOT(removeOrphanFromList(QObject *))); + QCOMPARE(mTestObject->mOrphans.count(), 0); + QCOMPARE(mTestObject->mObjects.count(), 1); + delete obj; +} + +// TEST CASES END ------------------------------------------------------------- + +void TestVideoCollectionUiLoader::handleObjectReady(QObject *object, const QString &name) +{ + qDebug() << "Received object :" << name; + + if (object) + { + if (name == DOCML_NAME_VIEW) + { + HbMainWindow *window = hbInstance->allMainWindows().at(0); + if (window) + { + HbView *view = qobject_cast(object); + if (view) + { + window->setCurrentView(view); + } + } + } + mObjects.insert(name, object); + } +} + +// --------------------------------------------------------------------------- +// testPrepareDocmlAndSection +// --------------------------------------------------------------------------- +// +void TestVideoCollectionUiLoader::testPrepareDocmlAndSection() +{ + VideoCollectionUiLoaderParam banner( + DOCML_NAME_VC_HEADINGBANNER, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionWidget( + DOCML_NAME_VC_COLLECTIONWIDGET, + DOCML_VIDEOCOLLECTIONVIEW_FILE, + 0, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + VideoCollectionUiLoaderParam collectionContentWidget( + DOCML_NAME_VC_COLLECTIONCONTENTWIDGET, + 0, + DOCML_VIDEOCOLLECTIONVIEW_SECTION_LIST, + true, + VideoCollectionUiLoaderParam::LoadPhasePrimary); + const int COUNT = 3; + + // add items + QList params; + params.append(banner); + params.append(collectionWidget); + params.append(collectionContentWidget); + + cleanup(); + init(); + HbDocumentLoader::mFindWidgetFails = true; + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mQueue.count() == 0); + QVERIFY(!mTestObject->mQueue.contains(banner)); + QVERIFY(!mTestObject->mQueue.contains(collectionWidget)); + QVERIFY(!mTestObject->mQueue.contains(collectionContentWidget)); + QCOMPARE(mTestObject->mQueue.count(), 0); + + cleanup(); + init(); + HbDocumentLoader::mFindWidgetFails = true; + HbDocumentLoader::mLoadFails = true; + mTestObject->addData(params, + this, + SLOT(handleObjectReady(QObject*, const QString&))); + mTestObject->loadPhase(VideoCollectionUiLoaderParam::LoadPhasePrimary); + QTest::qWait(1000); // wait 1 second + QVERIFY(mTestObject->mQueue.count() == 0); + QVERIFY(!mTestObject->mQueue.contains(banner)); + QVERIFY(!mTestObject->mQueue.contains(collectionWidget)); + QVERIFY(!mTestObject->mQueue.contains(collectionContentWidget)); + QCOMPARE(mTestObject->mQueue.count(), 0); +} + +// end of file