videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp
changeset 34 bbb98528c666
parent 30 4f111d64a341
child 35 3738fe97f027
--- a/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp	Thu Apr 01 23:13:36 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideosortfilterproxymodel/src/testvideosortfilterproxymodel.cpp	Thu Apr 01 23:22:15 2010 +0300
@@ -19,6 +19,7 @@
 #include <QModelIndexList>
 #include <hbapplication.h>
 
+#include "videocollectionwrapper.h"
 #include "videocollectioncommon.h"
 #include "testvideosortfilterproxymodel.h"
 #include "filterproxytester.h"
@@ -37,12 +38,19 @@
     
     TestVideoSortFilterProxyModel tv;
 
-    char *pass[3];
-    pass[0] = argv[0];
-    pass[1] = "-o";
-    pass[2] = "c:\\data\\testvideosortfilterproxymodel.txt";
-    
-    int res = QTest::qExec(&tv, 3, pass);
+    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\\testvideosortfilterproxymodel.txt";
+        res = QTest::qExec(&tv, 3, pass);
+    }    
     
     return res;
 }
@@ -54,6 +62,8 @@
 //
 void TestVideoSortFilterProxyModel::init()
 {
+    qRegisterMetaType<TMPXItemId>("TMPXItemId");
+    
 	VideoListDataModel::mInitFails = false;
 	VideoListDataModel::mRemoveRowsFails = false;
 	VideoListDataModel::mGetMediaIdAtIndexFails = false;
@@ -67,7 +77,7 @@
 	VideoCollectionClient::mAddNewCollectionIds = QList<TMPXItemId>();
 	VideoThumbnailData::mStartBackgroundFetchingCallCount = 0;
 	
-    mTestObject = new FilterProxyTester();
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::EGeneric);
     QVERIFY(mTestObject);
     
     mStubModel = new VideoListDataModel();
@@ -75,6 +85,8 @@
     
     mCollectionClient = new VideoCollectionClient();
     QVERIFY(mCollectionClient);
+    
+    mCollectionModel = new VideoSortFilterProxyModel(VideoCollectionWrapper::ECollections);
 }
 
 // ---------------------------------------------------------------------------
@@ -91,6 +103,9 @@
  
     delete mTestObject;
     mTestObject = 0;
+    
+    delete mCollectionModel;
+    mCollectionModel = 0;
 }
 
 // ---------------------------------------------------------------------------
@@ -112,28 +127,6 @@
 }
 
 // ---------------------------------------------------------------------------
-// testInitializeDataModelInitFail
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testInitializeDataModelInitFail()
-{
-	VideoListDataModel::mInitFails = true; 
-	
-	QVERIFY(mTestObject->initialize(mStubModel) == -1);
-}
-
-// ---------------------------------------------------------------------------
-// testInitializeCollectionInitFail
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testInitializeCollectionInitFail()
-{
-	VideoCollectionClient::mFailInit = true; 
-	
-	QVERIFY(mTestObject->initialize(mStubModel) == -1);
-}
-
-// ---------------------------------------------------------------------------
 // testSecondInitialize
 // ---------------------------------------------------------------------------
 //
@@ -144,22 +137,16 @@
 }
 
 // ---------------------------------------------------------------------------
