videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp
changeset 36 8aed59de29f9
parent 35 3738fe97f027
child 38 ff53afa8ad05
--- a/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp	Thu Apr 01 23:32:44 2010 +0300
+++ b/videocollection/videocollectionwrapper/tsrc/testvideomodel_p/src/testvideomodel_p.cpp	Fri Apr 16 18:13:14 2010 +0300
@@ -16,6 +16,8 @@
 */
 
 // INCLUDES
+#include <hbglobal.h>
+#include <hbextendedlocale.h>
 #include <mpxmediageneraldefs.h>
 #include <mpxmediaarray.h>
 #include <mpxmedia.h>
@@ -30,6 +32,7 @@
 #include "mediaobjectfactory.h"
 #include "videocollectioncommon.h"
 #include "videocollectionutils.h"
+#include "metadatasignalspy.h"
 
 #define private public
 #include "videolistdatamodel_p.h"
@@ -454,85 +457,6 @@
 }
 
 // -----------------------------------------------------------------------------
-// testGetMetaDataFromIndex
-// -----------------------------------------------------------------------------
-//
-void TestVideoModel_p::testGetMetaDataFromIndex()
-{
-    using namespace VideoCollectionCommon;
-    QMap<QString, QVariant> map = mTestObject->getMetaDataFromIndex(0);
-    QVERIFY(map.isEmpty());
-    map = mTestObject->getMetaDataFromIndex(-1);
-    QVERIFY(map.isEmpty());
-    
-    mMediaFactory->removeArray();
-    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));           
-    mMediaFactory->createMediaItems(MEDIA_COUNT);
-    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
-        
-    map = mTestObject->getMetaDataFromIndex(-1);
-    QVERIFY(map.isEmpty());
-    
-    map = mTestObject->getMetaDataFromIndex(-1);
-    QVERIFY(map.isEmpty());
-    
-    map = mTestObject->getMetaDataFromIndex(0);
-    
-    QVERIFY(map.contains(MetaKeyDate));
-    QVERIFY(map.contains(MetaKeyDurationString));
-    QVERIFY(map.contains(MetaKeySizeString));
-    QVERIFY(map.contains(MetaKeyStarRating));
-    QVERIFY(map.contains(MetaKeyDescription));
-    QVERIFY(map.contains(MetaKeyModifiedDate));
-    QVERIFY(map.contains(MetaKeyAuthor));
-    QVERIFY(map.contains(MetaKeyCopyright));
-    QVERIFY(map.contains(MetaKeyLanguageString));
-    QVERIFY(map.contains(MetaKeyFormat));
-    
-    // one or several of these will fail, when rest of the metadata is implemented.
-    QVERIFY(map.contains(MetaKeyDRMInfo) == false);
-    QVERIFY(map.contains(MetaKeyServiceURL) == false);
-    QVERIFY(map.contains(MetaKeyShotLocation) == false);
-    QVERIFY(map.contains(MetaKeyAudioType) == false);
-    QVERIFY(map.contains(MetaKeyKeywords) == false);
-    QVERIFY(map.contains(MetaKeyVideoResolutionString) == false);
-    QVERIFY(map.contains(MetaKeyBitRate) == false);
-    
-    QCOMPARE(map[MetaKeyDate].toDate(), QDate(2009, 1, 1));
-    QVERIFY(map[MetaKeyDurationString].toString().isEmpty() == false);
-    QVERIFY(map[MetaKeySizeString].toString().isEmpty() == false);
-    QCOMPARE(map[MetaKeyStarRating].toUInt(), (uint)1);
-    QCOMPARE(map[MetaKeyDescription].toString(), gQTMediaDescPrefix + "0");
-    QCOMPARE(map[MetaKeyModifiedDate].toDate(), QDate::currentDate().addDays(2));
-    QCOMPARE(map[MetaKeyAuthor].toString(), gQTMediaAuthorPrefix + "0");
-    QCOMPARE(map[MetaKeyCopyright].toString(), gQTMediaCopyrightPrefix + "0");
-    QCOMPARE(map[MetaKeyLanguageString].toString(), gQTMediaLanguagePrefix + "0");
-    QCOMPARE(map[MetaKeyFormat].toString(), gQTMediaFormatPrefix + "0");
-    
-    // data does not exist
-    mTestObject->mMediaData.clear();
-    mMediaFactory->removeArray();
-    mMediaFactory->createMediaItems(MEDIA_COUNT, MediaDataId);    
-    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
-    VideoCollectionUtils::mPrepareLengthStringReturnValue = "";
-    VideoCollectionUtils::mPrepareSizeStringReturnValue = "";
-    
-    map = mTestObject->getMetaDataFromIndex(-1);
-    QVERIFY(map.isEmpty());
-    
-    map = mTestObject->getMetaDataFromIndex(MEDIA_COUNT);
-    QVERIFY(map.isEmpty());
-    
-    map = mTestObject->getMetaDataFromIndex(0);
-    QCOMPARE(map.count(), 0); 
-    
-    map = mTestObject->getMetaDataFromIndex(MEDIA_COUNT - 1);
-    QCOMPARE(map.count(), 0);
-    
-    disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)));
-}
-
-// -----------------------------------------------------------------------------
 // testVideoMarkAndRestoreDeleted
 // -----------------------------------------------------------------------------
 //
