mpdata/tsrc/unittest_mpcollectiondatamodel/src/unittest_mpcollectiondatamodel.cpp
changeset 29 8192e5b5c935
parent 22 ecf06a08d4d9
child 51 560ce2306a17
equal deleted inserted replaced
25:3ec52facab4d 29:8192e5b5c935
    34 // Do this so we can access all member variables.
    34 // Do this so we can access all member variables.
    35 #define private public
    35 #define private public
    36 #include "mpcollectiondatamodel.h"
    36 #include "mpcollectiondatamodel.h"
    37 #undef private
    37 #undef private
    38 
    38 
    39 // Init cache size defined in mpcollectiondatamodel.cpp
       
    40 const int KInitCacheSize = 11;
       
    41 
       
    42 /*!
    39 /*!
    43  Make our test case a stand-alone executable that runs all the test functions.
    40  Make our test case a stand-alone executable that runs all the test functions.
    44  */
    41  */
    45 int main(int argc, char *argv[])
    42 int main(int argc, char *argv[])
    46 {
    43 {
    47     HbApplication app(argc, argv);
    44     HbApplication app(argc, argv);
    48     HbMainWindow window;
       
    49 
       
    50     TestMpCollectionDataModel tv;
    45     TestMpCollectionDataModel tv;
    51 
    46 
    52     char *pass[3];
    47     char *pass[3];
    53     pass[0] = argv[0];
    48     pass[0] = argv[0];
    54     pass[1] = "-o";
    49     pass[1] = "-o";
   111 void TestMpCollectionDataModel::init()
   106 void TestMpCollectionDataModel::init()
   112 {
   107 {
   113     mTest = new MpCollectionDataModel(mStubData);
   108     mTest = new MpCollectionDataModel(mStubData);
   114     MpMpxCollectionData::resetItemDataCounter();
   109     MpMpxCollectionData::resetItemDataCounter();
   115     mTest->mCollectionData->mItemDataReturn = true;
   110     mTest->mCollectionData->mItemDataReturn = true;
       
   111     mTest->mCollectionData->mCollectionTitleReturn = true;
   116 }
   112 }
   117 
   113 
   118 /*!
   114 /*!
   119  Called after every testfunction.
   115  Called after every testfunction.
   120  */
   116  */
   148     mTest->refreshModel();
   144     mTest->refreshModel();
   149     // Verify that:
   145     // Verify that:
   150     // - It sets correct row count
   146     // - It sets correct row count
   151     QCOMPARE(mTest->mRowCount, 100);
   147     QCOMPARE(mTest->mRowCount, 100);
   152     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 1);
   148     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 1);
   153     // Stub QAbstractListModel to verify call to reset()
   149 
   154     mTest->mCollectionData->mCount = 100;
   150     mTest->mCollectionData->mCount = 50;
   155     mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
   151     mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
   156     mTest->refreshModel();
   152     mTest->refreshModel();
   157     // Verify that:
   153     // Verify that:
   158     // - It sets correct row count
   154     // - It sets correct row count
   159     QCOMPARE(mTest->mRowCount, 100);
   155     QCOMPARE(mTest->mRowCount, 50);
   160     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 2);
   156     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 2);
   161 }
   157     
   162 
   158     mTest->mCollectionData->mCount = 150;
   163 /*!
   159     mTest->mCollectionData->mContext = ECollectionContextAlbumsMediaWall;
   164  Tests refreshModel() request with empty data model.
       
   165  */
       
   166 void TestMpCollectionDataModel::testRefreshModelZeroCount()
       
   167 {
       
   168     mTest->mCollectionData->mCount = 0;
       
   169     mTest->refreshModel();
   160     mTest->refreshModel();
   170     // Verify that:
   161     // Verify that:
   171     // - It sets correct row count
   162     // - It sets correct row count
   172     QCOMPARE(mTest->mRowCount, 0);
   163     QCOMPARE(mTest->mRowCount, 150);
       
   164     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 3);
       
   165 
       
   166 
       
   167     mTest->mCollectionData->mCount = 200;
       
   168     mTest->mCollectionData->mContext = ECollectionContextAllSongs;
       
   169     mTest->refreshModel();
       
   170     // Verify that:
       
   171     // - It sets correct row count
       
   172     // - It shouldn't trigger first screen cache
       
   173     QCOMPARE(mTest->mRowCount, 200);
       
   174     QCOMPARE(mTest->mAlbumArtManager->mCacheAlbumArtCount, 3);
   173 }
   175 }
   174 
   176 
   175 /*!
   177 /*!
   176  Tests collectionData() request.
   178  Tests collectionData() request.
   177  */
   179  */
   194     // Qt::DisplayRole
   196     // Qt::DisplayRole
   195     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   197     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   196     QCOMPARE(data.canConvert(QVariant::StringList), true);
   198     QCOMPARE(data.canConvert(QVariant::StringList), true);
   197     QStringList dataList = data.toStringList();
   199     QStringList dataList = data.toStringList();
   198     QCOMPARE(dataList.count(), 2);
   200     QCOMPARE(dataList.count(), 2);
   199     QCOMPARE(dataList.at(0), QString("Title"));
   201     QCOMPARE(dataList.at(0), QString("Title1"));
   200     QCOMPARE(dataList.at(1), QString("Artist"));
   202     QCOMPARE(dataList.at(1), QString("Artist1"));
   201 
   203 
   202     // Qt::DecorationRole
   204     // Qt::DecorationRole
   203     data = mTest->data(modelIndex, Qt::DecorationRole);
   205     data = mTest->data(modelIndex, Qt::DecorationRole);
   204     QCOMPARE(data.isNull(), true);
   206     QCOMPARE(data.isNull(), true);
   205     
   207 
   206     // Hb::IndexFeedbackRole
   208     // Hb::IndexFeedbackRole
   207     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   209     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   208     QCOMPARE(data.toString(), QString("Title"));
   210     QCOMPARE(data.toString(), QString("Title1"));
   209     
       
   210     
       
   211 }
   211 }
   212 
   212 
   213 /*!
   213 /*!
   214  Tests data() request for AllSongs context with no data available.
   214  Tests data() request for AllSongs context with no data available.
   215  */
   215  */
   216 void TestMpCollectionDataModel::testDataAllSongsNoData()
   216 void TestMpCollectionDataModel::testDataAllSongsNoData()
   217 {
   217 {
   218     mTest->mCollectionData->mCount = 100;
   218     mTest->mCollectionData->mCount = 100;
   219     mTest->mRowCount = 100;
   219     mTest->mRowCount = 100;
       
   220     mTest->mCollectionData->mItemDataReturn = false;
   220     mTest->mCollectionData->mContext = ECollectionContextAllSongs;
   221     mTest->mCollectionData->mContext = ECollectionContextAllSongs;
   221     mTest->mCollectionData->mItemDataReturn = false;
       
   222 
   222 
   223     QModelIndex modelIndex = mHelper->indexFor(1);
   223     QModelIndex modelIndex = mHelper->indexFor(1);
   224 
   224 
   225     // Qt::DisplayRole
   225     // Qt::DisplayRole
   226     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   226     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   231     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   231     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   232 
   232 
   233     // Qt::DecorationRole
   233     // Qt::DecorationRole
   234     data = mTest->data(modelIndex, Qt::DecorationRole);
   234     data = mTest->data(modelIndex, Qt::DecorationRole);
   235     QCOMPARE(data.isNull(), true);
   235     QCOMPARE(data.isNull(), true);
   236     
   236 
   237     // Hb::IndexFeedbackRole
   237     // Hb::IndexFeedbackRole
   238     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   238     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   239     QCOMPARE(data.toString(), QString(""));
   239     QCOMPARE(data.toString(), QString(""));
   240 }
   240 }
   241 
   241 
   253     // Qt::DisplayRole
   253     // Qt::DisplayRole
   254     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   254     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   255     QCOMPARE(data.canConvert(QVariant::StringList), true);
   255     QCOMPARE(data.canConvert(QVariant::StringList), true);
   256     QStringList dataList = data.toStringList();
   256     QStringList dataList = data.toStringList();
   257     QCOMPARE(dataList.count(), 1);
   257     QCOMPARE(dataList.count(), 1);
   258     QCOMPARE(dataList.at(0), QString("Title"));
   258     QCOMPARE(dataList.at(0), QString("Title1"));
   259 
   259 
   260     // Qt::DecorationRole
   260     // Qt::DecorationRole
   261     data = mTest->data(modelIndex, Qt::DecorationRole);
   261     data = mTest->data(modelIndex, Qt::DecorationRole);
   262     QCOMPARE(data.isNull(), true);
   262     QCOMPARE(data.isNull(), true);
   263         
   263 
   264     // Hb::IndexFeedbackRole
   264     // Hb::IndexFeedbackRole
   265     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   265     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   266     QCOMPARE(data.toString(), QString("Title"));
   266     QCOMPARE(data.toString(), QString("Title1"));
   267 }
   267 }
   268 
   268 
   269 /*!
   269 /*!
   270  Tests data() request for Artists context with no data available.
   270  Tests data() request for Artists context with no data available.
   271  */
   271  */
   272 void TestMpCollectionDataModel::testDataArtistsNoData()
   272 void TestMpCollectionDataModel::testDataArtistsNoData()
   273 {
   273 {
   274     mTest->mCollectionData->mCount = 100;
   274     mTest->mCollectionData->mCount = 100;
   275     mTest->mRowCount = 100;
   275     mTest->mRowCount = 100;
       
   276     mTest->mCollectionData->mItemDataReturn = false;
   276     mTest->mCollectionData->mContext = ECollectionContextArtists;
   277     mTest->mCollectionData->mContext = ECollectionContextArtists;
   277     mTest->mCollectionData->mItemDataReturn = false;
       
   278 
   278 
   279     QModelIndex modelIndex = mHelper->indexFor(1);
   279     QModelIndex modelIndex = mHelper->indexFor(1);
   280 
   280 
   281     // Qt::DisplayRole
   281     // Qt::DisplayRole
   282     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   282     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   283     QCOMPARE(data.canConvert(QVariant::StringList), true);
   283     QCOMPARE(data.canConvert(QVariant::StringList), true);
   284     QStringList dataList = data.toStringList();
   284     QStringList dataList = data.toStringList();
   285     QCOMPARE(dataList.count(), 1);
   285     QCOMPARE(dataList.count(), 1);
   286     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   286     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   287     
   287 
   288 
   288 
   289     // Qt::DecorationRole
   289     // Qt::DecorationRole
   290     data = mTest->data(modelIndex, Qt::DecorationRole);
   290     data = mTest->data(modelIndex, Qt::DecorationRole);
   291     QCOMPARE(data.isNull(), true);
   291     QCOMPARE(data.isNull(), true);
   292         
   292 
   293     // Hb::IndexFeedbackRole
   293     // Hb::IndexFeedbackRole
   294     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   294     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   295     QCOMPARE(data.toString(), QString(""));
   295     QCOMPARE(data.toString(), QString(""));
   296 }
   296 }
   297 
   297 
   298 /*!
   298 /*!
   299  Tests data() request for Artist Albums context.
   299  Tests data() request for ArtistAlbums context.
   300  */
   300  */
   301 void TestMpCollectionDataModel::testDataArtistAlbums()
   301 void TestMpCollectionDataModel::testDataArtistAlbums()
   302 {
   302 {
   303     mTest->mCollectionData->mCount = 100;
   303     mTest->mCollectionData->mCount = 100;
   304     mTest->mRowCount = 100;
   304     mTest->mRowCount = 100;
   309     // Qt::DisplayRole
   309     // Qt::DisplayRole
   310     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   310     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   311     QCOMPARE(data.canConvert(QVariant::StringList), true);
   311     QCOMPARE(data.canConvert(QVariant::StringList), true);
   312     QStringList dataList = data.toStringList();
   312     QStringList dataList = data.toStringList();
   313     QCOMPARE(dataList.count(), 1);
   313     QCOMPARE(dataList.count(), 1);
   314     QCOMPARE(dataList.at(0), QString("Title"));
   314     QCOMPARE(dataList.at(0), QString("Title1"));
   315 
   315 
   316     // Qt::DecorationRole
   316     // Qt::DecorationRole
   317     data = mTest->data(modelIndex, Qt::DecorationRole);
   317     data = mTest->data(modelIndex, Qt::DecorationRole);
   318     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   318     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   319         
   319 
   320     // Hb::IndexFeedbackRole
   320     // Hb::IndexFeedbackRole
   321     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   321     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   322     QCOMPARE(data.toString(), QString("Title"));
   322     QCOMPARE(data.toString(), QString("Title1"));
   323 }
   323 }
   324 
   324 
   325 /*!
   325 /*!
   326  Tests data() request for Artist Albums context with no data available.
   326  Tests data() request for ArtistAlbums context with no data available.
   327  */
   327  */
   328 void TestMpCollectionDataModel::testDataArtistAlbumsNoData()
   328 void TestMpCollectionDataModel::testDataArtistAlbumsNoData()
   329 {
   329 {
   330     mTest->mCollectionData->mCount = 100;
   330     mTest->mCollectionData->mCount = 100;
   331     mTest->mRowCount = 100;
   331     mTest->mRowCount = 100;
       
   332     mTest->mCollectionData->mItemDataReturn = false;
   332     mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
   333     mTest->mCollectionData->mContext = ECollectionContextArtistAlbums;
   333     mTest->mCollectionData->mItemDataReturn = false;
       
   334 
   334 
   335     QModelIndex modelIndex = mHelper->indexFor(1);
   335     QModelIndex modelIndex = mHelper->indexFor(1);
   336 
   336 
   337     // Qt::DisplayRole
   337     // Qt::DisplayRole
   338     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   338     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   339     QCOMPARE(data.canConvert(QVariant::StringList), true);
   339     QCOMPARE(data.canConvert(QVariant::StringList), true);
   340     QStringList dataList = data.toStringList();
   340     QStringList dataList = data.toStringList();
   341     QCOMPARE(dataList.count(), 1);
   341     QCOMPARE(dataList.count(), 1);
   342     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   342     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   343     
   343 
   344 
   344 
   345     // Qt::DecorationRole
   345     // Qt::DecorationRole
   346     data = mTest->data(modelIndex, Qt::DecorationRole);
   346     data = mTest->data(modelIndex, Qt::DecorationRole);
   347     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   347     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   348         
   348 
   349     // Hb::IndexFeedbackRole
   349     // Hb::IndexFeedbackRole
   350     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   350     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   351     QCOMPARE(data.toString(), QString(""));
   351     QCOMPARE(data.toString(), QString(""));
   352 }
   352 }
   353 
   353 
   354 /*!
   354 /*!
   355  Tests data() request for Artist Songs context.
   355  Tests data() request for ArtistAlbumsTBone context.
   356  */
   356  */
   357 void TestMpCollectionDataModel::testDataArtistSongs()
   357 void TestMpCollectionDataModel::testDataArtistAlbumsTBone()
   358 {
   358 {
   359     mTest->mCollectionData->mCount = 100;
   359     mTest->mCollectionData->mCount = 100;
   360     mTest->mRowCount = 100;
   360     mTest->mRowCount = 100;
   361     mTest->mCollectionData->mContext = ECollectionContextArtistSongs;
   361     mTest->mCollectionData->mContext = ECollectionContextArtistAlbumsTBone;
   362 
   362 
   363     QModelIndex modelIndex = mHelper->indexFor(1);
   363     QModelIndex modelIndex = mHelper->indexFor(1);
   364 
   364 
   365     // Qt::DisplayRole
   365     // Qt::DisplayRole
   366     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   366     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   367     QCOMPARE(data.canConvert(QVariant::StringList), true);
   367     QCOMPARE(data.canConvert(QVariant::StringList), true);
   368     QStringList dataList = data.toStringList();
   368     QStringList dataList = data.toStringList();
   369     QCOMPARE(dataList.count(), 2);
   369     QCOMPARE(dataList.count(), 2);
   370     QCOMPARE(dataList.at(0), QString("Title"));
   370     QCOMPARE(dataList.at(0), QString("Title1"));
   371     QCOMPARE(dataList.at(1), QString("Album"));
   371     QCOMPARE(dataList.at(1), QString("CollectionTitle"));
       
   372 
       
   373     // Qt::DecorationRole
       
   374     data = mTest->data(modelIndex, Qt::DecorationRole);
       
   375     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
       
   376 }
       
   377 
       
   378 /*!
       
   379  Tests data() request for ArtistAlbumsTBone context with no data available.
       
   380  */
       
   381 void TestMpCollectionDataModel::testDataArtistAlbumsTBoneNoData()
       
   382 {
       
   383     mTest->mCollectionData->mCount = 100;
       
   384     mTest->mRowCount = 100;
       
   385     mTest->mCollectionData->mItemDataReturn = false;
       
   386     mTest->mCollectionData->mCollectionTitleReturn = false;
       
   387     mTest->mCollectionData->mContext = ECollectionContextArtistAlbumsTBone;
       
   388 
       
   389     QModelIndex modelIndex = mHelper->indexFor(1);
       
   390 
       
   391     // Qt::DisplayRole
       
   392     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   393     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   394     QStringList dataList = data.toStringList();
       
   395     QCOMPARE(dataList.count(), 2);
       
   396     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
       
   397     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
       
   398 
       
   399     // Qt::DecorationRole
       
   400     data = mTest->data(modelIndex, Qt::DecorationRole);
       
   401     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
       
   402 }
       
   403 
       
   404 /*!
       
   405  Tests data() request for ArtistAllSongs context.
       
   406  */
       
   407 void TestMpCollectionDataModel::testDataArtistAllSongs()
       
   408 {
       
   409     mTest->mCollectionData->mCount = 100;
       
   410     mTest->mRowCount = 100;
       
   411     mTest->mCollectionData->mContext = ECollectionContextArtistAllSongs;
       
   412 
       
   413     QModelIndex modelIndex = mHelper->indexFor(1);
       
   414 
       
   415     // Qt::DisplayRole
       
   416     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   417     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   418     QStringList dataList = data.toStringList();
       
   419     QCOMPARE(dataList.count(), 2);
       
   420     QCOMPARE(dataList.at(0), QString("Title1"));
       
   421     QCOMPARE(dataList.at(1), QString("Album1"));
   372 
   422 
   373     // Qt::DecorationRole
   423     // Qt::DecorationRole
   374     data = mTest->data(modelIndex, Qt::DecorationRole);
   424     data = mTest->data(modelIndex, Qt::DecorationRole);
   375     QCOMPARE(data.isNull(), true);
   425     QCOMPARE(data.isNull(), true);
   376         
   426 
   377     // Hb::IndexFeedbackRole
   427     // Hb::IndexFeedbackRole
   378     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   428     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   379     QCOMPARE(data.toString(), QString("Title"));
   429     QCOMPARE(data.toString(), QString("Title1"));
   380 }
   430 }
   381 
   431 
   382 /*!
   432 /*!
   383  Tests data() request for Artists context with no data available.
   433  Tests data() request for ArtistAllSongs context with no data available.
   384  */
   434  */
   385 void TestMpCollectionDataModel::testDataArtistSongsNoData()
   435 void TestMpCollectionDataModel::testDataArtistAllSongsNoData()
   386 {
   436 {
   387     mTest->mCollectionData->mCount = 100;
   437     mTest->mCollectionData->mCount = 100;
   388     mTest->mRowCount = 100;
   438     mTest->mRowCount = 100;
   389     mTest->mCollectionData->mContext = ECollectionContextArtistSongs;
   439     mTest->mCollectionData->mContext = ECollectionContextArtistAllSongs;
   390     mTest->mCollectionData->mItemDataReturn = false;
   440     mTest->mCollectionData->mItemDataReturn = false;
   391 
   441 
   392     QModelIndex modelIndex = mHelper->indexFor(1);
   442     QModelIndex modelIndex = mHelper->indexFor(1);
   393 
   443 
   394     // Qt::DisplayRole
   444     // Qt::DisplayRole
   395     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   445     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   396     QCOMPARE(data.canConvert(QVariant::StringList), true);
   446     QCOMPARE(data.canConvert(QVariant::StringList), true);
   397     QStringList dataList = data.toStringList();
   447     QStringList dataList = data.toStringList();
   398     QCOMPARE(dataList.count(), 2);
   448     QCOMPARE(dataList.count(), 2);
   399     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   449     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   400     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
   450     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown3"));
   401     
   451 
   402 
   452 
   403     // Qt::DecorationRole
   453     // Qt::DecorationRole
   404     data = mTest->data(modelIndex, Qt::DecorationRole);
   454     data = mTest->data(modelIndex, Qt::DecorationRole);
   405     QCOMPARE(data.isNull(), true);
   455     QCOMPARE(data.isNull(), true);
   406         
   456 
   407     // Hb::IndexFeedbackRole
   457     // Hb::IndexFeedbackRole
   408     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   458     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   409     QCOMPARE(data.toString(), QString(""));
   459     QCOMPARE(data.toString(), QString(""));
   410 }
   460 }
   411 
   461 
   412 
       
   413 /*!
   462 /*!
   414  Tests data() request for Albums context.
   463  Tests data() request for Albums context.
   415  */
   464  */
   416 void TestMpCollectionDataModel::testDataAlbums()
   465 void TestMpCollectionDataModel::testDataAlbums()
   417 {
   466 {
   424     // Qt::DisplayRole
   473     // Qt::DisplayRole
   425     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   474     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   426     QCOMPARE(data.canConvert(QVariant::StringList), true);
   475     QCOMPARE(data.canConvert(QVariant::StringList), true);
   427     QStringList dataList = data.toStringList();
   476     QStringList dataList = data.toStringList();
   428     QCOMPARE(dataList.count(), 2);
   477     QCOMPARE(dataList.count(), 2);
   429     QCOMPARE(dataList.at(0), QString("Title"));
   478     QCOMPARE(dataList.at(0), QString("Title1"));
   430     QCOMPARE(dataList.at(1), QString("Artist"));
   479     QCOMPARE(dataList.at(1), QString("Artist1"));
   431 
   480 
   432     // Qt::DecorationRole
   481     // Qt::DecorationRole
   433     data = mTest->data(modelIndex, Qt::DecorationRole);
   482     data = mTest->data(modelIndex, Qt::DecorationRole);
   434     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   483     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   435         
   484 
   436     // Hb::IndexFeedbackRole
   485     // Hb::IndexFeedbackRole
   437     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   486     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   438     QCOMPARE(data.toString(), QString("Title"));
   487     QCOMPARE(data.toString(), QString("Title1"));
   439 }
   488 }
   440 
   489 
   441 /*!
   490 /*!
   442  Tests data() request for Albums context with no data available.
   491  Tests data() request for Albums context with no data available.
   443  */
   492  */
   459     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   508     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   460 
   509 
   461     // Qt::DecorationRole
   510     // Qt::DecorationRole
   462     data = mTest->data(modelIndex, Qt::DecorationRole);
   511     data = mTest->data(modelIndex, Qt::DecorationRole);
   463     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   512     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
   464         
   513 
   465     // Hb::IndexFeedbackRole
   514     // Hb::IndexFeedbackRole
   466     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   515     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   467     QCOMPARE(data.toString(), QString(""));
   516     QCOMPARE(data.toString(), QString(""));
   468 }
   517 }
   469 
   518 
   470 /*!
   519 /*!
   471  Tests data() request for AlbumSongs context.
   520  Tests data() request for AlbumsTBone context.
   472  */
   521  */
   473 void TestMpCollectionDataModel::testDataAlbumSongs()
   522 void TestMpCollectionDataModel::testDataAlbumsTBone()
   474 {
   523 {
   475     mTest->mCollectionData->mCount = 100;
   524     mTest->mCollectionData->mCount = 100;
   476     mTest->mRowCount = 100;
   525     mTest->mRowCount = 100;
   477     mTest->mCollectionData->mContext = ECollectionContextAlbumSongs;
   526     mTest->mCollectionData->mContext = ECollectionContextAlbumsTBone;
       
   527 
       
   528     QModelIndex modelIndex = mHelper->indexFor(1);
       
   529 
       
   530     // Qt::DisplayRole
       
   531     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   532     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   533     QStringList dataList = data.toStringList();
       
   534     QCOMPARE(dataList.count(), 2);
       
   535     QCOMPARE(dataList.at(0), QString("Title1"));
       
   536     QCOMPARE(dataList.at(1), QString("Artist1"));
       
   537 
       
   538     // Qt::DecorationRole
       
   539     data = mTest->data(modelIndex, Qt::DecorationRole);
       
   540     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
       
   541 
       
   542     // Hb::IndexFeedbackRole
       
   543     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
       
   544     QCOMPARE(data.toString(), QString("Title1"));
       
   545 }
       
   546 
       
   547 /*!
       
   548  Tests data() request for AlbumsTBone context with no data available.
       
   549  */
       
   550 void TestMpCollectionDataModel::testDataAlbumsTBoneNoData()
       
   551 {
       
   552     mTest->mCollectionData->mCount = 100;
       
   553     mTest->mRowCount = 100;
       
   554     mTest->mCollectionData->mContext = ECollectionContextAlbumsTBone;
       
   555     mTest->mCollectionData->mItemDataReturn = false;
       
   556 
       
   557     QModelIndex modelIndex = mHelper->indexFor(1);
       
   558 
       
   559     // Qt::DisplayRole
       
   560     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   561     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   562     QStringList dataList = data.toStringList();
       
   563     QCOMPARE(dataList.count(), 2);
       
   564     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
       
   565     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
       
   566 
       
   567     // Qt::DecorationRole
       
   568     data = mTest->data(modelIndex, Qt::DecorationRole);
       
   569     QCOMPARE(data.userType(), QMetaType::type("QIcon"));
       
   570 
       
   571     // Hb::IndexFeedbackRole
       
   572     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
       
   573     QCOMPARE(data.toString(), QString(""));
       
   574 }
       
   575 
       
   576 /*!
       
   577  Tests data() request for Playlists context.
       
   578  */
       
   579 void TestMpCollectionDataModel::testDataPlaylists()
       
   580 {
       
   581     mTest->mCollectionData->mCount = 100;
       
   582     mTest->mRowCount = 100;
       
   583     mTest->mCollectionData->mContext = ECollectionContextPlaylists;
   478 
   584 
   479     QModelIndex modelIndex = mHelper->indexFor(1);
   585     QModelIndex modelIndex = mHelper->indexFor(1);
   480 
   586 
   481     // Qt::DisplayRole
   587     // Qt::DisplayRole
   482     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   588     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   483     QCOMPARE(data.canConvert(QVariant::StringList), true);
   589     QCOMPARE(data.canConvert(QVariant::StringList), true);
   484     QStringList dataList = data.toStringList();
   590     QStringList dataList = data.toStringList();
   485     QCOMPARE(dataList.count(), 1);
   591     QCOMPARE(dataList.count(), 1);
   486     QCOMPARE(dataList.at(0), QString("Title"));
   592     QCOMPARE(dataList.at(0), QString("Title1"));
   487 
   593 
   488     // Qt::DecorationRole
   594     // Qt::DecorationRole
   489     data = mTest->data(modelIndex, Qt::DecorationRole);
   595     data = mTest->data(modelIndex, Qt::DecorationRole);
   490     QCOMPARE(data.isNull(), true);
   596     QCOMPARE(data.isNull(), true);
   491     
   597 
   492     // Hb::IndexFeedbackRole
   598     // Hb::IndexFeedbackRole
   493     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   599     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   494     QCOMPARE(data.toString(), QString("Title"));
   600     QCOMPARE(data.toString(), QString("Title1"));
   495 }
   601 }
   496 
   602 
   497 /*!
   603 /*!
   498  Tests data() request for AlbumSongs context with no data available.
   604  Tests data() request for Playlists context with no data available.
   499  */
   605  */
   500 void TestMpCollectionDataModel::testDataAlbumSongsNoData()
   606 void TestMpCollectionDataModel::testDataPlaylistsNoData()
   501 {
   607 {
   502     mTest->mCollectionData->mCount = 100;
   608     mTest->mCollectionData->mCount = 100;
   503     mTest->mRowCount = 100;
   609     mTest->mRowCount = 100;
   504     mTest->mCollectionData->mContext = ECollectionContextAlbumSongs;
   610     mTest->mCollectionData->mContext = ECollectionContextPlaylists;
   505     mTest->mCollectionData->mItemDataReturn = false;
   611     mTest->mCollectionData->mItemDataReturn = false;
   506 
   612 
   507     QModelIndex modelIndex = mHelper->indexFor(1);
   613     QModelIndex modelIndex = mHelper->indexFor(1);
   508 
   614 
   509     // Qt::DisplayRole
   615     // Qt::DisplayRole
   517     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   623     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   518     QCOMPARE(data.toString(), QString(""));
   624     QCOMPARE(data.toString(), QString(""));
   519 }
   625 }
   520 
   626 
   521 /*!
   627 /*!
   522  Tests data() request for Playlists context.
   628  Tests data() request for PlaylistSongs context.
   523  */
   629  */
   524 void TestMpCollectionDataModel::testDataPlaylists()
   630 void TestMpCollectionDataModel::testDataPlaylistSongs()
   525 {
   631 {
   526     mTest->mCollectionData->mCount = 100;
   632     mTest->mCollectionData->mCount = 100;
   527     mTest->mRowCount = 100;
   633     mTest->mRowCount = 100;
   528     mTest->mCollectionData->mContext = ECollectionContextPlaylists;
   634     mTest->mCollectionData->mContext = ECollectionContextPlaylistSongs;
   529 
   635 
   530     QModelIndex modelIndex = mHelper->indexFor(1);
   636     QModelIndex modelIndex = mHelper->indexFor(1);
   531 
   637 
   532     // Qt::DisplayRole
   638     // Qt::DisplayRole
   533     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   639     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
   534     QCOMPARE(data.canConvert(QVariant::StringList), true);
   640     QCOMPARE(data.canConvert(QVariant::StringList), true);
   535     QStringList dataList = data.toStringList();
   641     QStringList dataList = data.toStringList();
   536     QCOMPARE(dataList.count(), 1);
   642     QCOMPARE(dataList.count(), 2);
   537     QCOMPARE(dataList.at(0), QString("Title"));
   643     QCOMPARE(dataList.at(0), QString("Title1"));
       
   644     QCOMPARE(dataList.at(1), QString("Artist1"));
   538 
   645 
   539     // Qt::DecorationRole
   646     // Qt::DecorationRole
   540     data = mTest->data(modelIndex, Qt::DecorationRole);
   647     data = mTest->data(modelIndex, Qt::DecorationRole);
   541     QCOMPARE(data.isNull(), true);
   648     QCOMPARE(data.isNull(), true);
   542     
   649 
   543     // Hb::IndexFeedbackRole
   650     // Hb::IndexFeedbackRole
   544     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   651     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   545     QCOMPARE(data.toString(), QString("Title"));
   652     QCOMPARE(data.toString(), QString("Title1"));
   546 }
       
   547 
       
   548 /*!
       
   549  Tests data() request for Playlists context with no data available.
       
   550  */
       
   551 void TestMpCollectionDataModel::testDataPlaylistsNoData()
       
   552 {
       
   553     mTest->mCollectionData->mCount = 100;
       
   554     mTest->mRowCount = 100;
       
   555     mTest->mCollectionData->mContext = ECollectionContextPlaylists;
       
   556     mTest->mCollectionData->mItemDataReturn = false;
       
   557 
       
   558     QModelIndex modelIndex = mHelper->indexFor(1);
       
   559 
       
   560     // Qt::DisplayRole
       
   561     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   562     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   563     QStringList dataList = data.toStringList();
       
   564     QCOMPARE(dataList.count(), 1);
       
   565     QCOMPARE(dataList.at(0), hbTrId("txt_mus_other_unknown4"));
       
   566     
       
   567     // Hb::IndexFeedbackRole
       
   568     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
       
   569     QCOMPARE(data.toString(), QString(""));
       
   570 }
       
   571 
       
   572 /*!
       
   573  Tests data() request for PlaylistSongs context.
       
   574  */
       
   575 void TestMpCollectionDataModel::testDataPlaylistSongs()
       
   576 {
       
   577     mTest->mCollectionData->mCount = 100;
       
   578     mTest->mRowCount = 100;
       
   579     mTest->mCollectionData->mContext = ECollectionContextPlaylistSongs;
       
   580 
       
   581     QModelIndex modelIndex = mHelper->indexFor(1);
       
   582 
       
   583     // Qt::DisplayRole
       
   584     QVariant data = mTest->data(modelIndex, Qt::DisplayRole);
       
   585     QCOMPARE(data.canConvert(QVariant::StringList), true);
       
   586     QStringList dataList = data.toStringList();
       
   587     QCOMPARE(dataList.count(), 2);
       
   588     QCOMPARE(dataList.at(0), QString("Title"));
       
   589     QCOMPARE(dataList.at(1), QString("Artist"));
       
   590 
       
   591     // Qt::DecorationRole
       
   592     data = mTest->data(modelIndex, Qt::DecorationRole);
       
   593     QCOMPARE(data.isNull(), true);
       
   594     
       
   595     // Hb::IndexFeedbackRole
       
   596     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
       
   597     QCOMPARE(data.toString(), QString("Title"));
       
   598 }
   653 }
   599 
   654 
   600 /*!
   655 /*!
   601  Tests data() request for PlaylistSongs context with no data available.
   656  Tests data() request for PlaylistSongs context with no data available.
   602  */
   657  */
   618     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   673     QCOMPARE(dataList.at(1), hbTrId("txt_mus_other_unknown3"));
   619 
   674 
   620     // Qt::DecorationRole
   675     // Qt::DecorationRole
   621     data = mTest->data(modelIndex, Qt::DecorationRole);
   676     data = mTest->data(modelIndex, Qt::DecorationRole);
   622     QCOMPARE(data.isNull(), true);
   677     QCOMPARE(data.isNull(), true);
   623     
   678 
   624     // Hb::IndexFeedbackRole
   679     // Hb::IndexFeedbackRole
   625     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   680     data = mTest->data(modelIndex, Hb::IndexFeedbackRole);
   626     QCOMPARE(data.toString(), QString(""));
   681     QCOMPARE(data.toString(), QString(""));
   627 }
   682 }
   628 
   683 
   677     QSignalSpy spy(mTest, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)));
   732     QSignalSpy spy(mTest, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)));
   678     QSignalSpy spy2(mTest, SIGNAL(rowsRemoved(QModelIndex, int, int)));
   733     QSignalSpy spy2(mTest, SIGNAL(rowsRemoved(QModelIndex, int, int)));
   679     MpMpxCollectionData::resetItemDataCounter();
   734     MpMpxCollectionData::resetItemDataCounter();
   680     mTest->mCollectionData->mCount = 2;
   735     mTest->mCollectionData->mCount = 2;
   681     mTest->mRowCount = 2;
   736     mTest->mRowCount = 2;
   682     
   737 
   683     QVERIFY(!mTest->removeRows(0,0,QModelIndex())); //no rows to remove.
   738     QVERIFY(!mTest->removeRows(0,0,QModelIndex())); //no rows to remove.
   684     QVERIFY(!mTest->removeRows(0,2,QModelIndex())); //more than one row.
   739     QVERIFY(!mTest->removeRows(0,2,QModelIndex())); //more than one row.
   685     QVERIFY(!mTest->removeRows(2,1,QModelIndex())); //row out of bounds.
   740     QVERIFY(!mTest->removeRows(2,1,QModelIndex())); //row out of bounds.
   686     
   741 
   687     //a valid row to be removed.
   742     //a valid row to be removed.
   688     QVERIFY(mTest->removeRows(0,1,QModelIndex()));
   743     QVERIFY(mTest->removeRows(0,1,QModelIndex()));
   689     QCOMPARE(spy.count(), 1);
   744     QCOMPARE(spy.count(), 1);
   690     QCOMPARE(spy2.count(), 1);
   745     QCOMPARE(spy2.count(), 1);
   691     QCOMPARE(MpMpxCollectionData::getremoveItemCounter(), 1);
   746     QCOMPARE(MpMpxCollectionData::getremoveItemCounter(), 1);
   692     QCOMPARE(mTest->mRowCount, 1);
   747     QCOMPARE(mTest->mRowCount, 1);
   693     
   748 
   694 }
   749 }
   695 
   750 
   696 /*!
   751 /*!
   697  Tests mimeTypes()
   752  Tests mimeTypes()
   698  */
   753  */
   713     QVERIFY(!mTest->mimeData(indexList)); //more than one item is not valid
   768     QVERIFY(!mTest->mimeData(indexList)); //more than one item is not valid
   714     indexList.removeLast();
   769     indexList.removeLast();
   715     QMimeData *data;
   770     QMimeData *data;
   716     data = mTest->mimeData(indexList);
   771     data = mTest->mimeData(indexList);
   717     QVERIFY(data); //one item row 2
   772     QVERIFY(data); //one item row 2
   718     
   773 
   719     QByteArray encoded = data->data(QLatin1String("application/x-mpcollectiondatamodelrowandids"));
   774     QByteArray encoded = data->data(QLatin1String("application/x-mpcollectiondatamodelrowandids"));
   720     QDataStream stream(&encoded, QIODevice::ReadOnly);
   775     QDataStream stream(&encoded, QIODevice::ReadOnly);
   721     int rowFrom;
   776     int rowFrom;
   722     int mpxContainerId;
   777     int mpxContainerId;
   723     int mpxItemId;
   778     int mpxItemId;
   735 void TestMpCollectionDataModel::testDropMimeData()
   790 void TestMpCollectionDataModel::testDropMimeData()
   736 {
   791 {
   737     int indexFrom = 5;
   792     int indexFrom = 5;
   738     int containerId = 123;
   793     int containerId = 123;
   739     int itemId = 20;
   794     int itemId = 20;
   740     
   795 
   741     QSignalSpy spy(mTest, SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)));
   796     QSignalSpy spy(mTest, SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)));
   742     QSignalSpy spy2(mTest, SIGNAL(rowsInserted(QModelIndex, int, int)));
   797     QSignalSpy spy2(mTest, SIGNAL(rowsInserted(QModelIndex, int, int)));
   743     QSignalSpy spy3(mTest, SIGNAL(orderChanged(int, int, int, int)));
   798     QSignalSpy spy3(mTest, SIGNAL(orderChanged(int, int, int, int)));
   744     MpMpxCollectionData::resetInsertCachedItemCounter();
   799     MpMpxCollectionData::resetInsertCachedItemCounter();
   745 
   800 
   760     MpMpxCollectionData::setCachedItemId(itemId);
   815     MpMpxCollectionData::setCachedItemId(itemId);
   761     mTest->mRowCount = 10;
   816     mTest->mRowCount = 10;
   762 
   817 
   763     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   818     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   764     delete data;
   819     delete data;
   765     }    
   820     }
   766     
   821 
   767     {//drop row out of bounds
   822     {//drop row out of bounds
   768     QMimeData *data = new QMimeData();
   823     QMimeData *data = new QMimeData();
   769     QByteArray encoded;
   824     QByteArray encoded;
   770     QDataStream stream(&encoded, QIODevice::WriteOnly);
   825     QDataStream stream(&encoded, QIODevice::WriteOnly);
   771     stream << indexFrom;
   826     stream << indexFrom;
   775     MpMpxCollectionData::setCachedItemId(itemId);
   830     MpMpxCollectionData::setCachedItemId(itemId);
   776     mTest->mRowCount = 10;
   831     mTest->mRowCount = 10;
   777 
   832 
   778     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,15,0,QModelIndex()));
   833     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,15,0,QModelIndex()));
   779     delete data;
   834     delete data;
   780     }    
   835     }
   781     
   836 
   782     {//incorrect action
   837     {//incorrect action
   783     QMimeData *data = new QMimeData();
   838     QMimeData *data = new QMimeData();
   784     QByteArray encoded;
   839     QByteArray encoded;
   785     QDataStream stream(&encoded, QIODevice::WriteOnly);
   840     QDataStream stream(&encoded, QIODevice::WriteOnly);
   786     stream << indexFrom;
   841     stream << indexFrom;
   790     MpMpxCollectionData::setCachedItemId(itemId);
   845     MpMpxCollectionData::setCachedItemId(itemId);
   791     mTest->mRowCount = 10;
   846     mTest->mRowCount = 10;
   792 
   847 
   793     QVERIFY(!mTest->dropMimeData(data,Qt::IgnoreAction,0,0,QModelIndex()));
   848     QVERIFY(!mTest->dropMimeData(data,Qt::IgnoreAction,0,0,QModelIndex()));
   794     delete data;
   849     delete data;
   795     }    
   850     }
   796     
   851 
   797     {//bad item ids
   852     {//bad item ids
   798     QMimeData *data = new QMimeData();
   853     QMimeData *data = new QMimeData();
   799     QByteArray encoded;
   854     QByteArray encoded;
   800     QDataStream stream(&encoded, QIODevice::WriteOnly);
   855     QDataStream stream(&encoded, QIODevice::WriteOnly);
   801     stream << indexFrom;
   856     stream << indexFrom;
   802     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   857     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   803     MpMpxCollectionData::setCachedItemId(itemId);
   858     MpMpxCollectionData::setCachedItemId(itemId);
   804     mTest->mRowCount = 2;
   859     mTest->mRowCount = 2;
   805     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   860     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   806     delete data;
   861     delete data;
   807     }  
   862     }
   808     
   863 
   809     {//bad item ids 2
   864     {//bad item ids 2
   810     QMimeData *data = new QMimeData();
   865     QMimeData *data = new QMimeData();
   811     QByteArray encoded;
   866     QByteArray encoded;
   812     QDataStream stream(&encoded, QIODevice::WriteOnly);
   867     QDataStream stream(&encoded, QIODevice::WriteOnly);
   813     stream << indexFrom;
   868     stream << indexFrom;
   816     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   871     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   817     MpMpxCollectionData::setCachedItemId(itemId);
   872     MpMpxCollectionData::setCachedItemId(itemId);
   818     mTest->mRowCount = 2;
   873     mTest->mRowCount = 2;
   819     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   874     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   820     delete data;
   875     delete data;
   821     } 
   876     }
   822     
   877 
   823     {//data with bad format
   878     {//data with bad format
   824     QMimeData *data = new QMimeData();
   879     QMimeData *data = new QMimeData();
   825     QByteArray encoded;
   880     QByteArray encoded;
   826     QDataStream stream(&encoded, QIODevice::WriteOnly);
   881     QDataStream stream(&encoded, QIODevice::WriteOnly);
   827     stream << indexFrom;
   882     stream << indexFrom;
   828     stream << containerId;
   883     stream << containerId;
   829     stream << itemId;
   884     stream << itemId;
   830     data->setData(QLatin1String("application/x-blabla"), encoded);
   885     data->setData(QLatin1String("application/x-blabla"), encoded);
   831     MpMpxCollectionData::setCachedItemId(itemId);
   886     MpMpxCollectionData::setCachedItemId(itemId);
   832     mTest->mRowCount = 10;        
   887     mTest->mRowCount = 10;
   833     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   888     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   834     delete data;
   889     delete data;
   835     }    
   890     }
   836      
   891 
   837     QMimeData *data = new QMimeData();
   892     QMimeData *data = new QMimeData();
   838     QByteArray encoded;
   893     QByteArray encoded;
   839     QDataStream stream(&encoded, QIODevice::WriteOnly);
   894     QDataStream stream(&encoded, QIODevice::WriteOnly);
   840     stream << indexFrom;
   895     stream << indexFrom;
   841     stream << containerId;
   896     stream << containerId;
   842     stream << itemId;
   897     stream << itemId;
   843     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   898     data->setData(QLatin1String("application/x-mpcollectiondatamodelrowandids"), encoded);
   844     MpMpxCollectionData::setCachedItemId(0);
   899     MpMpxCollectionData::setCachedItemId(0);
   845     mTest->mRowCount = 10;
   900     mTest->mRowCount = 10;
   846     
   901 
   847     // not matching item id
   902     // not matching item id
   848     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   903     QVERIFY(!mTest->dropMimeData(data,Qt::MoveAction,0,0,QModelIndex()));
   849    
   904 
   850     //matching item id
   905     //matching item id
   851     MpMpxCollectionData::setCachedItemId(itemId);
   906     MpMpxCollectionData::setCachedItemId(itemId);
   852 
   907 
   853     
   908 
   854     QVERIFY(mTest->dropMimeData(data,Qt::MoveAction,5,0,QModelIndex()));
   909     QVERIFY(mTest->dropMimeData(data,Qt::MoveAction,5,0,QModelIndex()));
   855     delete data;    
   910     delete data;
   856     QCOMPARE(spy.count(), 1);
   911     QCOMPARE(spy.count(), 1);
   857     QCOMPARE(spy2.count(), 1);
   912     QCOMPARE(spy2.count(), 1);
   858     QCOMPARE(spy3.count(), 1);
   913     QCOMPARE(spy3.count(), 1);
   859     QList<QVariant> arguments = spy3.takeFirst();
   914     QList<QVariant> arguments = spy3.takeFirst();
   860     QCOMPARE(arguments.at(0).toInt(), containerId);
   915     QCOMPARE(arguments.at(0).toInt(), containerId);
   862     QCOMPARE(arguments.at(2).toInt(), indexFrom);
   917     QCOMPARE(arguments.at(2).toInt(), indexFrom);
   863     QCOMPARE(arguments.at(3).toInt(), 5);
   918     QCOMPARE(arguments.at(3).toInt(), 5);
   864     QCOMPARE(MpMpxCollectionData::getInsertCachedItemCounter(),1);
   919     QCOMPARE(MpMpxCollectionData::getInsertCachedItemCounter(),1);
   865 }
   920 }
   866 
   921 
       
   922 /*!
       
   923  Tests setContext()
       
   924  */
       
   925 void TestMpCollectionDataModel::testSetContext()
       
   926 {
       
   927     mTest->mCollectionData->setContext(ECollectionContextArtistAlbums);
       
   928     QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextArtistAlbums);
       
   929     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   930     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::ListThumb);
       
   931 
       
   932     mTest->mCollectionData->mCount = 3;
       
   933     mTest->mCollectionData->setContext(ECollectionContextArtistAlbumsTBone);
       
   934     QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextArtistAlbumsTBone);
       
   935     QCOMPARE(mTest->mAlbumIndexOffset, 1);
       
   936     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
       
   937 
       
   938     mTest->mCollectionData->mCount = 1;
       
   939     mTest->mCollectionData->setContext(ECollectionContextArtistAlbumsTBone);
       
   940     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   941     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
       
   942 
       
   943     mTest->mCollectionData->setContext(ECollectionContextAlbums);
       
   944     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   945     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::ListThumb);
       
   946 
       
   947     mTest->mCollectionData->setContext(ECollectionContextAlbumsTBone);
       
   948     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   949     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::TBoneThumb);
       
   950 
       
   951     mTest->mCollectionData->setContext(ECollectionContextAlbumsMediaWall);
       
   952     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   953     QCOMPARE(mTest->mAlbumArtManager->mThumbType, MpCommon::MediaWallThumb);
       
   954 
       
   955     // All other context should have index set to zero.
       
   956     mTest->mCollectionData->setContext(ECollectionContextAllSongs);
       
   957     QCOMPARE(mTest->mCollectionData->mContext, ECollectionContextAllSongs);
       
   958     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   959     mTest->mCollectionData->setContext(ECollectionContextArtists);
       
   960     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   961     mTest->mCollectionData->setContext(ECollectionContextArtistAllSongs);
       
   962     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   963     mTest->mCollectionData->setContext(ECollectionContextPlaylists);
       
   964     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   965     mTest->mCollectionData->setContext(ECollectionContextPlaylistSongs);
       
   966     QCOMPARE(mTest->mAlbumIndexOffset, 0);
       
   967 }
   867 
   968 
   868 // End of file
   969 // End of file