-// testSecondInitializeModelInitFail
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testSecondInitializeModelInitFail()
-{
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	VideoListDataModel::mInitFails = true; 
-	QVERIFY(mTestObject->initialize(mStubModel) == -1);
-}
-
-// ---------------------------------------------------------------------------
 // testOpen
 // ---------------------------------------------------------------------------
 //
 void TestVideoSortFilterProxyModel::testOpen()
 {
+    // no mCollectionClient
+    QVERIFY(mTestObject->open(1) == -1);
+    
+    mTestObject->initialize(mStubModel);
+    
 	// First open.
 	QVERIFY(mTestObject->open(1) == 0); 
 	// Open again with same level.
@@ -175,20 +162,20 @@
 //
 void TestVideoSortFilterProxyModel::testDeleteItems()
 {
+    VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
     QString name1 = "cc";
     QString name2 = "bb";
     QString name3 = "aa";
     QString name4 = "11";
     QString name5 = "12";
-    mStubModel->appendData(name1); // to source model index 0, proxy index after sort 4
+   
+    mStubModel->appendData(name1); // to source model index 0, proxy index after sort 4   
     mStubModel->appendData(name2); // to source model index 1, proxy index after sort 3
     mStubModel->appendData(name3); // to source model index 2, proxy index after sort 2
-    mStubModel->appendData(name4); // to source model index 3, proxy index after sort 0 
+    mStubModel->appendData(name4); // to source model index 3, proxy index after sort 0
     mStubModel->appendData(name5); // to source model index 4, proxy index after sort 1
-
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	
-	mStubModel->setUsedRowCount(5);
 	
 	// sort to make sure that list order is different compared to source model
 	mTestObject->doSorting(Qt::DisplayRole, Qt::AscendingOrder);
@@ -196,7 +183,8 @@
     // processing time.
     QTest::qWait(500);
     QVERIFY(mTestObject->sortRole() == Qt::DisplayRole);
-	
+    
+	int count = mTestObject->rowCount();
     QModelIndexList list;
     QModelIndex index; 
     for(int i = 0; i < 5; ++i)
@@ -205,14 +193,11 @@
         list.append(index);
     }
     QModelIndexList emptyList;
-	User::Heap().__DbgMarkStart();
     VideoThumbnailData::mStartBackgroundFetchingCallCount = 0;
 	QVERIFY(mTestObject->deleteItems(emptyList) == 0);
 	QVERIFY(mTestObject->deleteItems(list) == 0);
 	QVERIFY(mStubModel->mLastDeletedIndexRow == 0);
 	QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 2);
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
@@ -222,19 +207,14 @@
 void TestVideoSortFilterProxyModel::testDeleteItemsModelNull()
 {
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
 	QVERIFY(mTestObject->initialize(NULL) == -1);
 
 	QModelIndex index = mStubModel->index(0, 0);
 	QModelIndexList list;
 	list.append(index);	
-
-	User::Heap().__DbgMarkStart();
 	
 	QVERIFY(mTestObject->deleteItems(list) == -1);
 
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
@@ -244,81 +224,54 @@
 void TestVideoSortFilterProxyModel::testDeleteItemsRemoveRowsFail()
 {
 	VideoListDataModel::mRemoveRowsFails = true;
-	
+	VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
+    
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
 	
 	QModelIndex index = mTestObject->index(0, 0);
 	QModelIndexList list;
 	list.append(index);
-
-	User::Heap().__DbgMarkStart();
 	
 	QVERIFY(mTestObject->deleteItems(list) == -1);
-
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
-}
-
-// ---------------------------------------------------------------------------
-// testOpenItem
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testOpenItem()
-{	
-	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	QModelIndex index = mTestObject->index(0, 0);
-	
-	User::Heap().__DbgMarkStart();
-
-	QVERIFY(mTestObject->openItem(index) == 0);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
-// testOpenItemGetMediaIdFail
+// testOpenItemInvalidId
 // ---------------------------------------------------------------------------
 //
-void TestVideoSortFilterProxyModel::testOpenItemGetMediaIdFail()
+void TestVideoSortFilterProxyModel::testOpenItemInvalidId()
 {
 	VideoListDataModel::mGetMediaIdAtIndexFails = true;
-	
+	VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
+    
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
 	QModelIndex index = mTestObject->index(0, 0);
-	
-	User::Heap().__DbgMarkStart();
+	TMPXItemId itemId = TMPXItemId::InvalidId();
 		
-	QVERIFY(mTestObject->openItem(index) == -1);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
+	QVERIFY(mTestObject->openItem(itemId) == -1);
 }
 
 // ---------------------------------------------------------------------------
-// testOpenItemModelNull
+// testOpenItemCollectionNull
 // ---------------------------------------------------------------------------
 //
-void TestVideoSortFilterProxyModel::testOpenItemModelNull()
+void TestVideoSortFilterProxyModel::testOpenItemCollectionNull()
 {	
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
-	QVERIFY(mTestObject->initialize(NULL) == -1); 
 	
-	QModelIndex index = mTestObject->index(0, 0);
-	User::Heap().__DbgMarkStart();
-		
-	QVERIFY(mTestObject->openItem(index) == -1);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
+	TMPXItemId itemId(1,0);
+
+	QVERIFY(mTestObject->openItem(itemId) == -1);
 }
+
 // ---------------------------------------------------------------------------
 // testOpenItemOpenVideoFails
 // ---------------------------------------------------------------------------
@@ -328,16 +281,31 @@
 	VideoCollectionClient::mFailMediaPlayback = true;
 	
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+	TMPXItemId itemId(1,0);
+	
+	QVERIFY(mTestObject->openItem(itemId) == -1);
 	
-	QModelIndex index = mTestObject->index(0, 0);
-	User::Heap().__DbgMarkStart();
-		
-	QVERIFY(mTestObject->openItem(index) == -1);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
+	VideoCollectionClient::mFailMediaPlayback = false;
+}
+
+// ---------------------------------------------------------------------------
+// testOpenItem
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testOpenItem()
+{   
+    mStubModel->appendData("Test");
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    TMPXItemId itemId(1,0);
+    
+    // open video
+    QVERIFY(mTestObject->openItem(itemId) == 0);
+    
+    // open category or album
+    itemId = TMPXItemId(1,2);
+    QVERIFY(mTestObject->openItem(itemId) == 0);
+            
 }
 
 // ---------------------------------------------------------------------------
@@ -346,17 +314,14 @@
 //
 void TestVideoSortFilterProxyModel::testBack()
 {	
-	//mStubModel->appendData("Test");
-	//mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	//QModelIndex index = mTestObject->index(0, 0);
-	
-	User::Heap().__DbgMarkStart();
 
 	QVERIFY(mTestObject->back() == 0);
 	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
+	mTestObject->open(VideoCollectionCommon::ELevelAlbum);
+	QVERIFY(mTestObject->back() == 0);
+	
 }
 
 // ---------------------------------------------------------------------------
@@ -365,19 +330,12 @@
 //
 void TestVideoSortFilterProxyModel::testBackClientNull()
 {	
-	//mStubModel->appendData("Test");
-	//mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	//QModelIndex index = mTestObject->index(0, 0);
 	VideoCollectionClient *tmpCollectionClient = mTestObject->getClient();
 	mTestObject->setClient(0);
-	
-	User::Heap().__DbgMarkStart();
 
 	QVERIFY(mTestObject->back() == -1);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 
 	mTestObject->setClient(tmpCollectionClient);
 }
@@ -388,17 +346,15 @@
 //
 void TestVideoSortFilterProxyModel::testFetchItemDetails()
 {
+    VideoCollectionClient::mFailStartOpen = false;
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	
-	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(int)));
+	mTestObject->open(3);
+	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(TMPXItemId)));
 	
 	QModelIndex index = mTestObject->index(0, 0);	
 
 	QList<QVariant> arguments;
