mpdata/tsrc/unittest_mpcollectionalbumartmanager/src/unittest_mpcollectionalbumartmanager.cpp
changeset 43 0f32e550d9d8
parent 35 fdb31ab341af
equal deleted inserted replaced
38:b93f525c9244 43:0f32e550d9d8
    14 * Description: Unit test for mpnowplayingbackend
    14 * Description: Unit test for mpnowplayingbackend
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <QSignalSpy>
    18 #include <QSignalSpy>
    19 #include <hbicon.h>
       
    20 
    19 
    21 #include "unittest_mpcollectionalbumartmanager.h"
    20 #include "unittest_mpcollectionalbumartmanager.h"
    22 #include "stub/inc/thumbnailmanager_qt.h"
    21 #include "stub/inc/thumbnailmanager_qt.h"
    23 #include "stub/inc/mpmpxcollectiondata.h"
    22 #include "stub/inc/mpmpxcollectiondata.h"
    24 
    23 
    67 void TestMpCollectionAlbumArtManager::initTestCase()
    66 void TestMpCollectionAlbumArtManager::initTestCase()
    68 {
    67 {
    69     mStubData = new MpMpxCollectionData();
    68     mStubData = new MpMpxCollectionData();
    70 
    69 
    71     // Create an icon (any icon will do) to help with testing.
    70     // Create an icon (any icon will do) to help with testing.
    72     mIcon = QIcon(":/testicons/default_album.png");
    71     mIcon = HbIcon(":/testicons/default_album.png");
    73 }
    72 }
    74 
    73 
    75 /*!
    74 /*!
    76  Called after the last testfunction was executed.
    75  Called after the last testfunction was executed.
    77  */
    76  */
   114  Tests albumArt() request when album art is not in local cache.
   113  Tests albumArt() request when album art is not in local cache.
   115  Single request.
   114  Single request.
   116  */
   115  */
   117 void TestMpCollectionAlbumArtManager::testAlbumArtNoCache()
   116 void TestMpCollectionAlbumArtManager::testAlbumArtNoCache()
   118 {
   117 {
   119     const QIcon* icon = mTest->albumArt(1);
   118     const HbIcon icon = mTest->albumArt(1);
   120     // Verify that:
   119     // Verify that:
   121     // - It returned default icon
   120     // - It returned default icon
   122     // - A request has been made to thumbnail manager
   121     // - A request has been made to thumbnail manager
   123     QVERIFY(icon->isNull() == false);
   122     QVERIFY(icon.isNull() == false);
   124     QCOMPARE(mTest->mPendingRequest, true);
   123     QCOMPARE(mTest->mPendingRequest, true);
   125     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 1);
   124     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 1);
   126 }
   125 }
   127 
   126 
   128 /*!
   127 /*!
   130  Request more than 1 to test request queue.
   129  Request more than 1 to test request queue.
   131  */
   130  */
   132 void TestMpCollectionAlbumArtManager::testAlbumArtNoCacheQueue()
   131 void TestMpCollectionAlbumArtManager::testAlbumArtNoCacheQueue()
   133 {
   132 {
   134     for ( int i = 0; i < 3; i++) {
   133     for ( int i = 0; i < 3; i++) {
   135         const QIcon* icon = mTest->albumArt(i);
   134         const HbIcon icon = mTest->albumArt(i);
   136         QVERIFY(icon->isNull() == false);
   135         QVERIFY(icon.isNull() == false);
   137     }
   136     }
   138     // Verify that:
   137     // Verify that:
   139     // - Max number of requests were sent to thumbnail manager
   138     // - Max number of requests were sent to thumbnail manager
   140     // - A request has been queued
   139     // - A request has been queued
   141     QCOMPARE(mTest->mPendingRequest, true);
   140     QCOMPARE(mTest->mPendingRequest, true);
   146 /*!
   145 /*!
   147  Tests albumArt() request when art is in local cache.
   146  Tests albumArt() request when art is in local cache.
   148  */
   147  */
   149 void TestMpCollectionAlbumArtManager::testAlbumArtCache()
   148 void TestMpCollectionAlbumArtManager::testAlbumArtCache()
   150 {
   149 {
   151     mTest->mImageCache.insert(0, new QIcon(mIcon));
   150     mTest->mImageCache.insert(0, new HbIcon(mIcon));
   152 
   151 
   153     const QIcon* icon = mTest->albumArt(0);
   152     const HbIcon icon = mTest->albumArt(0);
   154     // Verify that:
   153     // Verify that:
   155     // - A valid icon has been returned
   154     // - A valid icon has been returned
   156     // - No request has been sent to thumbnail manager
   155     // - No request has been sent to thumbnail manager
   157     QVERIFY(icon->isNull() == false);
   156     QVERIFY(icon.isNull() == false);
   158     QCOMPARE(mTest->mPendingRequest, false);
   157     QCOMPARE(mTest->mPendingRequest, false);
   159     QCOMPARE(mTest->mRequestQueue.count(), 0);
   158     QCOMPARE(mTest->mRequestQueue.count(), 0);
   160     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 0);
   159     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 0);
   161 }
   160 }
   162 
   161 
   164  Tests albumArt() request when item doesn't have AlbumArtUri.
   163  Tests albumArt() request when item doesn't have AlbumArtUri.
   165  */
   164  */
   166 void TestMpCollectionAlbumArtManager::testAlbumArtNoUri()
   165 void TestMpCollectionAlbumArtManager::testAlbumArtNoUri()
   167 {
   166 {
   168     mTest->mCollectionData->mItemDataReturn = false;
   167     mTest->mCollectionData->mItemDataReturn = false;
   169     const QIcon* icon = mTest->albumArt(0);
   168     const HbIcon icon = mTest->albumArt(0);
   170     // Verify that:
   169     // Verify that:
   171     // - It returned default icon
   170     // - It returned default icon
   172     // - There is no request pending from thumbnail manager
   171     // - There is no request pending from thumbnail manager
   173     QVERIFY(icon->isNull() == false);
   172     QVERIFY(icon.isNull() == false);
   174     QCOMPARE(mTest->mPendingRequest, false);
   173     QCOMPARE(mTest->mPendingRequest, false);
   175     QCOMPARE(mTest->mRequestQueue.count(), 0);
   174     QCOMPARE(mTest->mRequestQueue.count(), 0);
   176 }
   175 }
   177 
   176 
   178 /*!
   177 /*!
   179  Tests albumArt() request when thumbnail request fails.
   178  Tests albumArt() request when thumbnail request fails.
   180  */
   179  */
   181 void TestMpCollectionAlbumArtManager::testAlbumArtFail()
   180 void TestMpCollectionAlbumArtManager::testAlbumArtFail()
   182 {
   181 {
   183     mTest->mThumbnailManager->mGetThumbFails = true;
   182     mTest->mThumbnailManager->mGetThumbFails = true;
   184     const QIcon* icon = mTest->albumArt(0);
   183     const HbIcon icon = mTest->albumArt(0);
   185     // Verify that:
   184     // Verify that:
   186     // - It returned default icon
   185     // - It returned default icon
   187     // - There is no request pending from thumbnail manager
   186     // - There is no request pending from thumbnail manager
   188     QVERIFY(icon->isNull() == false);
   187     QVERIFY(icon.isNull() == false);
   189     QCOMPARE(mTest->mPendingRequest, false);
   188     QCOMPARE(mTest->mPendingRequest, false);
   190     QCOMPARE(mTest->mRequestQueue.count(), 0);
   189     QCOMPARE(mTest->mRequestQueue.count(), 0);
   191 }
   190 }
   192 
   191 
   193 /*!
   192 /*!
   219  Tests cacheFirstScreen() request with all items already in local cache.
   218  Tests cacheFirstScreen() request with all items already in local cache.
   220  */
   219  */
   221 void TestMpCollectionAlbumArtManager::testCacheFirstScreenAllCached()
   220 void TestMpCollectionAlbumArtManager::testCacheFirstScreenAllCached()
   222 {
   221 {
   223     mTest->mCollectionData->mCount = 3;
   222     mTest->mCollectionData->mCount = 3;
   224     mTest->mImageCache.insert(0, new QIcon(mIcon));
   223     mTest->mImageCache.insert(0, new HbIcon(mIcon));
   225     mTest->mImageCache.insert(1, new QIcon(mIcon));
   224     mTest->mImageCache.insert(1, new HbIcon(mIcon));
   226     mTest->mImageCache.insert(2, new QIcon(mIcon));
   225     mTest->mImageCache.insert(2, new HbIcon(mIcon));
   227     mTest->cacheFirstScreen();
   226     mTest->cacheFirstScreen();
   228     QCOMPARE(mTest->mPendingRequest, false);
   227     QCOMPARE(mTest->mPendingRequest, false);
   229     QCOMPARE(mTest->mRequestQueue.count(), 0);
   228     QCOMPARE(mTest->mRequestQueue.count(), 0);
   230     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 0);
   229     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 0);
   231 }
   230 }
   235  */
   234  */
   236 void TestMpCollectionAlbumArtManager::testCancel()
   235 void TestMpCollectionAlbumArtManager::testCancel()
   237 {
   236 {
   238     // First send enough requests to trigger requests to be queued.
   237     // First send enough requests to trigger requests to be queued.
   239     for ( int i = 0; i < 3; i++) {
   238     for ( int i = 0; i < 3; i++) {
   240         const QIcon* icon = mTest->albumArt(i);
   239         const HbIcon icon = mTest->albumArt(i);
   241         QVERIFY(icon->isNull() == false);
   240         QVERIFY(icon.isNull() == false);
   242     }
   241     }
   243     QCOMPARE(mTest->mPendingRequest, true);
   242     QCOMPARE(mTest->mPendingRequest, true);
   244     QCOMPARE(mTest->mRequestQueue.count(), 2);
   243     QCOMPARE(mTest->mRequestQueue.count(), 2);
   245     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 1);
   244     QCOMPARE(mTest->mThumbnailManager->mThumbnailReqCounter, 1);
   246 
   245 
   257  Tests setThumbnailSize().
   256  Tests setThumbnailSize().
   258  */
   257  */
   259 void TestMpCollectionAlbumArtManager::testSetThumbnailSize()
   258 void TestMpCollectionAlbumArtManager::testSetThumbnailSize()
   260 {
   259 {
   261     mTest->mThumbnailManager->mThumbSize = ThumbnailManager::ThumbnailUndefined;
   260     mTest->mThumbnailManager->mThumbSize = ThumbnailManager::ThumbnailUndefined;
   262     
   261 
   263     mTest->setThumbnailSize(MpCommon::ListThumb);
   262     mTest->setThumbnailSize(MpCommon::ListThumb);
   264     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailSmall);
   263     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailSmall);
   265     
   264 
   266     mTest->setThumbnailSize(MpCommon::TBoneThumb);
   265     mTest->setThumbnailSize(MpCommon::TBoneThumb);
   267     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailMedium); 
   266     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailMedium);
   268     
   267 
   269     mTest->setThumbnailSize(MpCommon::MediaWallThumb);
   268     mTest->setThumbnailSize(MpCommon::MediaWallThumb);
   270     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailLarge);
   269     QCOMPARE(mTest->mThumbnailManager->mThumbSize,  ThumbnailManager::ThumbnailLarge);
   271     
   270 
   272 }
   271 }
   273 
   272 
   274 /*!
   273 /*!
   275  Tests thumbnailReady() slot.
   274  Tests thumbnailReady() slot.
   276  Tests completion of cacheFirstScreen() request.
   275  Tests completion of cacheFirstScreen() request.
   291     // Emit thumbnailReady() signal for each request. Then verify that:
   290     // Emit thumbnailReady() signal for each request. Then verify that:
   292     // - Test object emitted signal albumArtReady() for 3 items
   291     // - Test object emitted signal albumArtReady() for 3 items
   293     // - 3 items are present in local cache
   292     // - 3 items are present in local cache
   294     for ( int i = 0; i < 3; i++ ) {
   293     for ( int i = 0; i < 3; i++ ) {
   295         void *clientData = reinterpret_cast<void *>(i);
   294         void *clientData = reinterpret_cast<void *>(i);
   296         emit thumbnailReady(mIcon.pixmap(50,50), clientData, i+1, 0);
   295         emit thumbnailReady(mIcon.pixmap(), clientData, i+1, 0);
   297     }
   296     }
   298 
   297 
   299     QCOMPARE(spy.count(), 3);
   298     QCOMPARE(spy.count(), 3);
   300     QCOMPARE(mTest->mCachingInProgress, false);
   299     QCOMPARE(mTest->mCachingInProgress, false);
   301     QCOMPARE(mTest->mPendingRequest, false);
   300     QCOMPARE(mTest->mPendingRequest, false);
   325     // Emit thumbnailReady() signal for each request with error. Then verify that:
   324     // Emit thumbnailReady() signal for each request with error. Then verify that:
   326     // - Test object doesn't emit signal albumArtReady()
   325     // - Test object doesn't emit signal albumArtReady()
   327     // - 0 item is present in local cache
   326     // - 0 item is present in local cache
   328     for ( int i = 0; i < 3; i++ ) {
   327     for ( int i = 0; i < 3; i++ ) {
   329         void *clientData = reinterpret_cast<void *>(i);
   328         void *clientData = reinterpret_cast<void *>(i);
   330         emit thumbnailReady(mIcon.pixmap(50,50), clientData, i+1, -1);
   329         emit thumbnailReady(mIcon.pixmap(), clientData, i+1, -1);
   331     }
   330     }
   332     QCOMPARE(spy.count(), 0);
   331     QCOMPARE(spy.count(), 0);
   333     QCOMPARE(mTest->mCachingInProgress, false);
   332     QCOMPARE(mTest->mCachingInProgress, false);
   334     QCOMPARE(mTest->mPendingRequest, false);
   333     QCOMPARE(mTest->mPendingRequest, false);
   335     QCOMPARE(mTest->mRequestQueue.count(), 0);
   334     QCOMPARE(mTest->mRequestQueue.count(), 0);
   348         mTest->mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)) );
   347         mTest->mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)) );
   349     QSignalSpy spy(mTest, SIGNAL(albumArtReady(int)));
   348     QSignalSpy spy(mTest, SIGNAL(albumArtReady(int)));
   350 
   349 
   351     // First send 3 albumArt() requests.
   350     // First send 3 albumArt() requests.
   352     for ( int i = 0; i < 3; i++) {
   351     for ( int i = 0; i < 3; i++) {
   353         const QIcon* icon = mTest->albumArt(i);
   352         const HbIcon icon = mTest->albumArt(i);
   354         QVERIFY(icon->isNull() == false);
   353         QVERIFY(icon.isNull() == false);
   355     }
   354     }
   356     QCOMPARE(mTest->mPendingRequest, true);
   355     QCOMPARE(mTest->mPendingRequest, true);
   357     QCOMPARE(mTest->mRequestQueue.count(), 2);
   356     QCOMPARE(mTest->mRequestQueue.count(), 2);
   358 
   357 
   359     // Emit thumbnailReady() signal for each request. Then verify that:
   358     // Emit thumbnailReady() signal for each request. Then verify that:
   360     // - Test object emitted signal albumArtReady() 3 times
   359     // - Test object emitted signal albumArtReady() 3 times
   361     // - 3 items are present in local cache
   360     // - 3 items are present in local cache
   362     for ( int i = 0; i < 3; i++ ) {
   361     for ( int i = 0; i < 3; i++ ) {
   363         void *clientData = reinterpret_cast<void *>(i);
   362         void *clientData = reinterpret_cast<void *>(i);
   364         emit thumbnailReady(mIcon.pixmap(50,50), clientData, i+1, 0);
   363         emit thumbnailReady(mIcon.pixmap(), clientData, i+1, 0);
   365     }
   364     }
   366     QCOMPARE(spy.count(), 3);
   365     QCOMPARE(spy.count(), 3);
   367     QCOMPARE(mTest->mPendingRequest, false);
   366     QCOMPARE(mTest->mPendingRequest, false);
   368     QCOMPARE(mTest->mRequestQueue.count(), 0);
   367     QCOMPARE(mTest->mRequestQueue.count(), 0);
   369     QCOMPARE(mTest->mImageCache.count(), 3);
   368     QCOMPARE(mTest->mImageCache.count(), 3);
   382         mTest->mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)) );
   381         mTest->mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)) );
   383     QSignalSpy spy(mTest, SIGNAL(albumArtReady(int)));
   382     QSignalSpy spy(mTest, SIGNAL(albumArtReady(int)));
   384 
   383 
   385     // First send 3 albumArt() requests.
   384     // First send 3 albumArt() requests.
   386     for ( int i = 0; i < 3; i++) {
   385     for ( int i = 0; i < 3; i++) {
   387         const QIcon* icon = mTest->albumArt(i);
   386         const HbIcon icon = mTest->albumArt(i);
   388         QVERIFY(icon->isNull() == false);
   387         QVERIFY(icon.isNull() == false);
   389     }
   388     }
   390     QCOMPARE(mTest->mPendingRequest, true);
   389     QCOMPARE(mTest->mPendingRequest, true);
   391     QCOMPARE(mTest->mRequestQueue.count(), 2);
   390     QCOMPARE(mTest->mRequestQueue.count(), 2);
   392 
   391 
   393     // Emit thumbnailReady() signal for each request with error. Then verify that:
   392     // Emit thumbnailReady() signal for each request with error. Then verify that:
   394     // - Test object doesn't emitted signal albumArtReady()
   393     // - Test object doesn't emitted signal albumArtReady()
   395     // - 0 items are present in local cache
   394     // - 0 items are present in local cache
   396     for ( int i = 0; i < 3; i++ ) {
   395     for ( int i = 0; i < 3; i++ ) {
   397         void *clientData = reinterpret_cast<void *>(i);
   396         void *clientData = reinterpret_cast<void *>(i);
   398         emit thumbnailReady(mIcon.pixmap(50,50), clientData, i+1, -1);
   397         emit thumbnailReady(mIcon.pixmap(), clientData, i+1, -1);
   399     }
   398     }
   400     QCOMPARE(spy.count(), 0);
   399     QCOMPARE(spy.count(), 0);
   401     QCOMPARE(mTest->mPendingRequest, false);
   400     QCOMPARE(mTest->mPendingRequest, false);
   402     QCOMPARE(mTest->mRequestQueue.count(), 0);
   401     QCOMPARE(mTest->mRequestQueue.count(), 0);
   403     QCOMPARE(mTest->mImageCache.count(), 0);
   402     QCOMPARE(mTest->mImageCache.count(), 0);