@@ -657,7 +581,7 @@
     // data does not exist
     mTestObject->mMediaData.clear();
     mMediaFactory->removeArray();
-    mMediaFactory->createMediaItems(MEDIA_COUNT, MediaDataId);    
+    mMediaFactory->createMediaItems(MEDIA_COUNT, MediaDataId);
     emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
     
     path = mTestObject->getFilePathForId(TMPXItemId(0,0));
@@ -876,7 +800,7 @@
     VideoListDataModel::mLastInserted = -1;
     
     // append null
-   emit signalAppendVideoList(0);
+    emit signalAppendVideoList(0);
     QVERIFY(VideoListDataModel::mFirstInserted == -1);
     QVERIFY(VideoListDataModel::mLastInserted == -1);
     QVERIFY(mTestObject->getVideoCount() == 0);
@@ -1012,11 +936,54 @@
 }
 
 // -----------------------------------------------------------------------------
+// testItemModifiedSlot
+// -----------------------------------------------------------------------------
+//
+void TestVideoModel_p::testItemModifiedSlot()
+{
+    mMediaFactory->removeArray();
+
+    QVERIFY(connect(this, SIGNAL(signalItemModified(const TMPXItemId &)), mTestObject, SLOT(itemModifiedSlot(const TMPXItemId &))));  
+    
+    QSignalSpy spysignal(mTestObject, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)));
+
+    // invalid item id, no items
+    TMPXItemId id = TMPXItemId::InvalidId();
+    emit signalItemModified(id);
+    QVERIFY(spysignal.count() == 0);
+    
+    // invalid item id, model has items
+    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));           
+    mMediaFactory->createMediaItems(MEDIA_COUNT);
+    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
+
+    emit signalItemModified(id);
+    QVERIFY(spysignal.count() == 0);
+    
+    // ok item id, model has items
+    id = TMPXItemId(0, 0);
+    emit signalItemModified(id);
+    QVERIFY(spysignal.count() == 1);
+    spysignal.clear();
+    
+    // ok item id, model has items but returns invalid index
+    VideoListDataModel::mIndexReturnsInvalid = true;
+    id = TMPXItemId(0, 0);
+    emit signalItemModified(id);
+    QVERIFY(spysignal.count() == 0);
+    spysignal.clear();
+
+    disconnect(this, SIGNAL(signalItemModified(const TMPXItemId &)), mTestObject, SLOT(itemModifiedSlot(const TMPXItemId &)));    
+    VideoListDataModel::mIndexReturnsInvalid = false;
+}
+
+// -----------------------------------------------------------------------------
 // testNewVideoAvailableSlot
 // -----------------------------------------------------------------------------
 //
 void TestVideoModel_p::testNewVideoAvailableSlot()
 {
+    VideoListDataModel::mIndexReturnsInvalid = false;
     QVERIFY(mTestObject->initialize() == 0);
     
     connect(this, SIGNAL(signalNewVideoAvailable(CMPXMedia*)), mTestObject, SLOT(newVideoAvailableSlot(CMPXMedia*)));
@@ -1321,34 +1288,84 @@
 // testVideoDetailsCompletedSlot
 // -----------------------------------------------------------------------------
 //
-
 void TestVideoModel_p::testVideoDetailsCompletedSlot()
 {
+    using namespace VideoCollectionCommon;
+    
     mMediaFactory->removeArray();
-    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));  
-    QVERIFY(connect(this, SIGNAL(signalVideoDetailsCompleted(TMPXItemId)), mTestObject, SLOT(videoDetailsCompletedSlot(TMPXItemId))));      
+//    QVERIFY(connect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*))));  
+    QVERIFY(connect(this, SIGNAL(signalVideoDetailsCompleted(CMPXMedia*)), mTestObject, SLOT(videoDetailsCompletedSlot(CMPXMedia*))));      
+    
+    HbExtendedLocale locale = HbExtendedLocale::system();
+    
+    MetaDataSignalSpy spysignal(mTestObject, SIGNAL(videoDetailsReady(QVariant&)));
+    
+    // check with NULL media.
+    emit signalVideoDetailsCompleted(0);
+    QCOMPARE(spysignal.count, 0);
+    
+    // setup medias.
+    mMediaFactory->createMediaItems(2);
+    CMPXMedia* media = mMediaFactory->mediaArray()->operator [](0);
     
