videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp
changeset 15 cf5481c2bc0b
child 17 69946d1824c4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/tsrc/testlistview/src/testlistview.cpp	Fri Apr 16 14:59:52 2010 +0300
@@ -0,0 +1,1274 @@
+/**
+* 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 <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 <hbdocumentloader.h>
+#include <qhash.h>
+#include <qmap.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <mpxitemid.h>
+#include <vcxmyvideosdefs.h>
+
+#include "videocollectionwrapper.h"
+#include "testlistview.h"
+#include "videocollectionviewutils.h"
+#include "videolistselectiondialog.h"
+#include "videosortfilterproxymodel.h"
+#include "videocollectionwrapper.h"
+#include "videohintwidget.h"
+#include "videolistwidgetdata.h"
+#include "videocollectionwrapperdata.h"
+#include "videocollectionviewutilsdata.h"
+#include "videolistselectiondialogdata.h"
+#include "videosortfilterproxymodeldata.h"
+#include "videocollectionuiloaderdata.h"
+#include "videolistdatamodeldata.h"
+
+#define	private	public
+#include "videolistwidget.h"
+#include "videocollectionuiloader.h"
+#include "videolistview.h"
+#undef private
+
+// ---------------------------------------------------------------------------
+// main
+// ---------------------------------------------------------------------------
+//
+int	main(int argc, char	*argv[])
+{
+	HbApplication app(argc,	argv);
+	HbMainWindow window;
+
+	TestListView 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\\testlistview.txt";
+        res = QTest::qExec(&tv, 3, pass);
+    }
+
+	return res;
+}
+
+// ---------------------------------------------------------------------------
+// init
+// ---------------------------------------------------------------------------
+//
+void TestListView::init(bool initTestView)
+{
+	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);
+    if(initTestView)
+    {
+        QVERIFY(mTestView->initializeView() == 0);
+    }
+    
+    mListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+    QVERIFY(mListWidget);
+
+	mWrapper = &VideoCollectionWrapper::instance();
+	QVERIFY(mWrapper);
+}
+
+// ---------------------------------------------------------------------------
+// cleanup
+// ---------------------------------------------------------------------------
+//
+void TestListView::cleanup()
+{
+	delete mTestView;
+	mTestView =	0;
+	
+	mWrapper = 0;
+
+	disconnect();
+
+    VideoListWidgetData::reset();
+    VideoCollectionWrapperData::reset();
+    VideoCollectionViewUtilsData::reset();
+    VideoListSelectionDialogData::reset();
+    VideoSortFilterProxyModelData::reset();
+}
+
+// ---------------------------------------------------------------------------
+// visibleMenuActions
+// ---------------------------------------------------------------------------
+//
+int	TestListView::visibleMenuActions()
+{
+	int	visibleActions(0);
+	VideoCollectionUiLoader::ActionIds key;
+	HbAction *action(0);
+	foreach(key,mUiLoader->mMenuActions.keys())
+	{
+		action = dynamic_cast<HbAction*>(mUiLoader->mMenuActions[key]);
+		if(action && action->isVisible())
+			visibleActions++;
+	}
+	return visibleActions;
+}
+
+// ---------------------------------------------------------------------------
+// setRowCount
+// ---------------------------------------------------------------------------
+//
+void TestListView::setRowCount(int count)
+{
+    if (mTestView)
+    {
+        if (!mTestView->mCurrentList)
+        {
+            mTestView->activateView();
+        }
+        VideoSortFilterProxyModel *model = mTestView->mCurrentList->mModel;
+        if (model)
+        {
+            VideoListDataModel *sourceModel =
+                qobject_cast<VideoListDataModel*>(
+                    model->sourceModel());
+            if (sourceModel)
+            {
+                VideoListDataModelData::setRowCount(*sourceModel, count);
+            }
+        }
+    }
+}
+
+// ---------------------------------------------------------------------------
+// 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()
+{
+    VideoListWidget *videoListWidget = 0;
+    VideoHintWidget *hintWidget = 0;
+    
+    init(false);
+	// Test	videolist widget creation failure.
+	VideoListWidgetData::mInitializeReturnValue	= -1;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup == 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == 0 );
+	QVERIFY( mTestView->mVideoServices == 0 );
+	QVERIFY( mTestView->mIsService == false );
+
+	cleanup();
+
+	// Test	widget creation	succeed.
+	init(false);
+    VideoCollectionViewUtilsData::mSortRole = Qt::DisplayRole;
+    VideoCollectionViewUtilsData::mSortOrder = Qt::DescendingOrder;
+	QVERIFY( mTestView->initializeView() ==	0 );
+	// Verify
+	QCOMPARE( VideoListWidgetData::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.
+	QVERIFY( mTestView->mToolbarViewsActionGroup->actions().first()->isChecked()	);
+	QCOMPARE( VideoSortFilterProxyModelData::mSortRole, (int)Qt::DisplayRole );
+	QCOMPARE( VideoSortFilterProxyModelData::mSortOrder, Qt::DescendingOrder );
+	QVERIFY( VideoSortFilterProxyModelData::mSortAsync == false );
+	QVERIFY( mTestView->mVideoServices == 0 );
+	QVERIFY( mTestView->mIsService == false );
+	cleanup();
+	cleanup();
+
+	// Test	command	signal.
+	init(true);
+	videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+    QVERIFY(videoListWidget);
+	connect( this, SIGNAL(testSignal(int)),	videoListWidget, 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);
+	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->mToolbarViewsActionGroup == toolbar );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == toolbar2 );
+
+	// Test	view deletion.
+	cleanup();
+	QVERIFY( toolbar ==	0 );
+	QVERIFY( toolbar2 == 0 );
+
+	// Test	get	model failure.
+	init(false);
+	QVERIFY(mTestView);
+	VideoCollectionWrapperData::mGetModelFails	= true;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup	== 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup	== 0 );
+	cleanup();
+
+	// Test	model open failure.
+	init(false);
+	QVERIFY(mTestView);
+	VideoSortFilterProxyModelData::mOpenFails =	true;
+	QVERIFY( mTestView->initializeView() < 0 );
+	QVERIFY( mTestView->mToolbarViewsActionGroup == 0 );
+	QVERIFY( mTestView->mToolbarCollectionActionGroup == 0 );
+	cleanup();
+
+	// Test sorting value load 'failure'.
+	init(false);
+    VideoCollectionViewUtilsData::mSortRole = Qt::DisplayRole;
+    VideoCollectionViewUtilsData::mSortOrder = Qt::DescendingOrder;
+    VideoCollectionViewUtilsData::mLoadSortingValuesFails = true;
+    QVERIFY( mTestView->initializeView() == 0 );
+    QCOMPARE( VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime );
+    QCOMPARE( VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder );
+    QVERIFY( VideoSortFilterProxyModelData::mSortAsync == false );
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test create menu
+// ---------------------------------------------------------------------------
+//
+void TestListView::testCreateListMenu()
+{
+	init(false);
+	VideoListWidgetData::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);
+	VideoListWidgetData::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( mUiLoader->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->icon().iconName(),	QString(":/images/qtg_mono_video_all.svg")	);
+
+	HbAction* collections =	static_cast<HbAction*>(actions.at(1));
+	QVERIFY( collections->isCheckable()	);
+	QCOMPARE( collections->icon().iconName(), QString(":/images/qtg_mono_video_collection.svg") );
+
+	HbAction* services = static_cast<HbAction*>(actions.at(2));
+	QVERIFY( services->isCheckable() );
+	QCOMPARE( services->icon().iconName(), QString(":/images/qtg_mono_video_services.svg") );
+
+	HbAction* addVideos	= static_cast<HbAction*>(actions.at(3));
+	QVERIFY( !addVideos->isCheckable() );
+	QCOMPARE( addVideos->icon().iconName(),	QString(":/images/mono_video_addvideos.svg") );
+
+	HbAction* removeVideos = static_cast<HbAction*>(actions.at(4));
+	QVERIFY( !removeVideos->isCheckable() );
+	QCOMPARE( removeVideos->icon().iconName(), QString(":/images/mono_video_removevideos.svg") );
+
+	HbAction* sortVideos = static_cast<HbAction*>(actions.at(5));
+	QVERIFY( !sortVideos->isCheckable()	);
+	QCOMPARE( sortVideos->icon().iconName(), QString(":/images/mono_video_sortvideos.svg") );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test activate view
+// ---------------------------------------------------------------------------
+//
+void TestListView::testActivateView()
+{
+    VideoListWidget* videoListWidget = 0;
+    
+	init();
+
+	videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+	QVERIFY(videoListWidget);
+	mTestView->mCurrentList = 0;
+
+	QCOMPARE( mTestView->activateView(), -1	);
+    QVERIFY( VideoListWidgetData::mActive == false );
+    QCOMPARE( mTestView->mCurrentList, videoListWidget );
+    QCOMPARE( VideoListWidgetData::mActivateCount, 0 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	
+	VideoListWidgetData::mActivateReturnValue =	-1;
+
+	QCOMPARE( mTestView->activateView(), -1	);
+	QVERIFY( VideoListWidgetData::mActive == false );
+	QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+
+	VideoListWidgetData::mActivateReturnValue =	0;
+	
+	QCOMPARE( mTestView->activateView(), 0 );
+	QVERIFY( VideoListWidgetData::mActive );
+	QCOMPARE( VideoListWidgetData::mActivateCount, 2 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() );
+
+	QCOMPARE( mTestView->activateView(), 0 );
+	QVERIFY( VideoListWidgetData::mActive );
+	QCOMPARE( VideoListWidgetData::mActivateCount, 3 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test deactivate view
+// ---------------------------------------------------------------------------
+//
+void TestListView::testDeactivateView()
+{
+    VideoListWidget* videoListWidget = 0;
+
+    init();
+
+    videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+    QVERIFY(videoListWidget);
+    mTestView->mCurrentList = 0;
+
+	mTestView->deactivateView();
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+
+	mTestView->deactivateView();
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isVisible() == false );
+	QVERIFY( mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->isEnabled() == false );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 1 );
+
+	VideoListWidgetData::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( VideoListWidgetData::mActivateCount, 1 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 2 );
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testBack
+// ---------------------------------------------------------------------------
+//
+void TestListView::testBack()
+{
+	init();
+
+	mTestView->back();
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test open all videos slot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenAllVideosViewSlot()
+{
+    VideoListWidget *videoListWidget = 0;
+    HbGroupBox *subLabel = 0;
+    
+	init();
+	
+    videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);
+    QVERIFY(videoListWidget);
+    subLabel = mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
+    QVERIFY(subLabel);
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	HbAction* action = static_cast<HbAction*>(actions.at(0));
+	
+	videoListWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
+	subLabel->setHeading("invalid");
+	
+	// action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+	QCOMPARE( mTestView->mCurrentList->mCurrentLevel, VideoCollectionCommon::ELevelVideos );
+    QVERIFY( VideoListWidgetData::mActive == true );
+    QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
+    QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+    QCOMPARE( subLabel->heading(), tr("txt_videos_subtitle_ln_videos" ));
+	QCOMPARE(mTestView->mCurrentList, videoListWidget);
+
+	mTestView->activateView();
+	
+	VideoListWidgetData::mActivateCount = 0;
+	mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
+    subLabel->setHeading("invalid");
+    
+    // action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mCurrentList->mCurrentLevel, VideoCollectionCommon::ELevelVideos );
+    QVERIFY( VideoListWidgetData::mActive == true );
+	QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
+	QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+    QCOMPARE( subLabel->heading(), tr("txt_videos_subtitle_ln_videos" ));
+    QCOMPARE(mTestView->mCurrentList, videoListWidget);
+
+	cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// Slot: test open collections view	slot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testOpenCollectionViewSlot()
+{
+    VideoListWidget *collectionWidget = 0;
+    HbGroupBox *subLabel = 0;
+
+    init();
+
+	QList<QAction*>	actions	= mTestView->mToolbarViewsActionGroup->actions();
+	HbAction* action = static_cast<HbAction*>(actions.at(1));
+
+	collectionWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONWIDGET);
+    QVERIFY(collectionWidget);
+    subLabel = mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
+    QVERIFY(subLabel);
+
+	mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+    subLabel->setHeading("invalid");
+
+	// action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mCurrentList->mCurrentLevel, VideoCollectionCommon::ELevelCategory );
+    QVERIFY( VideoListWidgetData::mActive == true );
+    QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
+    QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+    QCOMPARE( subLabel->heading(), tr("txt_videos_subtitle_l1_collections" ));
+    QCOMPARE(mTestView->mCurrentList, collectionWidget);
+
+	mTestView->activateView();
+
+    VideoListWidgetData::mActivateCount = 0;
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+    subLabel->setHeading("invalid");
+    
+    // action wont emit	if it's	already	checked.
+	action->setChecked(false);
+	action->trigger();
+    QCOMPARE( mTestView->mCurrentList->mCurrentLevel, VideoCollectionCommon::ELevelCategory );
+    QVERIFY( VideoListWidgetData::mActive == true );
+    QCOMPARE( VideoListWidgetData::mActivateCount, 1 );
+    QCOMPARE( VideoListWidgetData::mDeactivateCount, 0 );
+    QCOMPARE( subLabel->heading(), tr("txt_videos_subtitle_l1_collections" ));
+    QCOMPARE(mTestView->mCurrentList, collectionWidget);
+
+	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 = mUiLoader->mMenuActions[VideoCollectionUiLoader::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(VideoSortFilterProxyModelData::mDoSortingCallCount, 0);
+	QCOMPARE(VideoSortFilterProxyModelData::mSortRole, -1);
+	cleanup();
+
+	// Sort	by action has no menu.
+	init(true);
+
+	// Change sort by action to	delete action which	has	no menu.
+	HbAction *sortByAction = mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortBy];
+	HbAction *deleteAction = mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionDelete];
+	mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortBy] =	deleteAction;
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(deleteAction);
+
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 0);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, -1);
+
+	// Change the action back.
+	mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortBy] =	sortByAction;
+
+	cleanup();
+
+	// View	is not initialized.
+	init(false);
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 0);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, -1);
+	cleanup();
+
+	// Good	case.
+	init();
+	action = mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortBy];
+	QVERIFY(action != 0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(action);
+	HbAction* sortAction = mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortByName];
+	QVERIFY(sortAction != 0);
+	action->menu()->setActiveAction(sortAction);
+
+	connect(this, SIGNAL(testSignal(int)), mTestView, SLOT(startSorting()));
+	emit testSignal(0);
+	QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 1);
+	QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)Qt::DisplayRole);
+	QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
+
+    // emit test signal again, with same parameters. Sorting should be switched to
+    // descending order.
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 2);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)Qt::DisplayRole);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::DescendingOrder);
+    QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
+
+    // on third emit, sorting should be switched back to ascending
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 3);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)Qt::DisplayRole);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModelData::mSortAsync);
+
+    // test that after changing the sort role, the order is also switched to ascending.
+    VideoSortFilterProxyModelData::mSortOrder = Qt::DescendingOrder;
+    sortAction = mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortByDate];
+    QVERIFY(sortAction != 0);
+    action->menu()->setActiveAction(sortAction);
+
+    emit testSignal(0);
+    QCOMPARE(VideoSortFilterProxyModelData::mDoSortingCallCount, 4);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime);
+    QCOMPARE(VideoSortFilterProxyModelData::mSortOrder, Qt::AscendingOrder);
+    QVERIFY(VideoSortFilterProxyModelData::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
+    ////////////
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 0);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 0);
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // no selection dialog
+    ////////////
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 0);
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // dialog loading fails
+    ////////////
+    VideoCollectionUiLoaderData::mFailDialogLoad = true;
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 0);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 0);
+    VideoCollectionUiLoaderData::mFailDialogLoad = false;
+    //////////
+    // document loader deletes all objects in case of error, so we cannot cleanup all
+    disconnect();
+    ///////////////
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // selection dialog exists
+    ////////////
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 0);
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 2);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 0);
+
+    cleanup();
+    init();
+    connect( this, SIGNAL(testSignal()), mTestView, SLOT(deleteItemsSlot()) );
+
+    ////////////
+    // exec returns primary key (just for the coverity's sake)
+    ////////////
+    VideoListSelectionDialogData::mExecReturnPrimary = true;
+    VideoListSelectionDialogData::mSelectionCount = 5;
+    emit testSignal();
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionLaunchCount == 1);
+    QVERIFY(VideoListSelectionDialogData::mMultiSelectionItemSelectionCount == 5);
+
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// testAboutToShowMainMenuSlot
+// ---------------------------------------------------------------------------
+//
+void TestListView::testAboutToShowMainMenuSlot()
+{
+	// All ok.
+	init();
+	setRowCount(1);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	QVERIFY(visibleMenuActions() ==	6);
+	cleanup();
+
+	// View	is not initialized.
+	init(false);
+	connect( this, SIGNAL(testSignal(int)),	mTestView, SLOT(aboutToShowMainMenuSlot()) );
+	emit testSignal(0);
+	cleanup();
+
+	HbAction *action(0);
+
+	// Collections is triggered	from toolbar.
+	init();
+	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();
+    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();
+	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->activateView();
+	mTestView->toolBar()->clearActions();
+	mTestView->toolBar()->addActions( mTestView->mToolbarCollectionActionGroup->actions() );
+	setRowCount(1);
+	QVERIFY(action != 0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	1);
+	cleanup();
+
+	// Menu	action is null
+	init();
+    setRowCount(1);
+	action = mUiLoader->mMenuActions.take(VideoCollectionUiLoader::EActionSortBy);
+	delete action;
+	action = NULL;
+	mUiLoader->mMenuActions[VideoCollectionUiLoader::EActionSortBy] =	action;
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	0);
+	cleanup();
+
+	// No menu actions.
+	init();
+	setRowCount(1);
+	QMap<VideoCollectionUiLoader::ActionIds, HbAction*> backupActions =
+		QMap<VideoCollectionUiLoader::ActionIds, HbAction*>(mUiLoader->mMenuActions);
+	mUiLoader->mMenuActions.clear();
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	mUiLoader->mMenuActions.unite(backupActions);
+	cleanup();
+
+	// Model has no	items.
+	init();
+	setRowCount(0);
+	mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->show();
+	visible = visibleMenuActions();
+	QCOMPARE(visible,	0);
+	cleanup();
+
+	// Toolbar action group	is null
+	init();
+	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()
+{
+    HbMenu *optionsMenu = 0;
+    HbMenu *sortMenu = 0;
+
+    // All ok.
+    init();
+    sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    setRowCount(1);
+    mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->hide();
+    emit testSignal(0);
+    // sorting menu should be visible
+    QVERIFY(visibleMenuActions() == 4);
+    cleanup();
+
+    // View is not initialized.
+    init(false);
+    sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
+    optionsMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    setRowCount(1);
+    optionsMenu->hide();
+    emit testSignal(0);
+    QCOMPARE(visibleMenuActions(),   0);
+    cleanup();
+
+    // no items
+    init();
+    sortMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_SORT_MENU);
+    optionsMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+    connect( this, SIGNAL(testSignal(int)), mTestView, SLOT(openSortByMenuSlot()) );
+    setRowCount(0);
+    mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->hide();
+    emit testSignal(0);
+    QCOMPARE(visibleMenuActions(),   0);
+    cleanup();
+}
+
+// ---------------------------------------------------------------------------
+// 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(VideoCollectionViewUtilsData::mLastError ==	0);
+	cleanup();
+
+	// Multiple	deletion error.
+	init();
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(VideoCollectionCommon::statusMultipleDeleteFail, *variant);
+	QVERIFY(VideoCollectionViewUtilsData::mLastError ==	VideoCollectionCommon::statusMultipleDeleteFail);
+	cleanup();
+
+	// Deletion	error.
+	init();
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(VideoCollectionCommon::statusSingleDeleteFail, *variant);
+	QVERIFY(VideoCollectionViewUtilsData::mLastError ==	VideoCollectionCommon::statusSingleDeleteFail);
+	cleanup();
+
+	// status multidelete succeed
+    init();
+    connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+    emit testStatusSignal(VideoCollectionCommon::statusDeleteSucceed, *variant);
+    QVERIFY(VideoCollectionViewUtilsData::mLastError == VideoCollectionCommon::statusDeleteSucceed);
+    cleanup();
+
+	// No model.
+	init(false);
+	connect(this, SIGNAL(testStatusSignal(int, QVariant&)), mTestView, SLOT(handleAsyncStatusSlot(int, QVariant&)));
+	emit testStatusSignal(1,	*variant);
+	QVERIFY(VideoCollectionViewUtilsData::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);
+    setRowCount(1);
+	connect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
+	connect(this, SIGNAL(testCollectionOpenedSignal(bool, const QString&)), mTestView, SLOT(collectionOpenedSlot(bool, const QString&)));
+
+    VideoListWidget *videoListWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_VIDEOLISTWIDGET);   
+    VideoListWidget *collectionWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONWIDGET);   
+    VideoListWidget *collectionContentWidget = mUiLoader->findWidget<VideoListWidget>(DOCML_NAME_VC_COLLECTIONCONTENTWIDGET);   
+	
+	mTestView->mCurrentList = videoListWidget; 
+	mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+	emit testLayoutChangedSignal();
+	HbGroupBox* label = mUiLoader->findWidget<HbGroupBox>(DOCML_NAME_VC_HEADINGBANNER);
+	QString returnString = label->heading();
+	QString expectedString = "txt_videos_subtitle_ln_videos";
+	QCOMPARE(returnString, expectedString);
+
+    mTestView->mCurrentList = 0; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	expectedString = "txt_videos_subtitle_ln_videos";
+	QCOMPARE(returnString, expectedString);
+
+    mTestView->mCurrentList = collectionWidget; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelCategory;
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	expectedString = "txt_videos_subtitle_l1_collections";
+	QCOMPARE(returnString, expectedString);
+
+    mTestView->mCurrentList = 0; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	expectedString = "txt_videos_subtitle_l1_collections";
+	QCOMPARE(returnString, expectedString);
+
+    mTestView->mCurrentList = collectionContentWidget; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	expectedString = "txt_videos_subtitle_1_l2";
+	QCOMPARE(returnString, expectedString);
+
+    mTestView->mCurrentList = 0; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelVideos;
+	expectedString = "txt_videos_subtitle_1_l2";
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	QCOMPARE(returnString, expectedString);
+	
+    mTestView->mCurrentList = collectionContentWidget; 
+    mTestView->mCurrentList->mCurrentLevel = VideoCollectionCommon::ELevelAlbum;
+	emit testCollectionOpenedSignal(true, QString("NAME"));
+	emit testLayoutChangedSignal();
+	returnString = label->heading();
+	expectedString = "txt_videos_subtitle_1_l2";
+	QCOMPARE(returnString, expectedString);
+}
+
+// ---------------------------------------------------------------------------
+// testShowHint
+// ---------------------------------------------------------------------------
+//
+void TestListView::testShowHint()
+{
+    VideoHintWidget *hintWidget = 0;
+    
+    init(true);
+    connect(this, SIGNAL(testLayoutChangedSignal()), mTestView, SLOT(layoutChangedSlot()));
+    
+    setRowCount(1);    
+    hintWidget = mUiLoader->findWidget<VideoHintWidget>(DOCML_NAME_VC_VIDEOHINTWIDGET);    
+    mTestView->mModelReady = false;
+    hintWidget->setVisible(true);    
+    emit testLayoutChangedSignal();
+    QVERIFY(hintWidget->isVisible());
+    
+    VideoSortFilterProxyModel* model = mTestView->mCurrentList->mModel;
+    mTestView->mCurrentList->mModel = 0;
+    mTestView->mModelReady = true;    
+    emit testLayoutChangedSignal();
+    QVERIFY(hintWidget->isVisible() == false);
+
+    setRowCount(1);
+    hintWidget->setVisible(true);
+    emit testLayoutChangedSignal();
+    QVERIFY(hintWidget->isVisible() == false);
+}
+
+// End of file