videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp
changeset 30 4f111d64a341
child 34 bbb98528c666
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp	Thu Apr 01 22:38:49 2010 +0300
@@ -0,0 +1,1313 @@
+/**
+* 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 VideoListView
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QMap>
+#include <hbapplication.h>
+#include <hbinstance.h>
+#include <qactiongroup.h>
+#include <hbmenu.h>
+#include <hbtoolbar.h>
+#include <hbaction.h>
+#include <videocollectioncommon.h>
+#include <hbstackedwidget.h>
+#include <hbgroupbox.h>
+
+#include "dummyhbmenu.h"
+#include "videocollectionwrapper.h"
+#include "testlistview.h"
+#include "videolistwidget.h"
+#include "videocollectionviewutils.h"
+#include "videolistselectiondialog.h"
+#include "videosortfilterproxymodel.h"
+#include "videocollectionwrapper.h"
+#include "dummydatamodel.h"
+#include "videocollectionuiloader.h"
+#include "videohintwidget.h"
+
+#define	private	public
+#include "videolistview.h"
+#undef private
+
+// ---------------------------------------------------------------------------
+// main
+// ---------------------------------------------------------------------------
+//
+int	main(int argc, char	*argv[])
+{
+	HbApplication app(argc,	argv);
+	HbMainWindow window;
+
+	TestListView tv;
+
+	char *pass[3];
+	pass[0]	= argv[0];
+	pass[1]	= "-o";
+	pass[2]	= "c:\\data\\testlistview.txt";
+
+	int	res	= QTest::qExec(&tv,	3, pass);
+
+	return res;
+}
+
+// ---------------------------------------------------------------------------
+// init
+// ---------------------------------------------------------------------------
+//
+void TestListView::init(bool initTestView)
+{
+    VideoListWidget::mInitializeCount = 0;
+    VideoListWidget::mInitializeReturnValue = 0;
+    VideoListWidget::mActivateCount = 0;
+    VideoListWidget::mActivateReturnValue = 0;
+    VideoListWidget::mActive = false;
+    VideoListWidget::mDeactivateCount = 0;
+	VideoCollectionWrapper::mOpenFails	= false;
+	VideoCollectionWrapper::mGetModelFails	= false;
+	VideoCollectionViewUtils::mSortRole = -1;
+    VideoListSelectionDialog::mSelectionCount =	0;
+	VideoListSelectionDialog::mMultiSelectionLaunchCount = 0;
+	VideoListSelectionDialog::mMultiSelectionItemSelectionCount	= 0;
+	VideoListSelectionDialog::mExecReturnPrimary = false;
+	VideoCollectionViewUtils::mSortOrder = Qt::AscendingOrder;
+	VideoSortFilterProxyModel::mOpenFails =	0;
+	VideoSortFilterProxyModel::mDoSortingCallCount = 0;
+
+	mUiLoader = new VideoCollectionUiLoader();
+
+	mUiLoader->reset();
+
+	bool ok(false);
+
+	QList<QObject *> objects = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
+
+    if (!ok)
+    {
+    	return;
+    }
+
+    mTestView = mUiLoader->findObject<VideoListView>( DOCML_NAME_VIEW );
+
+    QVERIFY(mTestView);
+    
+    mListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+
+    if(initTestView)
+	{
+		QVERIFY(mTestView->initializeView()	== 0);
+	    VideoSortFilterProxyModel::mDoSortingCallCount = 0;
+        VideoSortFilterProxyModel::mSortRole = -1;
+        VideoSortFilterProxyModel::mSortOrder = Qt::AscendingOrder;
+	}
+	mWrapper = VideoCollectionWrapper::instance();
+	QVERIFY(mWrapper->open(VideoListWidget::ELevelVideos) != 0);
+}
+
+// ---------------------------------------------------------------------------
+// cleanup
+// ---------------------------------------------------------------------------
+//
+void TestListView::cleanup()
+{
+	delete mTestView;
+	mTestView =	0;
+	if(mWrapper)
+	{
+	    mWrapper->decreaseReferenceCount();
+	    QCOMPARE(mWrapper->mReferenceCount, 0);
+    }
+
+	disconnect();
+}
+
+// ---------------------------------------------------------------------------
+// visibleMenuActions
+// ---------------------------------------------------------------------------
+//
+int	TestListView::visibleMenuActions()
+{
+	int	visibleActions(0);
+	VideoListView::TViewActionIds key;
+	HbAction *action(0);
+	foreach(key,mTestView->mMenuActions.keys())
+	{
+		action = dynamic_cast<HbAction*>(mTestView->mMenuActions[key]);
+		if(action && action->isVisible())
+			visibleActions++;
+	}
+	return visibleActions;
+}
+
+// ---------------------------------------------------------------------------
+// testCreateDelete
+// ---------------------------------------------------------------------------
+//
+void TestListView::testCreateDelete()
+{
+    mWrapper = 0;
+
+    mUiLoader = new VideoCollectionUiLoader();
+
+	mUiLoader->reset();
+
+	bool ok(false);
+
+	QList<QObject *> objects = mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok);
+
+    if (!ok)
+    {
+    	return;
+    }
+
+    mTestView = mUiLoader->findObject<VideoListView>( DOCML_NAME_VIEW );
+
+    delete mTestView;
+	mTestView =	0;
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test initialize view
+// ---------------------------------------------------------------------------
+//
+void TestListView::testInitializeView()
+{
+	init(false);
+	// Test	videolist widget creation failure.
+	VideoListWidget::mInitializeReturnValue	= -1;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mVideoListWidget ==	0 );
+	QVERIFY( mTestView->mVideoHintWidget == 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup == 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == 0 );
+	QVERIFY( mTestView->mVideoServices == 0 );
+	QVERIFY( mTestView->mIsService == false );
+
+	cleanup();
+
+	// Test	widget creation	succeed.
+	init(false);
+    VideoCollectionViewUtils::mSortRole = Qt::DisplayRole;
+    VideoCollectionViewUtils::mSortOrder = Qt::DescendingOrder;
+	QVERIFY( mTestView->initializeView() ==	0 );
+	// Verify
+	QVERIFY( mTestView->mVideoListWidget !=	0 );
+    QVERIFY( mTestView->mVideoHintWidget != 0 );
+	QCOMPARE( VideoListWidget::mInitializeCount, 1 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup != 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup != 0 );
+	QCOMPARE( mTestView->mToolbarViewsActionGroup->actions().count(), 3 );
+	QCOMPARE( mTestView->mToolbarCollectionActionGroup->actions().count(), 3 );
+	QCOMPARE( mTestView->toolBar()->actions().count(), 3 );
+	// to my understanding the all videos action should	always be first.
+    QCOMPARE( mTestView->mToolbarViewsActionGroup->actions().first()->toolTip(), tr("All videos") );
+	QVERIFY( mTestView->mToolbarViewsActionGroup->actions().first()->isChecked()	);
+	QCOMPARE( VideoSortFilterProxyModel::mSortRole, (int)Qt::DisplayRole );
+	QCOMPARE( VideoSortFilterProxyModel::mSortOrder, Qt::DescendingOrder );
+	QVERIFY( VideoSortFilterProxyModel::mSortAsync == false );
+	QVERIFY( mTestView->mVideoServices == 0 );
+	QVERIFY( mTestView->mIsService == false );
+	cleanup();
+	cleanup();
+
+	// Test	command	signal.
+	init(true);
+	connect( this, SIGNAL(testSignal(int)),	mTestView->mVideoListWidget, SIGNAL(command(int)) );
+	QSignalSpy spy(mTestView, SIGNAL(command(int)));
+	emit testSignal(5);
+	QCOMPARE( spy.count(), 1 );
+	QList<QVariant>	arguments =	spy.takeFirst();
+	QCOMPARE( arguments.at(0).toInt(), 5 );
+	disconnect();
+	cleanup();
+
+	init(true);
+	VideoListWidget* list = mTestView->mVideoListWidget;
+	VideoHintWidget* hint = mTestView->mVideoHintWidget;
+	QPointer<QActionGroup> toolbar = mTestView->mToolbarViewsActionGroup;
+	QPointer<QActionGroup> toolbar2 = mTestView->mToolbarCollectionActionGroup;
+
+	// Test	calling	initializeView again.
+	QVERIFY( mTestView->initializeView() ==	0 );
+
+	QVERIFY( toolbar !=	0 );
+	QVERIFY( toolbar2 != 0 );
+	QVERIFY( mTestView->mVideoListWidget ==	list );
+	QVERIFY( mTestView->mVideoHintWidget == hint );
+	QVERIFY( mTestView->mToolbarViewsActionGroup == toolbar );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == toolbar2 );
+
+	// Test	view deletion.
+	cleanup();
+	QVERIFY( toolbar ==	0 );
+	QVERIFY( toolbar2 == 0 );
+
+	// Test	get	model failure.
+	init(false);
+	QVERIFY(mTestView);
+	VideoCollectionWrapper::mGetModelFails	= true;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mVideoListWidget ==	0 );
+	QVERIFY( mTestView->mVideoHintWidget	== 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup	== 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup	== 0 );
+	cleanup();
+
+	// Test	model open failure.
+	init(false);
+	QVERIFY(mTestView);
+	VideoSortFilterProxyModel::mOpenFails =	true;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mVideoListWidget ==	0 );
+	QVERIFY( mTestView->mVideoHintWidget == 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup == 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == 0 );
+	cleanup();
+
+	// Test sorting value load 'failure'.
+	init(false);
+    VideoCollectionViewUtils::mSortRole = Qt::DisplayRole;
+    VideoCollectionViewUtils::mSortOrder = Qt::DescendingOrder;
+    VideoCollectionViewUtils::mLoadSortingValuesFails = true;
+    QVERIFY( mTestView->initializeView() == 0 );
+    QCOMPARE( VideoSortFilterProxyModel::mSortRole, (int)VideoCollectionCommon::KeyDateTime );
+    QCOMPARE( VideoSortFilterProxyModel::mSortOrder, Qt::AscendingOrder );
+    QVERIFY( VideoSortFilterProxyModel::mSortAsync == false );
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test create menu
+// ---------------------------------------------------------------------------
+//
+void TestListView::testCreateListMenu()
+{
+	init(false);
+	VideoListWidget::mInitializeReturnValue	= -1;
+	QVERIFY( mTestView->initializeView() < 0 );
+	HbMenu*	menu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+	QVERIFY( menu );
+	QCOMPARE( menu->actions().count(), 4 );
+
+	cleanup();
+
+	init(false);
+	VideoListWidget::mInitializeReturnValue	= 0;
+	QVERIFY( mTestView->initializeView() ==	0 );
+	menu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+	QVERIFY( menu );
+	QCOMPARE( menu->actions().count(), 4 );
+
+	HbAction* sortAction = dynamic_cast<HbAction*>(menu->actions().at(3));
+	QVERIFY( sortAction	);
+	menu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+	QVERIFY(menu !=	0);
+	QVERIFY( menu->actions().count() ==	4 );
+
+	QVERIFY( mTestView->mMenuActions.count() ==	9 );
+	QVERIFY( mTestView->mSortingRoles.count() == 5 );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testMenus
+// ---------------------------------------------------------------------------
+//
+void TestListView::testMenus()
+{
+	init();
+
+	HbAction* action;
+	QList<QAction*> tbActions = mTestView->toolBar()->actions();
+	QList<QAction*>	tbGroupActions;
+	QList<QAction*>	tbGroupActions2;
+
+	// All videos is open for default, verify.
+	QVERIFY(mTestView->mToolbarViewsActionGroup != 0);
+	QVERIFY(mTestView->mToolbarCollectionActionGroup != 0);
+	tbGroupActions = mTestView->mToolbarViewsActionGroup->actions();
+	tbGroupActions2 = mTestView->mToolbarCollectionActionGroup->actions();
+	QVERIFY(mTestView->mToolbarActions.count() == 6);
+	QVERIFY(tbActions.count() == 3);
+	QVERIFY(tbGroupActions.count() == 3);
+	QVERIFY(tbGroupActions2.count() == 3);
+	QVERIFY( tbGroupActions.at(0)->isChecked() ); // First is checked.
+	// visible menu items remains constant after init until
+	// aboutToShowMainMenuSlot is called
+	QVERIFY(visibleMenuActions() == 9);
+	// Verify checkable	and	visible	toolbar	actions.
+	HbAction* allVideosAction =	mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	HbAction* collectionsAction	= mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	HbAction* servicesAction = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	HbAction* addVideosAction =	mTestView->mToolbarActions[VideoListView::ETBActionAddVideos];
+	HbAction* removeVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos];
+	HbAction* sortVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionSortVideos];
+	QVERIFY( allVideosAction !=	0 && allVideosAction->isCheckable()	&& allVideosAction->isVisible() &&
+			tbActions.at(0) == tbGroupActions.at(0));
+	QVERIFY( collectionsAction != 0	&& collectionsAction->isCheckable()	&& collectionsAction->isVisible() &&
+			tbActions.at(1) == tbGroupActions.at(1));
+	QVERIFY( servicesAction	!= 0 &&	servicesAction->isCheckable() && servicesAction->isVisible() &&
+			tbActions.at(2) == tbGroupActions.at(2));
+	QVERIFY( addVideosAction !=	0 && !addVideosAction->isCheckable() &&
+			tbActions.at(0) != tbGroupActions2.at(0));
+	QVERIFY( removeVideosAction	!= 0 &&	!removeVideosAction->isCheckable() &&
+			tbActions.at(1) != tbGroupActions2.at(1));
+	QVERIFY( sortVideosAction != 0 && !sortVideosAction->isCheckable() &&
+			tbActions.at(2) != tbGroupActions2.at(2));
+
+	// Open	collections.
+	action = dynamic_cast<HbAction*>(tbGroupActions.at(1));
+	QVERIFY(action);
+	action->setChecked(false);
+	action->trigger();
+
+	// Verify.
+	QVERIFY(mTestView->mToolbarViewsActionGroup);
+	tbGroupActions = mTestView->mToolbarViewsActionGroup->actions();
+	QVERIFY(mTestView->mToolbarActions.count() == 6);
+	QVERIFY(tbGroupActions.count() == 3);
+	QVERIFY(tbGroupActions2.count() == 3);
+	QVERIFY( tbGroupActions.at(1)->isChecked() ); // 2nd is	checked.
+	// visible menu items remains constant after init until
+	// aboutToShowMainMenuSlot is called
+	QVERIFY(visibleMenuActions() ==	9);
+	// Verify checkable	and	visible	toolbar	actions.
+	allVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	collectionsAction =	mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	servicesAction = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	addVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAddVideos];
+	removeVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos];
+	sortVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionSortVideos];
+	QVERIFY( allVideosAction !=	0 && allVideosAction->isCheckable()	&& allVideosAction->isVisible()	&&
+			tbActions.at(0) == tbGroupActions.at(0));
+	QVERIFY( collectionsAction != 0	&& collectionsAction->isCheckable()	&& collectionsAction->isVisible() &&
+			tbActions.at(1) == tbGroupActions.at(1));
+	QVERIFY( servicesAction	!= 0 &&	servicesAction->isCheckable() && servicesAction->isVisible() &&
+			tbActions.at(2) == tbGroupActions.at(2));
+	QVERIFY( addVideosAction !=	0 && !addVideosAction->isCheckable() &&
+			tbActions.at(0) != tbGroupActions2.at(0));
+	QVERIFY( removeVideosAction	!= 0 &&	!removeVideosAction->isCheckable() &&
+			tbActions.at(1) != tbGroupActions2.at(1));
+	QVERIFY( sortVideosAction != 0 && !sortVideosAction->isCheckable() &&
+			tbActions.at(2) != tbGroupActions2.at(2));
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test create toolbar
+// ---------------------------------------------------------------------------
+//
+void TestListView::testCreateAction()
+{
+	init();
+
+	QVERIFY(mTestView->mToolbarViewsActionGroup != 0);
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	actions.append(mTestView->mToolbarCollectionActionGroup->actions());
+	QVERIFY(actions.count()	== 6);
+
+	QCOMPARE( mTestView->toolBar()->actions().count(), 3 );
+
+	HbAction* allVideos	= static_cast<HbAction*>(actions.at(0));
+	QVERIFY( allVideos->isCheckable() );
+    QCOMPARE( allVideos->toolTip(), tr("All videos") );
+	QCOMPARE( allVideos->icon().iconName(),	QString(":/images/qtg_mono_video_all.svg")	);
+
+	HbAction* collections =	static_cast<HbAction*>(actions.at(1));
+	QVERIFY( collections->isCheckable()	);
+	QCOMPARE( collections->toolTip(), tr("Collections")	);
+	QCOMPARE( collections->icon().iconName(), QString(":/images/qtg_mono_video_collection.svg") );
+
+	HbAction* services = static_cast<HbAction*>(actions.at(2));
+	QVERIFY( services->isCheckable() );
+	QCOMPARE( services->toolTip(), tr("Services") );
+	QCOMPARE( services->icon().iconName(), QString(":/images/qtg_mono_video_services.svg") );
+
+	HbAction* addVideos	= static_cast<HbAction*>(actions.at(3));
+	QVERIFY( !addVideos->isCheckable() );
+    QCOMPARE( addVideos->toolTip(), tr("Add videos") );
+	QCOMPARE( addVideos->icon().iconName(),	QString(":/images/mono_video_addvideos.svg") );
+
+	HbAction* removeVideos = static_cast<HbAction*>(actions.at(4));
+	QVERIFY( !removeVideos->isCheckable() );
+	QCOMPARE( removeVideos->toolTip(), tr("Remove videos") );
+	QCOMPARE( removeVideos->icon().iconName(), QString(":/images/mono_video_removevideos.svg") );
+
+	HbAction* sortVideos = static_cast<HbAction*>(actions.at(5));
+	QVERIFY( !sortVideos->isCheckable()	);
+	QCOMPARE( sortVideos->toolTip(), tr("Sort by") );
+	QCOMPARE( sortVideos->icon().iconName(), QString(":/images/mono_video_sortvideos.svg") );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test activate view
+// ---------------------------------------------------------------------------
+//
+void TestListView::testActivateView()
+{
+	init();
+
+	VideoListWidget* list = mTestView->mVideoListWidget;
+	mTestView->mVideoListWidget = 0;
+
+	QCOMPARE( mTestView->activateView(), -1	);
+	QVERIFY( mTestView->mVideoListWidget->mActive == false );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 0 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	
+	mTestView->mVideoListWidget = list;
+
+	VideoListWidget::mActivateReturnValue =	-1;
+
+	QCOMPARE( mTestView->activateView(), -1	);
+	QVERIFY( mTestView->mVideoListWidget->mActive == false );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+
+	VideoListWidget::mActivateReturnValue =	0;
+	
+	QCOMPARE( mTestView->activateView(), 0 );
+	QVERIFY( mTestView->mVideoListWidget->mActive );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 2 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() );
+
+	QCOMPARE( mTestView->activateView(), 0 );
+	QVERIFY( mTestView->mVideoListWidget->mActive );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 3 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test deactivate view
+// ---------------------------------------------------------------------------
+//
+void TestListView::testDeactivateView()
+{
+	init();
+
+    VideoListWidget* list = mTestView->mVideoListWidget;
+    mTestView->mVideoListWidget = 0;
+
+	mTestView->deactivateView();
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+
+    mTestView->mVideoListWidget = list;
+
+	mTestView->deactivateView();
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 1 );
+
+	VideoListWidget::mActivateReturnValue =	0;
+	mTestView->activateView();
+	mTestView->deactivateView();
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 2 );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testBack
+// ---------------------------------------------------------------------------
+//
+void TestListView::testBack()
+{
+	init();
+
+	mTestView->back();
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test open all videos slot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenAllVideosViewSlot()
+{
+	init();
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	HbAction* action = static_cast<HbAction*>(actions.at(0));
+	
+	mTestView->mVideoListWidget->mType = VideoListWidget::EAllVideos;
+	mTestView->mVideoListWidget->mCurrentLevel = VideoListWidget::ELevelCategory;
+	mTestView->mSubLabel->setHeading("invalid");
+	mTestView->mModel->mLevel = -1;
+	
+	// action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+	QCOMPARE( mTestView->mVideoListWidget->mCurrentLevel, VideoListWidget::ELevelVideos );
+	QVERIFY( mTestView->mVideoListWidget->mActive == true );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+	QCOMPARE( mTestView->mSubLabel->heading(), tr("%1 videos").arg(mTestView->mModel->rowCount()) );
+	QCOMPARE( mTestView->mModel->mLevel, (int)VideoListWidget::ELevelVideos );
+
+	mTestView->activateView();
+	
+	mTestView->mVideoListWidget->mActivateCount = 0;
+    mTestView->mVideoListWidget->mType = VideoListWidget::EAllVideos;
+    mTestView->mVideoListWidget->mCurrentLevel = VideoListWidget::ELevelCategory;
+    mTestView->mSubLabel->setHeading("invalid");
+    mTestView->mModel->mLevel = -1;
+    
+    // action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mVideoListWidget->mCurrentLevel, VideoListWidget::ELevelVideos );
+    QVERIFY( mTestView->mVideoListWidget->mActive == true );
+	QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+	QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+    QCOMPARE( mTestView->mSubLabel->heading(), tr("%1 videos").arg(mTestView->mModel->rowCount()) );
+    QCOMPARE( mTestView->mModel->mLevel, (int)VideoListWidget::ELevelVideos );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test open collections view	slot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenCollectionViewSlot()
+{
+	init();
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	HbAction* action = static_cast<HbAction*>(actions.at(1));
+
+    mTestView->mVideoListWidget->mType = VideoListWidget::ECollections;
+    mTestView->mVideoListWidget->mCurrentLevel = VideoListWidget::ELevelVideos;
+    mTestView->mSubLabel->setHeading("invalid");
+    mTestView->mModel->mLevel = -1;
+
+	// action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mVideoListWidget->mCurrentLevel, VideoListWidget::ELevelCategory );
+    QVERIFY( mTestView->mVideoListWidget->mActive == true );
+    QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+    QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+    QCOMPARE( mTestView->mSubLabel->heading(), tr("%1 collections").arg(mTestView->mModel->rowCount()) );
+    QCOMPARE( mTestView->mModel->mLevel, (int)VideoListWidget::ELevelCategory );
+
+	mTestView->activateView();
+
+    mTestView->mVideoListWidget->mActivateCount = 0;
+    mTestView->mVideoListWidget->mType = VideoListWidget::ECollections;
+    mTestView->mVideoListWidget->mCurrentLevel = VideoListWidget::ELevelVideos;
+    mTestView->mSubLabel->setHeading("invalid");
+    mTestView->mModel->mLevel = -1;
+    
+    // action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mVideoListWidget->mCurrentLevel, VideoListWidget::ELevelCategory );
+    QVERIFY( mTestView->mVideoListWidget->mActive == true );
+    QCOMPARE( mTestView->mVideoListWidget->mActivateCount, 1 );
+    QCOMPARE( mTestView->mVideoListWidget->mDeactivateCount, 0 );
+    QCOMPARE( mTestView->mSubLabel->heading(), tr("%1 collections").arg(mTestView->mModel->rowCount()) );
+    QCOMPARE( mTestView->mModel->mLevel, (int)VideoListWidget::ELevelCategory );
+
+	cleanup();
+}
+// ---------------------------------------------------------------------------
+// Slot: test open services	view slot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenServicesViewSlot()
+{
+	init();
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	HbAction* action = static_cast<HbAction*>(actions.at(2));
+
+	// action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+	
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testStartSorting
+// ---------------------------------------------------------------------------
+//
+void TestListView::testStartSortingSlot()
+{
+	HbAction *action(0);
+
+	// Active action is	not	sort by.
+	init(true);
+	action = mTestView->mMenuActions[VideoListView::EActionDelete];
+	QVERIFY(action != 0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(action);
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+	QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 0);
+	QCOMPARE(VideoSortFilterProxyModel::mSortRole, -1);
+	cleanup();
+
+	// Sort	by action has no menu.
+	init(true);
+
+	// Change sort by action to	delete action which	has	no menu.
+	HbAction *sortByAction = mTestView->mMenuActions[VideoListView::EActionSortBy];
+	HbAction *deleteAction = mTestView->mMenuActions[VideoListView::EActionDelete];
+	mTestView->mMenuActions[VideoListView::EActionSortBy] =	deleteAction;
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(deleteAction);
+
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 0);
+    QCOMPARE(VideoSortFilterProxyModel::mSortRole, -1);
+
+	// Change the action back.
+	mTestView->mMenuActions[VideoListView::EActionSortBy] =	sortByAction;
+
+	cleanup();
+
+	// View	is not initialized.
+	init(false);
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 0);
+    QCOMPARE(VideoSortFilterProxyModel::mSortRole, -1);
+	cleanup();
+
+	// Good	case.
+	init();
+	action = mTestView->mMenuActions[VideoListView::EActionSortBy];
+	QVERIFY(action != 0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(action);
+	HbAction* sortAction = mTestView->mMenuActions[VideoListView::EActionSortByName];
+	QVERIFY(sortAction != 0);
+	action->menu()->setActiveAction(sortAction);
+
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+	QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 1);
+	QCOMPARE(VideoSortFilterProxyModel::mSortRole, (int)Qt::DisplayRole);
+	QCOMPARE(VideoSortFilterProxyModel::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModel::mSortAsync);
+
+    // emit test signal again, with same parameters. Sorting should be switched to
+    // descending order.
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 2);
+    QCOMPARE(VideoSortFilterProxyModel::mSortRole, (int)Qt::DisplayRole);
+    QCOMPARE(VideoSortFilterProxyModel::mSortOrder, Qt::DescendingOrder);
+    QVERIFY(VideoSortFilterProxyModel::mSortAsync);
+
+    // on third emit, sorting should be switched back to ascending
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 3);
+    QCOMPARE(VideoSortFilterProxyModel::mSortRole, (int)Qt::DisplayRole);
+    QCOMPARE(VideoSortFilterProxyModel::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModel::mSortAsync);
+
+    // test that after changing the sort role, the order is also switched to ascending.
+    VideoSortFilterProxyModel::mSortOrder = Qt::DescendingOrder;
+    sortAction = mTestView->mMenuActions[VideoListView::EActionSortByDate];
+    QVERIFY(sortAction != 0);
+    action->menu()->setActiveAction(sortAction);
+
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModel::mDoSortingCallCount, 4);
+    QCOMPARE(VideoSortFilterProxyModel::mSortRole, (int)VideoCollectionCommon::KeyDateTime);
+    QCOMPARE(VideoSortFilterProxyModel::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModel::mSortAsync);
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test orientation related slots
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOrientationSlots()
+{
+	init();
+
+    HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
+	mainWnd->addView(mTestView);
+	mainWnd->setOrientation(Qt::Horizontal);
+	mainWnd->setOrientation(Qt::Vertical);
+	
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testModelReadySlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testModelReadySlot()
+{
+    init();
+    mTestView->mModelReady = false;
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(modelReadySlot()) );
+    emit testSignal();
+    QVERIFY(mTestView->mModelReady);
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testDeleteItemsSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testDeleteItemsSlot()
+{
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+    ////////////
+    // no model
+    ////////////
+    VideoSortFilterProxyModel *tmpModel = mTestView->mModel;
+    mTestView->mModel = 0;
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 0);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 0);
+    mTestView->mModel = tmpModel;
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // no selection dialog
+    ////////////
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 0);
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // dialog loading fails
+    ////////////
+    VideoCollectionUiLoader::mFailDialogLoad = true;
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 0);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 0);
+    VideoCollectionUiLoader::mFailDialogLoad = false;
+    //////////
+    // document loader deletes all objects in case of error, so we cannot cleanup all
+    if(mWrapper)
+    {
+        mWrapper->decreaseReferenceCount();
+        QCOMPARE(mWrapper->mReferenceCount, 0);
+    }
+    disconnect();
+    ///////////////
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // selection dialog exists
+    ////////////
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 0);
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 2);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 0);
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // exec returns primary key (just for the coverity's sake)
+    ////////////
+    VideoListSelectionDialog:: mExecReturnPrimary = true;
+    VideoListSelectionDialog::mSelectionCount = 5;
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialog::mMultiSelectionItemSelectionCount == 5);
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testAboutToShowMainMenuSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testAboutToShowMainMenuSlot()
+{
+	// All ok.
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	QVERIFY(visibleMenuActions() ==	6);
+	cleanup();
+
+	// View	is not initialized.
+	init(false);
+	mWrapper->getDataModel()->setRowCount(1);
+	connect( this, SIGNAL(testSignal(int)),	mTestView, SLOT(aboutToShowMainMenuSlot()) );
+	emit testSignal(0);
+	cleanup();
+
+	HbAction *action(0);
+
+	// Collections is triggered	from toolbar.
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	action = mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	QVERIFY(action != 0);
+	action->setChecked(false);
+	action->trigger();
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	int visible = visibleMenuActions();
+	QCOMPARE(visible,	5);
+	cleanup();
+
+	// All videos is triggered from	toolbar.
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	action = mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	QVERIFY(action != 0);
+	action->setChecked(false);
+	action->trigger();
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	6);
+	cleanup();
+
+	// Services	is triggered from toolbar.
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	action = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	QVERIFY(action != 0);
+	action->setChecked(false);
+	action->trigger();
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	0);
+	cleanup();
+
+	// Add videos action is	visible.
+	init();
+	mTestView->toolBar()->clearActions();
+	mTestView->toolBar()->addActions( mTestView->mToolbarCollectionActionGroup->actions() );
+
+	mWrapper->getDataModel()->setRowCount(1);
+	QVERIFY(action != 0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	1);
+	cleanup();
+
+	// Menu	action is null
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	action = mTestView->mMenuActions.take(VideoListView::EActionSortBy);
+	delete action;
+	action = NULL;
+	mTestView->mMenuActions[VideoListView::EActionSortBy] =	action;
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	0);
+	cleanup();
+
+	// No menu actions.
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	QMap<VideoListView::TViewActionIds,	HbAction*> backupActions =
+		QMap<VideoListView::TViewActionIds,	HbAction*>(mTestView->mMenuActions);
+	mTestView->mMenuActions.clear();
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	mTestView->mMenuActions.unite(backupActions);
+	cleanup();
+
+	// Model has no	items.
+	init();
+	mWrapper->getDataModel()->setRowCount(0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	0);
+	cleanup();
+
+	// Toolbar action group	is null
+	init();
+	mWrapper->getDataModel()->setRowCount(1);
+	QActionGroup* actionGroup =	mTestView->mToolbarViewsActionGroup;
+	mTestView->mToolbarViewsActionGroup = NULL;
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	mTestView->mToolbarViewsActionGroup = actionGroup;
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testOpenSortByMenuSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenSortByMenuSlot()
+{
+    DummyHbMenu *dummyMenu = new DummyHbMenu;
+    HbMenu *tmpMenu;
+
+    // All ok.
+    init();
+    tmpMenu =  mTestView->mSortMenu;
+    mTestView->mSortMenu = dummyMenu;
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    mWrapper->getDataModel()->setRowCount(1);
+    mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->hide();
+    emit testSignal(0);
+    // sorting menu should be visible
+    QVERIFY(visibleMenuActions() == 4);
+    mTestView->mSortMenu = tmpMenu;
+    cleanup();
+
+    // View is not initialized.
+    init(false);
+    tmpMenu =  mTestView->mSortMenu;
+    mTestView->mSortMenu = dummyMenu;
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    mWrapper->getDataModel()->setRowCount(1);
+    mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->hide();
+    emit testSignal(0);
+    QCOMPARE(visibleMenuActions(),   0);
+    mTestView->mSortMenu = tmpMenu;
+    cleanup();
+
+    // no items
+    init();
+    tmpMenu =  mTestView->mSortMenu;
+    mTestView->mSortMenu = dummyMenu;
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    mWrapper->getDataModel()->setRowCount(0);
+    mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->hide();
+    emit testSignal(0);
+    QCOMPARE(visibleMenuActions(),   0);
+    mTestView->mSortMenu = tmpMenu;
+    cleanup();
+
+    delete dummyMenu;
+
+}
+
+// ---------------------------------------------------------------------------
+// testHandleErrorSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testHandleStatusSlot()
+{
+	QVariant *variant =	new	QVariant();
+
+	// Unknown error code.
+	init();
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(0, *variant);
+	QVERIFY(VideoCollectionViewUtils::mLastError ==	0);
+	cleanup();
+
+	// Multiple	deletion error.
+	init();
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(VideoCollectionCommon::statusMultipleDeleteFail, *variant);
+	QVERIFY(VideoCollectionViewUtils::mLastError ==	VideoCollectionCommon::statusMultipleDeleteFail);
+	cleanup();
+
+	// Deletion	error.
+	init();
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(VideoCollectionCommon::statusSingleDeleteFail, *variant);
+	QVERIFY(VideoCollectionViewUtils::mLastError ==	VideoCollectionCommon::statusSingleDeleteFail);
+	cleanup();
+
+	// status multidelete succeed
+    init();
+    connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+    emit testStatusSignal(VideoCollectionCommon::statusMultipleDeleteSucceed, *variant);
+    QVERIFY(VideoCollectionViewUtils::mLastError == VideoCollectionCommon::statusMultipleDeleteSucceed);
+    cleanup();
+
+	// No model.
+	init(false);
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(1,	*variant);
+	QVERIFY(VideoCollectionViewUtils::mLastError ==	1);
+	cleanup();
+
+	delete variant;
+}
+
+// ---------------------------------------------------------------------------
+// testCollectionOpenedSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testCollectionOpenedSlot()
+{
+	HbAction* removeVideosAction;
+	HbAction* allVideosAction;
+	HbAction* collectionsAction;
+	HbAction* servicesAction;
+	HbAction* addVideosAction;
+	HbAction* sortVideosAction;
+
+	QString testString;
+
+	// View	is not initialized.
+	init(false);
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)),	mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	emit testCollectionOpenedSignal(false, testString);
+	cleanup();
+
+	// No toolbar actions.
+	init(true);
+	// Clear actions.
+	QMap<VideoListView::TViewActionIds,	HbAction*> backupActions =
+		QMap<VideoListView::TViewActionIds,	HbAction*>(mTestView->mToolbarActions);
+	mTestView->mToolbarActions.clear();
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)),	mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	emit testCollectionOpenedSignal(true, testString);
+	mTestView->mToolbarActions.unite(backupActions);
+	cleanup();
+
+	// One of the toolbar actions is null.
+	init();
+	removeVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos];
+	mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos] = NULL;
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)),	mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	emit testCollectionOpenedSignal(true, testString);
+	// Verify checkable	and	visible	toolbar	actions.
+	mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos] = removeVideosAction;
+	allVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	collectionsAction =	mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	servicesAction = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	addVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAddVideos];
+	sortVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionSortVideos];
+	// Remove videos is	not	checked	because	it was used	as null	action.
+	QCOMPARE( mTestView->mCollectionName, testString );
+	QCOMPARE( mTestView->toolBar()->actions().count(), 3 );
+	QVERIFY( allVideosAction !=	0 && allVideosAction->isCheckable());
+	QVERIFY( collectionsAction != 0	&& collectionsAction->isCheckable());
+	QVERIFY( servicesAction	!= 0 &&	servicesAction->isCheckable());
+	QVERIFY( addVideosAction !=	0 && !addVideosAction->isCheckable() );
+	QVERIFY( sortVideosAction != 0 && !sortVideosAction->isCheckable() );
+	cleanup();
+
+
+	testString = "Test text string";
+
+	// Collection opened.
+	init();
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)),	mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	emit testCollectionOpenedSignal(true, testString);
+	// Verify checkable	and	visible	toolbar	actions.
+	allVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	collectionsAction =	mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	servicesAction = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	addVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAddVideos];
+	removeVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos];
+	sortVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionSortVideos];
+	QCOMPARE(mTestView->mCollectionName, testString);
+	QCOMPARE( mTestView->toolBar()->actions().count(), 3 );
+	QVERIFY( allVideosAction !=	0 && allVideosAction->isCheckable());
+	QVERIFY( collectionsAction != 0	&& collectionsAction->isCheckable());
+	QVERIFY( servicesAction	!= 0 &&	servicesAction->isCheckable());
+	QVERIFY( addVideosAction !=	0 && !addVideosAction->isCheckable() );
+	QVERIFY( removeVideosAction	!= 0 &&	!removeVideosAction->isCheckable() );
+	QVERIFY( sortVideosAction != 0 && !sortVideosAction->isCheckable() );
+	cleanup();
+
+	testString = "Test text string 2";
+
+	// Collection not opened.
+	init();
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)),	mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	emit testCollectionOpenedSignal(false, testString);
+	// Verify checkable	and	visible	toolbar	actions.
+	allVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAllVideos];
+	collectionsAction =	mTestView->mToolbarActions[VideoListView::ETBActionCollections];
+	servicesAction = mTestView->mToolbarActions[VideoListView::ETBActionServices];
+	addVideosAction	= mTestView->mToolbarActions[VideoListView::ETBActionAddVideos];
+	removeVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionRemoveVideos];
+	sortVideosAction = mTestView->mToolbarActions[VideoListView::ETBActionSortVideos];
+	QCOMPARE(mTestView->mCollectionName, testString);
+	QCOMPARE( mTestView->toolBar()->actions().count(), 3 );
+	QVERIFY( allVideosAction !=	0 && allVideosAction->isCheckable());
+	QVERIFY( collectionsAction != 0	&& collectionsAction->isCheckable());
+	QVERIFY( servicesAction	!= 0 &&	servicesAction->isCheckable());
+	QVERIFY( addVideosAction !=	0 && !addVideosAction->isCheckable() );
+	QVERIFY( removeVideosAction	!= 0 &&	!removeVideosAction->isCheckable() );
+	QVERIFY( sortVideosAction != 0 && !sortVideosAction->isCheckable() );
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testUpdateSubLabel
+// ---------------------------------------------------------------------------
+//
+void TestListView::testUpdateSubLabel()
+{
+	init(true);
+	connect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)), mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+	mWrapper->getDataModel()->setRowCount(1);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EAllVideos;
+	
+	emit testLayoutChangedSignal();
+
+	HbGroupBox* label = mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
+
+	QString returnString = label->heading();
+	QString expectedString = "1 videos";
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EUnknown;
+
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+	expectedString = "1 videos";
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::ECollections;
+
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+	expectedString = "1 collections";
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EUnknown;
+
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+	expectedString = "1 collections";
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EDefaultColItems;
+
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+	expectedString = " (1)";
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EUnknown;
+	expectedString = " (1)";
+
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+
+	QCOMPARE(returnString, expectedString);
+
+	mTestView->mVideoListWidget->mType = VideoListWidget::EUserColItems;
+
+	emit testCollectionOpenedSignal(true, QString("NAME"));
+	emit testLayoutChangedSignal();
+
+	returnString = label->heading();
+	expectedString = "NAME (1)";
+
+	QCOMPARE(returnString, expectedString);
+	
+    mTestView->mVideoListWidget->mType = VideoListWidget::EAllVideos;
+    VideoSortFilterProxyModel* model = mTestView->mModel;
+    mTestView->mModel = 0;
+    expectedString = "testtesttesttest";
+    label->setHeading(expectedString);
+    
+    // should not crash.
+    emit testLayoutChangedSignal();
+    
+    // make sure that the heading has not changed.
+    QCOMPARE(label->heading(), expectedString);
+}
+
+// ---------------------------------------------------------------------------
+// testShowHint
+// ---------------------------------------------------------------------------
+//
+void TestListView::testShowHint()
+{
+    init(true);
+    connect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
+    mWrapper->getDataModel()->setRowCount(1);
+    
+    mTestView->mModelReady = false;
+    // tests that the showhint is not called, and currently only way of doing that
+    // is to set hint widget visible and check that it is not hidden.
+    mTestView->mVideoHintWidget->setVisible(true);
+    
+    emit testLayoutChangedSignal();
+
+    QVERIFY(mTestView->mVideoHintWidget->isVisible());
+    
+    VideoSortFilterProxyModel* model = mTestView->mModel;
+    mTestView->mModel = 0;
+    mTestView->mModelReady = true;
+    
+    emit testLayoutChangedSignal();
+
+    QVERIFY(mTestView->mVideoHintWidget->isVisible() == false);
+    
+    mTestView->mModel = model;
+    mWrapper->getDataModel()->setRowCount(0);
+    mTestView->mVideoHintWidget->setVisible(true);
+    VideoHintWidget* hint = mTestView->mVideoHintWidget;
+    mTestView->mVideoHintWidget = 0;
+    
+    // should not crash. No other verification possible.
+    emit testLayoutChangedSignal();
+    
+    mTestView->mVideoHintWidget = hint;
+    mTestView->mVideoHintWidget->setVisible(false);
+    
+    emit testLayoutChangedSignal();
+    
+    QVERIFY(mTestView->mVideoHintWidget->isVisible());
+    
+    mWrapper->getDataModel()->setRowCount(1);
+    mTestView->mVideoHintWidget->setVisible(true);
+    
+    emit testLayoutChangedSignal();
+
+    QVERIFY(mTestView->mVideoHintWidget->isVisible() == false);
+}
+
+// End of file