-	
-	User::Heap().__DbgMarkStart();
 	QVERIFY(mTestObject->fetchItemDetails(index) == 0);
 
 	QVERIFY(fetchSpy.count() == 1);
@@ -406,9 +362,6 @@
 	QVERIFY(arguments.at(0).toInt() == 0);
 	arguments.clear();
 	fetchSpy.clear();
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
@@ -420,21 +373,16 @@
 	VideoListDataModel::mGetMediaIdAtIndexFails = true;
 	
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
 	
-	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(int)));
+	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(TMPXItemId)));
 	
 	QModelIndex index = mTestObject->index(0, 0);
 	
-	User::Heap().__DbgMarkStart();
-	
 	QVERIFY(mTestObject->fetchItemDetails(index) == -1);
 	
 	QVERIFY(fetchSpy.count() == 0);
-	
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
@@ -446,29 +394,52 @@
 	VideoCollectionClient::mFailMediaDetails = true;
 	
 	mStubModel->appendData("Test");
-	mStubModel->setUsedRowCount(1);
+
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
 	
-	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(int)));
+	QSignalSpy fetchSpy(mTestObject, SIGNAL(shortDetailsReady(TMPXItemId)));
 	QModelIndex index = mTestObject->index(0, 0);
-	
-	User::Heap().__DbgMarkStart();
-		
+
 	QVERIFY(mTestObject->fetchItemDetails(index) == -1);
 	
 	QVERIFY(fetchSpy.count() == 0);
-
-	int remHeap = User::Heap().__DbgMarkEnd(0);
-	QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
 // testLessThanProxyModelNotInitialized
 // ---------------------------------------------------------------------------
 //
