diff -r 69946d1824c4 -r b9e04db066d4 videocollection/videocollectionwrapper/tsrc/testvideothumbnailfetcher/src/testvideothumbnailfetcher.cpp --- a/videocollection/videocollectionwrapper/tsrc/testvideothumbnailfetcher/src/testvideothumbnailfetcher.cpp Mon May 03 12:32:50 2010 +0300 +++ b/videocollection/videocollectionwrapper/tsrc/testvideothumbnailfetcher/src/testvideothumbnailfetcher.cpp Fri May 14 15:53:50 2010 +0300 @@ -33,6 +33,16 @@ #include "videothumbnailfetcher.h" +/** + * global qHash function required fo creating hash values for TMPXItemId -keys + */ +inline uint qHash(TMPXItemId key) +{ + QPair keyPair(key.iId1, key.iId2); + + return qHash(keyPair); +} + // --------------------------------------------------------------------------- // main // --------------------------------------------------------------------------- @@ -71,6 +81,7 @@ ThumbnailManager::mGetThumbFails = false; ThumbnailManager::mThumbnailReadyError = 0; + ThumbnailManager::mCancelRequestCount = 0; } // --------------------------------------------------------------------------- @@ -105,15 +116,10 @@ { init(); - mTestObject->addFetch(QString(), 0, 0); - QCOMPARE(mTestObject->mFetchList.count(), 1); + TMPXItemId mediaId(0, 0); - mTestObject->addFetch("test", 0, 0); - QCOMPARE(mTestObject->mFetchList.count(), 2); - - int *internal = new int; - mTestObject->addFetch("test", internal, 0); - QCOMPARE(mTestObject->mFetchList.count(), 3); + mTestObject->addFetch(QString(), mediaId, 0); + QCOMPARE(mTestObject->mFetchList.count(), 1); cleanup(); } @@ -126,6 +132,8 @@ { init(); + TMPXItemId mediaId(0, 0); + mTestObject->addFetch(QString(), 0, 0); mTestObject->cancelFetches(); QCOMPARE(mTestObject->mFetchList.count(), 0); @@ -138,8 +146,7 @@ QCOMPARE(mTestObject->mStartedFetchList.count(), 0); QCOMPARE(mTestObject->mCreationList.count(), 0); - int *internal = new int; - mTestObject->addFetch("test", internal, 0); + mTestObject->addFetch("test", mediaId, 0); mTestObject->cancelFetches(); QCOMPARE(mTestObject->mFetchList.count(), 0); QCOMPARE(mTestObject->mStartedFetchList.count(), 0); @@ -175,7 +182,7 @@ { init(); - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); QCOMPARE(mTestObject->fetchCount(), 1); mTestObject->mStartedFetchList.insert(0, new VideoThumbnailFetcher::ThumbnailFetchData()); @@ -209,21 +216,21 @@ void TestVideoThumbnailFetcher::testContinueFetching() { init(); - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); - mTestObject->continueFetching(); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->continueFetching(false); QCOMPARE(mTestObject->fetchCount(), 1); cleanup(); init(); mTestObject->mCreationList.insert(0, new VideoThumbnailFetcher::ThumbnailFetchData()); - mTestObject->continueFetching(); + mTestObject->continueFetching(false); QCOMPARE(mTestObject->fetchCount(), 0); cleanup(); // Test when there's nothing to fetch init(); QSignalSpy* spy = new QSignalSpy(mTestObject, SIGNAL(allThumbnailsFetched())); - mTestObject->continueFetching(); + mTestObject->continueFetching(false); QCOMPARE(spy->count(), 1); delete spy; @@ -255,16 +262,16 @@ { // Test when thumbnail manager is null. init(); - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); delete mTestObject->mThumbnailManager; mTestObject->mThumbnailManager = 0; - mTestObject->startThumbnailFetches(); + mTestObject->startThumbnailFetches(false); QCOMPARE(mTestObject->mFetchList.count(), 1); cleanup(); // Test when nothing to fetch. init(); - mTestObject->startThumbnailFetches(); + mTestObject->startThumbnailFetches(false); QVERIFY(mTestObject->mThumbnailManager->mode() == ThumbnailManager::DoNotCreate); QCOMPARE(mTestObject->fetchCount(), 0); cleanup(); @@ -273,11 +280,11 @@ init(); for(int i = 0; i < 10; i++) { - int *internal = new int(i); - mTestObject->addFetch("test", internal, i); + TMPXItemId mediaId = TMPXItemId(i, i); + mTestObject->addFetch("test", mediaId, i); } QCOMPARE(mTestObject->mFetchList.count(), 10); - mTestObject->startThumbnailFetches(); + mTestObject->startThumbnailFetches(false); QCOMPARE(mTestObject->mFetchList.count(), 0); QCOMPARE(mTestObject->mStartedFetchList.count(), 10); QCOMPARE(mTestObject->mThumbnailManager->mRequests.count(), 10); @@ -286,14 +293,43 @@ // Test when request to thumbnail manager fails. init(); ThumbnailManager::mGetThumbFails = true; - int *internal = new int(0); - mTestObject->addFetch("test", internal, 0); + TMPXItemId mediaId = TMPXItemId(0, 0); + mTestObject->addFetch("test", mediaId, 0); QCOMPARE(mTestObject->mFetchList.count(), 1); - mTestObject->startThumbnailFetches(); + mTestObject->startThumbnailFetches(false); QCOMPARE(mTestObject->mFetchList.count(), 0); QCOMPARE(mTestObject->mStartedFetchList.count(), 0); QCOMPARE(mTestObject->mThumbnailManager->mRequests.count(), 0); - cleanup(); + cleanup(); + + // Test canceling fetches that are not on the new started list. + init(); + for(int i = 0; i < 10; i++) + { + mediaId = TMPXItemId(i, i); + mTestObject->addFetch("test", mediaId, i); + } + + // 5 overlapping, they won't be canceled. + for(int i = 5; i < 15; i++) + { + mediaId = TMPXItemId(i, i); // found from the list. + VideoThumbnailFetcher::ThumbnailFetchData *data = new VideoThumbnailFetcher::ThumbnailFetchData(); + data->mFileName = ""; + data->mPriority = 0; + data->mRequestId = -1; + data->mMediaId = mediaId; + mTestObject->mStartedFetchList.insert(mediaId, data); + } + + QCOMPARE(mTestObject->mFetchList.count(), 10); + mTestObject->startThumbnailFetches(true); + QCOMPARE(mTestObject->mFetchList.count(), 0); + QCOMPARE(mTestObject->mThumbnailManager->mRequests.count(), 5); + QCOMPARE(mTestObject->mStartedFetchList.count(), 10); + QCOMPARE(ThumbnailManager::mCancelRequestCount, 5); + cleanup(); + } // --------------------------------------------------------------------------- @@ -334,7 +370,6 @@ { VideoThumbnailFetcher::ThumbnailFetchData *fetch = new VideoThumbnailFetcher::ThumbnailFetchData(); fetch->mFileName = "test"; - fetch->mInternal = 0; mTestObject->mCreationList.insert(0, fetch); } QCOMPARE(mTestObject->mCreationList.count(), 10); @@ -372,7 +407,7 @@ // Internal parameter is null, started fetches do not contain the fetch. init(); - spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, void*, int) )); + spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, const TMPXItemId &, int) )); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(spy->count(), 1); delete spy; spy = 0; @@ -380,7 +415,7 @@ // Internal parameter is null, started fetches contains the fetch. init(); - spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, void*, int) )); + spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, const TMPXItemId &, int) )); mTestObject->mStartedFetchList.insert(requestId, new VideoThumbnailFetcher::ThumbnailFetchData()); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(spy->count(), 1); @@ -389,17 +424,17 @@ // Test error handling. init(); - spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, void*, int) )); + spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, const TMPXItemId &, int) )); error = -5; mTestObject->mStartedFetchList.insert(requestId, new VideoThumbnailFetcher::ThumbnailFetchData()); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(spy->count(), 1); delete spy; spy = 0; cleanup(); - + /* TODO FIX // Fetch fails because thumbnail was not created yet, fetch list contains the request. init(); - spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, void*, int) )); + spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, const TMPXItemId &, int) )); error = -1; requestId = 5; internal = new int(5); @@ -412,10 +447,10 @@ delete spy; spy = 0; delete internal; internal = 0; cleanup(); - +*/ // Fetch fails because thumbnail was not created yet, fetch list does not contain the request. init(); - spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, void*, int) )); + spy = new QSignalSpy(mTestObject, SIGNAL( thumbnailReady(QPixmap, const TMPXItemId &, int) )); error = -1; requestId = 5; internal = new int(5); @@ -433,7 +468,7 @@ requestId = 5; mTestObject->mPaused = false; mTestObject->mStartedFetchList.insert(requestId+10, new VideoThumbnailFetcher::ThumbnailFetchData()); - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(mTestObject->mStartedFetchList.count(), 1); QCOMPARE(mTestObject->mFetchList.count(), 1); @@ -444,7 +479,7 @@ internal = 0; requestId = 5; mTestObject->mPaused = false; - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(mTestObject->mStartedFetchList.count(), 1); QCOMPARE(mTestObject->mFetchList.count(), 0); @@ -455,7 +490,7 @@ internal = 0; requestId = 5; mTestObject->mPaused = true; - mTestObject->mFetchList.append(new VideoThumbnailFetcher::ThumbnailFetchData()); + mTestObject->mFetchList.insert(TMPXItemId(0, 0), new VideoThumbnailFetcher::ThumbnailFetchData()); mTestObject->mThumbnailManager->emitThumbnailReady(pmap, internal, requestId, error); QCOMPARE(mTestObject->mStartedFetchList.count(), 0); QCOMPARE(mTestObject->mFetchList.count(), 1);