-    QSignalSpy spysignal(mTestObject, SIGNAL(videoDetailsReady(TMPXItemId)));
-
-    // no videos, id ok
-    emit signalVideoDetailsCompleted(TMPXItemId(0,0));
-    QVERIFY(spysignal.count() == 1);        
-    spysignal.clear();
+    // ok case
+    emit signalVideoDetailsCompleted(media);
+    QCOMPARE(spysignal.count, 1);
+    QMap<QString, QVariant> map = spysignal.arg.toMap();
+    
+    QVERIFY(map.contains(MetaKeyDate));
+    QVERIFY(map.contains(MetaKeyDurationString));
+    QVERIFY(map.contains(MetaKeySizeString));
+    QVERIFY(map.contains(MetaKeyStarRating));
+    QVERIFY(map.contains(MetaKeyDescription));
+    QVERIFY(map.contains(MetaKeyModifiedDate));
+    QVERIFY(map.contains(MetaKeyAuthor));
+    QVERIFY(map.contains(MetaKeyCopyright));
+    QVERIFY(map.contains(MetaKeyLanguageString));
+    QVERIFY(map.contains(MetaKeyFormat));
+    QVERIFY(map.contains(MetaKeyVideoResolutionString));
+    QVERIFY(map.contains(MetaKeyBitRate));
     
-    mMediaFactory->createMediaItems(MEDIA_COUNT);
-    emit signalNewVideoList(mMediaFactory->copyOfMediaArray());
+    // one or several of these will fail, when rest of the metadata is implemented.
+    QVERIFY(map.contains(MetaKeyDRMInfo) == false);
+    QVERIFY(map.contains(MetaKeyServiceURL) == false);
+    QVERIFY(map.contains(MetaKeyShotLocation) == false);
+    QVERIFY(map.contains(MetaKeyAudioType) == false);
+    QVERIFY(map.contains(MetaKeyKeywords) == false);
     
-    // invalid id
-    emit signalVideoDetailsCompleted(TMPXItemId::InvalidId());
-    QVERIFY(spysignal.count() == 0); 
+    QCOMPARE(map[MetaKeyDate].toString(), locale.format(QDate(2009, 1, 1), r_qtn_date_usual));
+    QVERIFY(map[MetaKeyDurationString].toString().isEmpty() == false);
+    QVERIFY(map[MetaKeySizeString].toString().isEmpty() == false);
+    QCOMPARE(map[MetaKeyStarRating].toUInt(), (uint)1);
+    QCOMPARE(map[MetaKeyDescription].toString(), gQTMediaDescPrefix + "0");
+    QCOMPARE(map[MetaKeyModifiedDate].toString(), locale.format(QDate::currentDate().addDays(2), r_qtn_date_usual));
+    QCOMPARE(map[MetaKeyAuthor].toString(), gQTMediaAuthorPrefix + "0");
+    QCOMPARE(map[MetaKeyCopyright].toString(), gQTMediaCopyrightPrefix + "0");
+    QCOMPARE(map[MetaKeyLanguageString].toString(), gQTMediaLanguagePrefix + "0");
+    QCOMPARE(map[MetaKeyFormat].toString(), gQTMediaFormatPrefix + "0");
+    QCOMPARE(map[MetaKeyVideoResolutionString].toString(), hbTrId("txt_videos_list_l1l2").arg(1).arg(2));
+    QCOMPARE(map[MetaKeyBitRate].toString(), hbTrId("txt_videos_list_l1_kbps", 800));
     
-    // correct ids
-    emit signalVideoDetailsCompleted(TMPXItemId(0,0));
-    QVERIFY(spysignal.count() == 1); 
-    QVERIFY(spysignal.value(0).at(0).toInt() == 0);
+    // Mbps case
+    media = mMediaFactory->mediaArray()->operator [](1);
+    emit signalVideoDetailsCompleted(media);
+    QCOMPARE(spysignal.count, 2);
+    map = spysignal.arg.toMap();    
+    QVERIFY(map.contains(MetaKeyBitRate));
+    QCOMPARE(map[MetaKeyBitRate].toString(), hbTrId("txt_videos_list_l1_mbps", 2));
+    
+    // empty media case
     spysignal.clear();
-    emit signalVideoDetailsCompleted(TMPXItemId(MEDIA_COUNT - 1,0));
-    QVERIFY(spysignal.count() == 1); 
+    mMediaFactory->removeArray();
+    mMediaFactory->createMediaItems(1, MediaDataId);
+    CMPXMedia* emptyMedia = mMediaFactory->mediaArray()->operator [](0);
+    
+    emit signalVideoDetailsCompleted(emptyMedia);
+    QCOMPARE(spysignal.count, 1);
+    map = spysignal.arg.toMap();
+    QCOMPARE(map.count(), 2);
+    QVERIFY(map.contains(MetaKeyDurationString));
+    QVERIFY(map.contains(MetaKeySizeString));
     
     disconnect(this, SIGNAL(signalNewVideoList(CMPXMediaArray*)), mTestObject, SLOT(newVideoListSlot(CMPXMediaArray*)));  
     disconnect(this, SIGNAL(signalVideoDetailsCompleted(TMPXItemId)), mTestObject, SLOT(videoDetailsCompletedSlot(TMPXItemId)));