-void TestVideoSortFilterProxyModel::testLessThanProxyModelNotInitialized()
+void TestVideoSortFilterProxyModel::testLessThanNoModel()
 {
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    // "normal" comparisation
+    QString name1 = "cc";
+    QString name2 = "bb";
+    QString name3 = "aa";
+    QString name4 = "11";
+    QString name5 = "11";
+    
+    mStubModel->appendData(name1); // to index 0, position 4
+    mStubModel->appendData(name2); // to index 1, position 3
+    mStubModel->appendData(name3); // to index 2, position 2
+    mStubModel->appendData(name4); // to index 3, position 0 or 1
+    mStubModel->appendData(name5); // to index 4, position 0 or 1
+   
+    mTestObject->setSortRole(Qt::DisplayRole);
+
+    QModelIndex left = mStubModel->index(0,0);
+    QModelIndex right = mStubModel->index(1,0);
+    
+    QVERIFY(!mTestObject->callLessThan(left, right));
+}
+// ---------------------------------------------------------------------------
+// testLessThanName
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testLessThanName()
+{
+    VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
 	
     // "normal" comparisation
     QString name1 = "cc";
@@ -482,45 +453,8 @@
     mStubModel->appendData(name3); // to index 2, position 2
     mStubModel->appendData(name4); // to index 3, position 0 or 1
     mStubModel->appendData(name5); // to index 4, position 0 or 1
-    mStubModel->setUsedRowCount(5);
    
     mTestObject->setSortRole(Qt::DisplayRole);
-    
-    User::Heap().__DbgMarkStart();  
-
-    QModelIndex left = mStubModel->index(0,0);
-    QModelIndex right = mStubModel->index(1,0);
-    
-    QVERIFY(!mTestObject->callLessThan(left, right));
-    
-    int remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
-}
-// ---------------------------------------------------------------------------
-// testLessThanName
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testLessThanName()
-{
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	
-    // "normal" comparisation
-    QString name1 = "cc";
-    QString name2 = "bb";
-    QString name3 = "aa";
-    QString name4 = "11";
-    QString name5 = "11";
-    
-    mStubModel->appendData(name1); // to index 0, position 4
-    mStubModel->appendData(name2); // to index 1, position 3
-    mStubModel->appendData(name3); // to index 2, position 2
-    mStubModel->appendData(name4); // to index 3, position 0 or 1
-    mStubModel->appendData(name5); // to index 4, position 0 or 1
-    mStubModel->setUsedRowCount(5);
-   
-    mTestObject->setSortRole(Qt::DisplayRole);
-    
-    User::Heap().__DbgMarkStart();  
 
     QModelIndex left = mStubModel->index(0,0);
     QModelIndex right = mStubModel->index(1,0);
@@ -545,17 +479,10 @@
     right = mStubModel->index(0,0);
     
     QVERIFY(mTestObject->callLessThan(left, right));
-    
-    int remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
+
     // reset model
-    delete mStubModel;
-    mStubModel = 0;
-    
-    mStubModel = new VideoListDataModel();
-    QVERIFY(mStubModel);
-    QVERIFY(mTestObject->initialize(mStubModel) == 0);
-    
+    mStubModel->removeAll();;
+        
     // case sensitive check
     name1 = "cc";
     name2 = "CC";
@@ -565,7 +492,7 @@
     QString name6 = "2Aa";
     QString name7 = "1Aa";
     QString name8 = "1cc";
-    
+    mStubModel->removeAll();
     mStubModel->appendData(name1); // to index 0, position can be 5, 6 or 7
     mStubModel->appendData(name2); // to index 1, position can be 5, 6 or 7
     mStubModel->appendData(name3); // to index 2, position can be 5, 6 or 7
@@ -575,11 +502,9 @@
     mStubModel->appendData(name7); // to index 6, position is 0
     mStubModel->appendData(name8); // to index 7, position is 1
     
-    mStubModel->setUsedRowCount(8);
     
     mTestObject->setSortRole(Qt::DisplayRole);
-    
-    User::Heap().__DbgMarkStart();  
+
 
     left = mStubModel->index(0,0);  // "cc"
     right = mStubModel->index(1,0); // "CC"
@@ -625,10 +550,6 @@
     left = mStubModel->index(7,0);  // "1cc"
     right = mStubModel->index(0,0); // "cc"
     QVERIFY(mTestObject->callLessThan(left, right));
-    
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
-    
 }
   
 // ---------------------------------------------------------------------------
@@ -637,7 +558,9 @@
 //
 void TestVideoSortFilterProxyModel::testLessThanSize()
 {
+    VideoCollectionClient::mFailStartOpen = false;
     QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
 
     quint32 size1 = 300;
     quint32 size2 = 200;
@@ -650,11 +573,8 @@
     mStubModel->appendData(size3); // to index 2    
     mStubModel->appendData(size4); // to index 3
     mStubModel->appendData(size5); // to index 4
-    mStubModel->setUsedRowCount(5);
-    
+ 
     mTestObject->setSortRole(VideoCollectionCommon::KeySizeValue);
-
-    User::Heap().__DbgMarkStart();  
     
     QModelIndex left = mStubModel->index(0,0);
     QModelIndex right = mStubModel->index(1,0);
@@ -680,9 +600,6 @@
     right = mStubModel->index(0,0);
     
     QVERIFY(mTestObject->callLessThan(left, right));
-    
-    int remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
 }
  
 // ---------------------------------------------------------------------------
