diff -r 0e1e938beb1a -r a9d57bd8d7b7 videocollection/videocollectionview/tsrc/testlisttoolbar/src/testlisttoolbar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/tsrc/testlisttoolbar/src/testlisttoolbar.cpp Mon Oct 04 00:19:07 2010 +0300 @@ -0,0 +1,753 @@ +/** +* 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: tester for methods in VideoListToolbar +* +*/ + +// Version : %version: 2 % + +#include +#include +#include +#include +#include + +#include "testlisttoolbar.h" +#include "videolistview.h" +#include "videocollectionuiloader.h" +#include "videocollectionuiloaderdata.h" +#include "videolistview.h" +#include "videolistviewdata.h" +#include "videooperatorservice.h" +#include "videooperatorservicedata.h" +#include "videoservices.h" +#include "videocollectionviewutils.h" +#include "videocollectionviewutilsdata.h" +#include "videoproxymodeldata.h" +#include "videolistdatamodeldata.h" +#include "videolistselectiondialog.h" +#include "videolistselectiondialogdata.h" +#include "videocollectionwrapper.h" + +#define private public +#include "videolisttoolbar.h" +#undef private + + + +// --------------------------------------------------------------------------- +// main +// --------------------------------------------------------------------------- +// +int main(int argc, char *argv[]) +{ + HbApplication app(argc, argv); + + TestListToolbar 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\\testlisttoolbar.txt"; + res = QTest::qExec(&tv, 3, pass); + } + + return res; +} + +// --------------------------------------------------------------------------- +// setRowCount +// --------------------------------------------------------------------------- +// +void TestListToolbar::setRowCount(int count, VideoProxyModelGeneric *model) +{ + if (model) + { + VideoListDataModel *sourceModel = + qobject_cast( + model->sourceModel()); + if(sourceModel) + { + VideoListDataModelData::setRowCount(*sourceModel, count); + } + } +} + + +// --------------------------------------------------------------------------- +// initTestCase +// --------------------------------------------------------------------------- +// +void TestListToolbar::initTestCase() +{ + mTestObject = 0; + mStubListView = 0; + mStubUiLoader = 0; + mStubModel = 0; +} + +// --------------------------------------------------------------------------- +// init +// --------------------------------------------------------------------------- +// +void TestListToolbar::init() +{ + if(!mStubUiLoader) + { + mStubUiLoader = new VideoCollectionUiLoader(); + } + if(!mStubListView) + { + mStubListView = new VideoListView(mStubUiLoader); + } + if(!mTestObject) + { + mTestObject = new VideoListToolbar(mStubUiLoader, mStubListView); + } + if(!mStubModel) + { + mStubModel = VideoCollectionWrapper::instance().getAllVideosModel(); + } + // by default, we run as stand alone + VideoCollectionViewUtilsData::mIsServiceValue = false; + VideoCollectionViewUtils::instance().setIsService(); +} + +// --------------------------------------------------------------------------- +// cleanup +// --------------------------------------------------------------------------- +// +void TestListToolbar::cleanup() +{ + delete mTestObject; + mTestObject = 0; + + delete mStubListView; + mStubListView = 0; + + delete mStubUiLoader; + mStubUiLoader = 0; + + mStubModel = 0; + + mLastChangedActions.clear(); + + mLastChangedExtension = 0; +} + +// --------------------------------------------------------------------------- +// cleanupTestCase +// --------------------------------------------------------------------------- +// +void TestListToolbar::cleanupTestCase() +{ + delete mTestObject; + mTestObject = 0; + + delete mStubListView; + mStubListView = 0; + + delete mStubUiLoader; + mStubUiLoader = 0; + + if( VideoListViewData::mCurrentListWidget) + { + delete VideoListViewData::mCurrentListWidget; + VideoListViewData::mCurrentListWidget = 0; + } +} + +// --------------------------------------------------------------------------- +// testActionsChangedSlot +// --------------------------------------------------------------------------- +// +void TestListToolbar::testActionsChangedSlot(QList actions) +{ + mLastChangedActions.clear(); + mLastChangedActions = actions; +} + +// --------------------------------------------------------------------------- +// testToolbarExtensionChangedSlot +// --------------------------------------------------------------------------- +// +void TestListToolbar::testToolbarExtensionChangedSlot(HbToolBarExtension* extension) +{ + mLastChangedExtension = 0; + mLastChangedExtension = extension; +} + +// --------------------------------------------------------------------------- +// testInitialize +// --------------------------------------------------------------------------- +// +void TestListToolbar::testInitialize() +{ + + mTestObject->initialize(); + // not a service, no service extensions + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mTestObject->mVideoOperatorServices.count()); + + cleanup(); + init(); + + VideoOperatorServiceData::mTitles.append("TestTitle"); + VideoOperatorServiceData::mUris.append("TestURI"); + VideoOperatorServiceData::mIcons.append("TestIcon"); + // not a service, one service extension + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarServiceExtension); + QVERIFY( mTestObject->mVideoOperatorServices.count() == 1); + + cleanup(); + init(); + + VideoOperatorServiceData::mTitles.append("TestTitle"); + VideoOperatorServiceData::mTitles.append("TestTitle2"); + VideoOperatorServiceData::mUris.append("TestURI"); + VideoOperatorServiceData::mUris.append("TestURI2"); + VideoOperatorServiceData::mIcons.append("TestIcon"); + VideoOperatorServiceData::mIcons.append("TestIcon2"); + // not a service, multiple service extensions + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( mTestObject->mToolbarServiceExtension); + QVERIFY( mTestObject->mVideoOperatorServices.count() == 2); + + // second call, no change + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( mTestObject->mToolbarServiceExtension); + QVERIFY( mTestObject->mVideoOperatorServices.count() == 2); + + cleanup(); + init(); + VideoOperatorServiceData::mTitles.append("TestTitle"); + VideoOperatorServiceData::mUris.append("TestURI"); + VideoOperatorServiceData::mIcons.append("TestIcon"); + // for coverity: plain initialization, service for one service allready gotten + VideoOperatorService *tmp = new VideoOperatorService(); + mTestObject->mVideoOperatorServices.append(tmp); + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + // service toolbutton is not created + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarServiceExtension); + QVERIFY( mTestObject->mVideoOperatorServices.count() == 1); + VideoOperatorServiceData::reset(); +} + +// --------------------------------------------------------------------------- +// InitializeService +// --------------------------------------------------------------------------- +// +void TestListToolbar::testInitializeService() +{ + VideoCollectionViewUtilsData::mIsServiceValue = true; + VideoCollectionViewUtils::instance().setIsService(); + // service object does not exists yet + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mTestObject->mVideoOperatorServices.count()); + + // service object exist + cleanup(); + init(); + VideoCollectionViewUtilsData::mIsServiceValue = true; + VideoCollectionViewUtils::instance().setIsService(); + + mTestObject->mVideoServices = VideoServices::instance(); + mTestObject->initialize(); + QVERIFY( mTestObject->mToolbarViewsActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarCollectionActionGroup != 0 ); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mTestObject->mVideoOperatorServices.count()); + + VideoCollectionViewUtilsData::mIsServiceValue = false; + VideoCollectionViewUtils::instance().setIsService(); +} + +// --------------------------------------------------------------------------- +// testViewStateChanged +// --------------------------------------------------------------------------- +// +void TestListToolbar::testViewStateChanged() +{ + connect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + connect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); + + // not initialized + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + + mTestObject->initialize(); + + // not a service, level is ELevelCategory + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelCategory, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + // not a service, level is ELevelDefaultColl + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelDefaultColl, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + // not a service, level is ELevelVideos + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + // not a service, level is ELevelAlbum, model ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]->isVisible()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( mLastChangedActions.count() == 2); + + // change level, otherwise signals are not emitted + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + + // not a service, level is ELevelAlbum, model not ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, true, false); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( mLastChangedActions.count() == 2); + + // not a service, level is not anything above + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelInvalid, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + disconnect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + disconnect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); + +} + +// --------------------------------------------------------------------------- +// testViewStateChangedService +// --------------------------------------------------------------------------- +// +void TestListToolbar::testViewStateChangedService() +{ + VideoCollectionViewUtilsData::mIsServiceValue = true; + VideoCollectionViewUtils::instance().setIsService(); + connect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + connect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); + + mTestObject->initialize(); + + // service, level is ELevelCategory + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelCategory, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + // service, level is ELevelDefaultColl + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelDefaultColl, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + // service, level is ELevelVideos + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + // service, level is ELevelAlbum model ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + // change level, otherwise not all signal are emitted + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + + // service, level is ELevelAlbum model not ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, false, false); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + disconnect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + disconnect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); +} + +// --------------------------------------------------------------------------- +// testViewStateChangedWithServiceExt +// --------------------------------------------------------------------------- +// +void TestListToolbar::testViewStateChangedWithServiceExt() +{ + connect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + connect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); + + VideoOperatorServiceData::mTitles.append("TestTitle"); + VideoOperatorServiceData::mTitles.append("TestTitle2"); + VideoOperatorServiceData::mUris.append("TestURI"); + VideoOperatorServiceData::mUris.append("TestURI2"); + VideoOperatorServiceData::mIcons.append("TestIcon"); + VideoOperatorServiceData::mIcons.append("TestIcon2"); + + mTestObject->initialize(); + + // not a service, level is ELevelCategory + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelCategory, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + mLastChangedExtension = 0; + + // not a service, level is ELevelDefaultColl + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelDefaultColl, false, true); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + // not a service, level is ELevelVideos + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( mLastChangedExtension); + QVERIFY(mLastChangedActions.count() == 2); + + mLastChangedExtension = 0; + // not a service, level is ELevelAlbum, model ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]->isVisible()); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( mLastChangedActions.count() == 2); + + // need to change level to make sure signals are emitted correctly + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelVideos, false, true); + mLastChangedExtension = 0; + + // not a service, level is ELevelAlbum, model not ready + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelAlbum, true, false); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionAddVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionRemoveVideos]->isVisible()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( mLastChangedActions.count() == 2); + + // not a service, level is not anything above + mTestObject->viewStateChanged(VideoCollectionCommon::ELevelInvalid, false, true); + QVERIFY( mTestObject->mToolbarActions[VideoListToolbar::ETBActionAllVideos]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionCollections]->isChecked()); + QVERIFY( !mTestObject->mToolbarActions[VideoListToolbar::ETBActionServices]); + QVERIFY( !mLastChangedExtension); + QVERIFY( !mLastChangedActions.count()); + + disconnect(mTestObject, SIGNAL(actionsChanged(QList)), this, SLOT(testActionsChangedSlot(QList))); + disconnect(mTestObject, SIGNAL(toolbarExtensionChanged(HbToolBarExtension*)), this, SLOT(testToolbarExtensionChangedSlot(HbToolBarExtension*))); +} + + + + +// --------------------------------------------------------------------------- +// testOpenOperatorServiceSlot +// --------------------------------------------------------------------------- +// +void TestListToolbar::testOpenOperatorServiceSlot() +{ + mTestObject->initialize(); + // no operator services + mTestObject->openOperatorServiceSlot(); + QVERIFY(VideoOperatorServiceData::mLaunchServiceCallCount == 0); + + cleanup(); + init(); + VideoOperatorServiceData::mTitles.append("TestTitle"); + VideoOperatorServiceData::mUris.append("TestURI"); + VideoOperatorServiceData::mIcons.append("TestIcon"); + mTestObject->initialize(); + // more than zero operator services + mTestObject->openOperatorServiceSlot(); + QVERIFY(VideoOperatorServiceData::mLaunchServiceCallCount == 1); +} + +// --------------------------------------------------------------------------- +// testAddVideosToCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListToolbar::testAddVideosToCollectionSlot() +{ + + TMPXItemId invalidId = TMPXItemId::InvalidId(); + VideoProxyModelData::mOpenedItemId = TMPXItemId(0, 2); + + mStubModel = VideoCollectionWrapper::instance().getCollectionContentModel(); + + // no list widget + mTestObject->addVideosToCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + + VideoListViewData::mCurrentListWidget = new VideoListWidget(mStubUiLoader); + + // no model in widget + mTestObject->addVideosToCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + + // model exist. + VideoListViewData::mCurrentListWidget->initialize(*mStubModel, false, VideoCollectionCommon::ELevelAlbum); + + // Selection dialog widget loading fails. + VideoCollectionUiLoaderData::mFindFailure = true; + mTestObject->addVideosToCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + VideoCollectionUiLoaderData::mFindFailure = false; + + // cannot load DOCML_NAME_VC_VIDEOLISTWIDGET + VideoCollectionUiLoaderData::mFindFailureNameList.append(DOCML_NAME_VC_VIDEOLISTWIDGET); + mTestObject->addVideosToCollectionSlot(); + QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1); + QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + VideoListSelectionDialogData::reset(); + VideoCollectionViewUtilsData::reset(); + VideoCollectionUiLoaderData::reset(); + + VideoListWidget *allVideos = mStubUiLoader->findWidget( + DOCML_NAME_VC_VIDEOLISTWIDGET); + // loads DOCML_NAME_VC_VIDEOLISTWIDGET but is has no model + VideoProxyModelGeneric *tmp = allVideos->getModel(); + VideoProxyModelGeneric *nullModel = 0; + allVideos->initialize(*nullModel, false, VideoCollectionCommon::ELevelVideos); + VideoCollectionUiLoaderData::mFindFailureNameList.removeAll(DOCML_NAME_VC_VIDEOLISTWIDGET); + mTestObject->addVideosToCollectionSlot(); + QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1); + QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + VideoListSelectionDialogData::reset(); + VideoCollectionViewUtilsData::reset(); + VideoCollectionUiLoaderData::reset(); + allVideos->initialize(*tmp, false, VideoCollectionCommon::ELevelVideos); + + // loads DOCML_NAME_VC_VIDEOLISTWIDGET, it has model, both have zero videos + mTestObject->addVideosToCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount ); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + + // loads DOCML_NAME_VC_VIDEOLISTWIDGET, it has model, both have same amount, more that zero videos + setRowCount(3, tmp); + setRowCount(3, mStubModel); + mTestObject->addVideosToCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount ); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusAllVideosAlreadyInCollection); + VideoListSelectionDialogData::reset(); + VideoCollectionViewUtilsData::reset(); + VideoCollectionUiLoaderData::reset(); + + + // loads DOCML_NAME_VC_VIDEOLISTWIDGET, it has model, different amount, more that zero videos + // clear tmp model's source model to get row count zero + VideoListDataModel *tmpSourceModel = + qobject_cast( + tmp->sourceModel()); + tmp->setSourceModel(0); + mTestObject->addVideosToCollectionSlot(); + QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1); + QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::EAddToCollection); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId); + QCOMPARE(VideoCollectionViewUtilsData::mLastError, 0); + // need to restore source model. Otherwise allvideos -proxymodel used in other cases does not work correctly + tmp->setSourceModel(tmpSourceModel); + +} + +// --------------------------------------------------------------------------- +// testRemoveVideosFromCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListToolbar::testRemoveVideosFromCollectionSlot() +{ + if( VideoListViewData::mCurrentListWidget) + { + delete VideoListViewData::mCurrentListWidget; + VideoListViewData::mCurrentListWidget = 0; + } + // no current list + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount ); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + VideoListViewData::mCurrentListWidget = new VideoListWidget(mStubUiLoader); + + // no model in widget + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // has model, level different than ELevelAlbum + VideoListViewData::mCurrentListWidget->initialize(*mStubModel, false, VideoCollectionCommon::ELevelVideos); + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // has model, level is ELEvelAlbum, rowcount == 0 + setRowCount(0, mStubModel); + VideoListViewData::mCurrentListWidget->initialize(*mStubModel, false, VideoCollectionCommon::ELevelAlbum); + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // has model, level is ELevelAlbum, rowcount > 0, dialog loading fails + setRowCount(5, mStubModel); + VideoCollectionUiLoaderData::mFindFailure = true; + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + VideoCollectionUiLoaderData::mFindFailure = false; + + // has model, level is ELevelAlbum, rowcount > 0, dialog loading succeeds, + // opened item is TMPXItemId::InvalidId() + VideoProxyModelData::mOpenedItemId = TMPXItemId::InvalidId(); + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // has model, level is ELevelAlbum, rowcount > 0, dialog loading succeeds, + // opened items iId2 != KVcxMvcMediaTypeAlbum + VideoProxyModelData::mOpenedItemId = TMPXItemId(1,KVcxMvcMediaTypeCategory); + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(!VideoListSelectionDialogData::mMultiSelectionLaunchCount); + QVERIFY(VideoListSelectionDialogData::mSelectionType == -1); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + + // succeed case + VideoProxyModelData::mOpenedItemId = TMPXItemId(1,KVcxMvcMediaTypeAlbum); + mTestObject->removeVideosFromCollectionSlot(); + QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1); + QVERIFY(VideoListSelectionDialogData::mSelectionType == VideoListSelectionDialog::ERemoveFromCollection); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId ); + +}