@@ -691,7 +608,9 @@
 //
 void TestVideoSortFilterProxyModel::testLessThanDateTime()
 {
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
 	
 	QDateTime date1(QDate(2010, 11, 5), QTime(0,0));
     QDateTime date2(QDate(2009, 9, 5), QTime(0,0));
@@ -704,11 +623,8 @@
     mStubModel->appendData(date3); // to index 2    
     mStubModel->appendData(date4); // to index 3
     mStubModel->appendData(date5); // to index 4
-    mStubModel->setUsedRowCount(5);
     
     mTestObject->setSortRole(VideoCollectionCommon::KeyDateTime);
-
-    User::Heap().__DbgMarkStart();  
     
     QModelIndex left = mStubModel->index(0,0);
     QModelIndex right = mStubModel->index(1,0);
@@ -734,9 +650,6 @@
     right = mStubModel->index(0,0);
     
     QVERIFY(!mTestObject->callLessThan(left, right));
-    
-    int remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
 }
 
 // ---------------------------------------------------------------------------
@@ -745,21 +658,18 @@
 //
 void TestVideoSortFilterProxyModel::testLessThanInvalid()
 {
-	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    VideoCollectionClient::mFailStartOpen = false;
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
 	
     // invalid role
 	mTestObject->setSortRole(10000);
     
-    User::Heap().__DbgMarkStart();  
-    
     QModelIndex left = mStubModel->index(0,0);
     QModelIndex right = mStubModel->index(0,0);
     
     QVERIFY(!mTestObject->callLessThan(left, right));
     
-    int remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
-    
     // invalid role but valid data.
     
 	QString name1 = "cc";
@@ -770,38 +680,26 @@
 	mStubModel->appendData(name1); // to index 0, position 4
 	mStubModel->appendData(name2); // to index 1, position 3
 	mStubModel->appendData(name3); // to index 2, position 2
-	mStubModel->setUsedRowCount(3);
    
 	mTestObject->setSortRole(INVALID_ROLE_FOR_SORTING);
 	
     left = mStubModel->index(0,0);
     right = mStubModel->index(1,0);
     
-    User::Heap().__DbgMarkStart();
     
     QVERIFY(!mTestObject->callLessThan(left, right));
-
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
     
     // reset model
-    delete mStubModel;
-    mStubModel = 0;  
-    
-    mStubModel = new VideoListDataModel();
-    QVERIFY(mStubModel);
-    QVERIFY(mTestObject->initialize(mStubModel) == 0);
-    
+    mStubModel->removeAll();
+        
     // invalid left index
     mTestObject->setSortRole(Qt::DisplayRole);
-    User::Heap().__DbgMarkStart(); 
+
     left = QModelIndex();
     right = mStubModel->index(0,0);
     
     QVERIFY(!mTestObject->callLessThan(left, right));
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
-    
+
     // invalid right index
     mTestObject->setSortRole(Qt::DisplayRole);
     User::Heap().__DbgMarkStart(); 
@@ -809,8 +707,6 @@
     right = QModelIndex();
     
     QVERIFY(!mTestObject->callLessThan(left, right));
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
     
     // both invalid
     mTestObject->setSortRole(Qt::DisplayRole);
@@ -819,9 +715,7 @@
     right = QModelIndex();
     
     QVERIFY(!mTestObject->callLessThan(left, right));
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
-    
+
     // both same index, use size
     quint32 size1 = 99;
     
@@ -829,15 +723,12 @@
     
     mTestObject->setSortRole(VideoCollectionCommon::KeySizeValue);
     mTestObject->setSortRole(Qt::DisplayRole); 
-    
-    User::Heap().__DbgMarkStart(); 
+
     
     left = mStubModel->index(0,0);
     right = mStubModel->index(0,0);
     QVERIFY(!mTestObject->callLessThan(left, right));
-    remHeap = User::Heap().__DbgMarkEnd(0);
-    QVERIFY(remHeap == 0);
- 
+
 }
 
 // ---------------------------------------------------------------------------
@@ -846,9 +737,9 @@
 //
 void TestVideoSortFilterProxyModel::testDoSorting()
 {
-    QWARN("Waiting for resolving of potential memory leak in QSortFilterProxy before adding heap allocation checks here");
-    
+    VideoCollectionClient::mFailStartOpen = false;
     QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
     
     // these signals are emitted during sorting procedure from the fw
     QSignalSpy spyAboutToChange(mTestObject, SIGNAL(layoutAboutToBeChanged()));
@@ -888,9 +779,8 @@
     mStubModel->appendData(size4); // to index 3
     mStubModel->appendData(size5); // to index 4
     
-    mStubModel->setUsedRowCount(5);
-
-    // User::Heap().__DbgMarkStart();  
+    int sortingRole;
+    Qt::SortOrder  sortingOrder;
 
     // first sort call, includes timer creation and setup
     VideoThumbnailData::mStartBackgroundFetchingCallCount = 0;
@@ -903,7 +793,10 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::AscendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
-   
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
+    
     // reset spys
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -917,6 +810,9 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::DescendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::DescendingOrder);
     
     // reset spys
     spyAboutToChange.clear();
@@ -932,6 +828,9 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::AscendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -944,6 +843,9 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::DescendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::DescendingOrder);
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -955,6 +857,9 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::AscendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -967,6 +872,9 @@
     QCOMPARE(mTestObject->sortRole(), (int)Qt::DisplayRole);
     QCOMPARE(mTestObject->sortOrder(), Qt::AscendingOrder);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 0);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)Qt::DisplayRole);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -980,6 +888,9 @@
     QCOMPARE(spyChanged.count(), 1);
     QCOMPARE(mTestObject->sortRole(), (int)VideoCollectionCommon::KeyDateTime);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)VideoCollectionCommon::KeyDateTime);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -992,6 +903,10 @@
     QCOMPARE(spyChanged.count(), 1);
     QCOMPARE(mTestObject->sortRole(),  (int)VideoCollectionCommon::KeySizeValue);
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
+    mTestObject->getSorting(sortingRole, sortingOrder);
+    QCOMPARE(sortingRole, (int)VideoCollectionCommon::KeySizeValue);
+    QCOMPARE(sortingOrder, Qt::AscendingOrder);
+    
     
     spyAboutToChange.clear();
     spyChanged.clear();
@@ -1006,20 +921,6 @@
     spyAboutToChange.clear();
     spyChanged.clear();
     QVERIFY(VideoThumbnailData::mStartBackgroundFetchingCallCount == 1);
-    
-   // cleanup();
-   // int remHeap = User::Heap().__DbgMarkEnd(0);
-   // QVERIFY(remHeap == 0);  
-}
-
-// ---------------------------------------------------------------------------
-// testFilterAcceptsRow
-// ---------------------------------------------------------------------------
-//
-void TestVideoSortFilterProxyModel::testFilterAcceptsRowProxyModelNotInitialized()
-{	
-	QModelIndex index = QModelIndex(); // index can be anything, test model doesn't use it.
-    QVERIFY(mTestObject->callFilterAcceptsRow(0, index) == false);    
 }
 
 // ---------------------------------------------------------------------------
@@ -1028,40 +929,26 @@
 //
 void TestVideoSortFilterProxyModel::testFilterAcceptsRow()
 {	
+    QWARN("tests for different model types are still missing");
+    
 	QModelIndex index = QModelIndex(); // index can be anything, test model doesn't use it.
 		
-	// Not initialized.
+	// Not initialized: no rouce model
 	QVERIFY(mTestObject->callFilterAcceptsRow(0, index) == false);	
 	
 	QVERIFY(mTestObject->initialize(mStubModel) == 0);
+	mTestObject->open(3);
 	
-	// Test invalid row.
+	// Test invalid row: below 0
 	QVERIFY(mTestObject->callFilterAcceptsRow(-1, index) == false);
 	
-	// Model data has no status role.
+	// invalid row: larger than count
 	mStubModel->appendData("test");
-	mStubModel->setUsedRowCount(1);
+	QVERIFY(mTestObject->callFilterAcceptsRow(2, index) == false);
+	
+	// correct row
 	QVERIFY(mTestObject->callFilterAcceptsRow(0, index) == true);
 	
-    // reset model
-    delete mStubModel;
-    mStubModel = 0;
-    
-    mStubModel = new VideoListDataModel();
-    QVERIFY(mStubModel);
-    QVERIFY(mTestObject->initialize(mStubModel) == 0);
-	
-    // add data with status roles.  
-	mStubModel->appendStatus(VideoCollectionCommon::StatusNone);
-    mStubModel->appendStatus(VideoCollectionCommon::StatusDeleted);
-    mStubModel->setUsedRowCount(2);
-    
-    // Test when status is not deleted.
-    QVERIFY(mTestObject->callFilterAcceptsRow(0, index) == true);
-    
-    // Test when status is deleted.
-    index = mStubModel->index(0,0);
-    QVERIFY(mTestObject->callFilterAcceptsRow(1, index) == false);
 }
 
 // ---------------------------------------------------------------------------
@@ -1087,10 +974,8 @@
 void TestVideoSortFilterProxyModel::testAddNewCollectionNoCollectionClient()
 {
     QString name("testname");
-    QString thumb("testthumb");
-    QList<TMPXItemId> ids;
-    
-    QCOMPARE(mTestObject->addNewCollection(name, thumb, ids), -1);
+    VideoCollectionClient::mNewAlbumId = TMPXItemId(1,1);
+    QVERIFY(mTestObject->addNewAlbum(name) == TMPXItemId::InvalidId());
     QVERIFY(VideoCollectionClient::mAddNewCollectionName != name);
 }
 
@@ -1101,50 +986,239 @@
 void TestVideoSortFilterProxyModel::testAddNewCollectionSucceed()
 {
     QString name("testname");
-    QString thumb("testthumb");
-    QList<TMPXItemId> ids;
-    ids.append(TMPXItemId(5, 0));
-    ids.append(TMPXItemId(9, 0));
+
+    mTestObject->initialize(mStubModel);
+    VideoCollectionClient::mNewAlbumId = TMPXItemId(1,1);
+    QVERIFY(mTestObject->addNewAlbum(name) == TMPXItemId(1,1));
+    QCOMPARE(VideoCollectionClient::mAddNewCollectionName, name);
+}
+
+// ---------------------------------------------------------------------------
+// testResolveAlbumName
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testResolveAlbumName()
+{
+    QString name("test");
+    QString resolved("");
+    // no model, same name can be used
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved.length());
+    QVERIFY(resolved == name);  
     
     mTestObject->initialize(mStubModel);
     
-    QCOMPARE(mTestObject->addNewCollection(name, thumb, ids), 0);
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionName, name);
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionThumb, thumb);
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionIds, ids);
+    // no collections proxy model, same name    
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved.length());
+    QVERIFY(resolved == name);  
+    
+   
+    mCollectionModel->initialize(mStubModel);
+    VideoCollectionWrapper::instance().mProxyModel = mCollectionModel;
+    
+    mStubModel->appendData(name);
+    
+    // invalid data from model, same name can be used
+    VideoListDataModel::mReturnInvalid = true;
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved.length());
+    QVERIFY(resolved == name);  
+    VideoListDataModel::mReturnInvalid = false;
+    
+    // same name, name to be different
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved.length());
+    QVERIFY(resolved != name);
+    QVERIFY(resolved.contains("1"));
+    
+    // different name, no changes
+    name = "Another";
+    resolved = mTestObject->resolveAlbumName(name);
+    QVERIFY(resolved == name); 
+    
+}
+
+// ---------------------------------------------------------------------------
+// testResolveAlbumName
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testAddItemsInAlbum()
+{
+    TMPXItemId albumId(1,2);
+    QList<TMPXItemId> items;
+    items.append(TMPXItemId(1,0));
+    // no collection client
+    QVERIFY(mTestObject->addItemsInAlbum(albumId, items) == -1);
+    
+    mTestObject->initialize(mStubModel);
+       
+    QVERIFY(mTestObject->addItemsInAlbum(albumId, items) == 0);
+}
+
+// ---------------------------------------------------------------------------
+// testGetOpenItem
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testGetOpenItem()
+{
+    // no collection client
+    QVERIFY(mTestObject->getOpenItem() == TMPXItemId::InvalidId());
+    
+    mTestObject->initialize(mStubModel);
+    
+    // type neither EAllVideos or ECollectionContent
+    QVERIFY(mTestObject->getOpenItem() == TMPXItemId::InvalidId());
+    
+    TMPXItemId id;
+    // type EAllVideos
+    delete mTestObject;    
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::EAllVideos);
+    mTestObject->initialize(mStubModel);
+    id = mTestObject->getOpenItem();
+    QVERIFY(id != TMPXItemId::InvalidId());
+    QVERIFY(id.iId1 == KVcxMvcCategoryIdAll);
+    QVERIFY(id.iId2 == KVcxMvcMediaTypeCategory);
+
+    // type ECollectionContent
+    delete mTestObject;    
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::ECollectionContent);
+    mTestObject->initialize(mStubModel);
+    id.iId1 = 1;
+    id.iId2 = KVcxMvcMediaTypeAlbum;
+    mTestObject->openItem(id);
+    id = TMPXItemId::InvalidId();
+    id = mTestObject->getOpenItem();
+    QVERIFY(id != TMPXItemId::InvalidId());
+    QVERIFY(id.iId1 == 1);
+    QVERIFY(id.iId2 == KVcxMvcMediaTypeAlbum);
+ 
 }
 
 // ---------------------------------------------------------------------------
-// testAddNewCollectionFail
+// testRemoveAlbums
 // ---------------------------------------------------------------------------
 //
-void TestVideoSortFilterProxyModel::testAddNewCollectionFail()
+void TestVideoSortFilterProxyModel::testRemoveAlbums()
 {
-    QString name("testname");
-    QString thumb("testthumb");
-    QList<TMPXItemId> ids;
-    ids.append(TMPXItemId(5,0));
-    ids.append(TMPXItemId(9,0));
+    QModelIndexList indexList;
+    // no collection 
+    QVERIFY(mTestObject->removeAlbums(indexList) == -1);
     
     mTestObject->initialize(mStubModel);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelVideos) == 0);
     
-    VideoCollectionClient::mFailAddNewCollection = true;
+    // empty list provided
+    QVERIFY(mTestObject->removeAlbums(indexList) == -1);
+    
+    mStubModel->appendData(TMPXItemId(1,0));
+    mStubModel->appendData(TMPXItemId(2,0));
+    mStubModel->appendData(TMPXItemId(3,0));
     
-    QCOMPARE(mTestObject->addNewCollection(name, thumb, ids), -1);
+    indexList.append(mTestObject->index(0,0));
+    indexList.append(mTestObject->index(1,0));
+    indexList.append(mTestObject->index(2,0));
+    
+    // no albums in model
+    QVERIFY(mTestObject->removeAlbums(indexList) == -1);
     
-    // this makes sure that the collection client has been called.
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionName, name);
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionThumb, thumb);
-    QCOMPARE(VideoCollectionClient::mAddNewCollectionIds, ids);
+    mStubModel->removeAll();
+    delete mTestObject;
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::ECollections);
+    QVERIFY(mTestObject);
+    QVERIFY(mTestObject->initialize(mStubModel) == 0);
+    QVERIFY(mTestObject->open(VideoCollectionCommon::ELevelCategory) == 0);
+    mStubModel->appendData(TMPXItemId(1,2));
+    mStubModel->appendData(TMPXItemId(2,2));
+    mStubModel->appendData(TMPXItemId(3,2));
+    indexList.append(mTestObject->index(0,2));
+    indexList.append(mTestObject->index(1,2));
+    indexList.append(mTestObject->index(2,2));
+
+    // succeed
+    QVERIFY(mTestObject->removeAlbums(indexList) == 0);
+}
+
+// ---------------------------------------------------------------------------
+// testAlbumChangedSlot
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testAlbumChangedSlot()
+{
+    // cannot test anything here, just for the coverage
+    // level incorrect
+    mTestObject->initialize(mStubModel);
+    mStubModel->emitAlbumChanged();
+    delete mTestObject;
+    mTestObject = 0;
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::ECollectionContent);
+    QVERIFY(mTestObject);
+    mTestObject->initialize(mStubModel);
+    mStubModel->emitAlbumChanged();        
 }
 
 // ---------------------------------------------------------------------------
-// testShortDetailsReadySlot
+// testIndexOfId
 // ---------------------------------------------------------------------------
 //
-int TestVideoSortFilterProxyModel::testShortDetailsReadySlot(int index)
+void TestVideoSortFilterProxyModel::testIndexOfId()
 {
-	return 1;
+    QModelIndex index;
+    // no model
+    TMPXItemId id(1,0);
+    index = mTestObject->indexOfId(id);
+    QVERIFY(!index.isValid());
+    
+    mTestObject->initialize(mStubModel);
+    mTestObject->open(VideoCollectionCommon::ELevelVideos);
+    
+    // fetching invalid
+    id = TMPXItemId::InvalidId();
+    index = mTestObject->indexOfId(id);
+    QVERIFY(!index.isValid());
+    
+    mStubModel->appendData(TMPXItemId(1,0));
+    mStubModel->appendData(TMPXItemId(2,0));
+    mStubModel->appendData(TMPXItemId(3,0));
+    
+    id = TMPXItemId(2,0);
+    index = mTestObject->indexOfId(id);
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == 1);
+}
+ 
+// ---------------------------------------------------------------------------
+// testSetGenericIdFilter
+// ---------------------------------------------------------------------------
+//
+void TestVideoSortFilterProxyModel::testSetGenericIdFilter()
+{
+    // type VideoCollectionWrapper::EGeneric    
+    mTestObject->initialize(mStubModel);   
+    mTestObject->open(VideoCollectionCommon::ELevelVideos);
+    mTestObject->setGenericIdFilter(TMPXItemId(0,1), true);
+    
+    mStubModel->appendData(TMPXItemId(1,0));
+    mStubModel->appendData(TMPXItemId(2,0));
+    mStubModel->appendData(TMPXItemId(3,0));
+    mTestObject->invalidate();
+    QModelIndex index;
+    index = mTestObject->indexOfId(TMPXItemId(1,0));
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == 0);        
+    
+    // other type
+    delete mTestObject;
+    mTestObject = new FilterProxyTester(VideoCollectionWrapper::EAllVideos);
+    mTestObject->initialize(mStubModel);   
+    mTestObject->open(VideoCollectionCommon::ELevelVideos);
+    
+    mTestObject->setGenericIdFilter(TMPXItemId(1,1), true);
+    mTestObject->invalidate();
+    index = mTestObject->indexOfId(TMPXItemId(1,0));
+    QVERIFY(index.isValid());
+    QVERIFY(index.row() == 0);    
+    
 }