videocollection/videocollectionwrapper/tsrc/testvideomodel/src/testvideolistdatamodel.cpp
author hgs
Thu, 01 Apr 2010 23:22:15 +0300
changeset 34 bbb98528c666
child 35 3738fe97f027
permissions -rw-r--r--
201009
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
hgs
parents:
diff changeset
     1
hgs
parents:
diff changeset
     2
/*
hgs
parents:
diff changeset
     3
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     4
* All rights reserved.
hgs
parents:
diff changeset
     5
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     6
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     7
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     8
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     9
*
hgs
parents:
diff changeset
    10
* Initial Contributors:
hgs
parents:
diff changeset
    11
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    12
*
hgs
parents:
diff changeset
    13
* Contributors:
hgs
parents:
diff changeset
    14
*
hgs
parents:
diff changeset
    15
* Description:  Testclas for testing VideoListDataModel class methods*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <QObject>
hgs
parents:
diff changeset
    20
#include <qabstractitemmodel.h>
hgs
parents:
diff changeset
    21
#include <mpxmediageneraldefs.h>
hgs
parents:
diff changeset
    22
#include <mpxmediaarray.h>
hgs
parents:
diff changeset
    23
#include <mpxmedia.h>
hgs
parents:
diff changeset
    24
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    25
#include "videodeleteworker.h"
hgs
parents:
diff changeset
    26
#include "videocollectionclient.h"
hgs
parents:
diff changeset
    27
#include "videolistdatamodel_p.h"
hgs
parents:
diff changeset
    28
#include "videocollectionwrapper.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "testvideolistdatamodel.h"
hgs
parents:
diff changeset
    32
#include "mediaobjectfactory.h"
hgs
parents:
diff changeset
    33
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
#define private public
hgs
parents:
diff changeset
    36
#include "videolistdatamodel.h"
hgs
parents:
diff changeset
    37
#undef private
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
const int MEDIA_COUNT = 10;
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
// main
hgs
parents:
diff changeset
    45
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
//
hgs
parents:
diff changeset
    47
int main(int argc, char *argv[])
hgs
parents:
diff changeset
    48
{
hgs
parents:
diff changeset
    49
    Q_UNUSED(argc);
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
    TestVideoListDataModel tv;
hgs
parents:
diff changeset
    52
    
hgs
parents:
diff changeset
    53
    int res;
hgs
parents:
diff changeset
    54
    if(argc > 1)
hgs
parents:
diff changeset
    55
    {   
hgs
parents:
diff changeset
    56
        res = QTest::qExec(&tv, argc, argv);
hgs
parents:
diff changeset
    57
    }
hgs
parents:
diff changeset
    58
    else
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
        char *pass[3];
hgs
parents:
diff changeset
    61
        pass[0] = argv[0];
hgs
parents:
diff changeset
    62
        pass[1] = "-o";
hgs
parents:
diff changeset
    63
        pass[2] = "c:\\data\\testvideomodel.txt";
hgs
parents:
diff changeset
    64
        res = QTest::qExec(&tv, 3, pass);
hgs
parents:
diff changeset
    65
    }
hgs
parents:
diff changeset
    66
    
hgs
parents:
diff changeset
    67
    return res;
hgs
parents:
diff changeset
    68
}
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
// initTestCase
hgs
parents:
diff changeset
    72
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    73
//
hgs
parents:
diff changeset
    74
void TestVideoListDataModel::initTestCase()
hgs
parents:
diff changeset
    75
{
hgs
parents:
diff changeset
    76
    mMediaFactory = new MediaObjectFactory();
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    80
// init
hgs
parents:
diff changeset
    81
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
//
hgs
parents:
diff changeset
    83
void TestVideoListDataModel::init()
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    QVERIFY2(initializeTestObjects(), "making sure if testable object creation ok");  
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
// cleanup
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
//   
hgs
parents:
diff changeset
    92
void TestVideoListDataModel::cleanup()
hgs
parents:
diff changeset
    93
{
hgs
parents:
diff changeset
    94
    cleanupTestObjects();
hgs
parents:
diff changeset
    95
}
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    98
// cleanupTestCase
hgs
parents:
diff changeset
    99
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
//
hgs
parents:
diff changeset
   101
void TestVideoListDataModel::cleanupTestCase()
hgs
parents:
diff changeset
   102
{
hgs
parents:
diff changeset
   103
    delete mMediaFactory;
hgs
parents:
diff changeset
   104
}
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   107
// testInitializeFails
hgs
parents:
diff changeset
   108
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
//
hgs
parents:
diff changeset
   110
void TestVideoListDataModel::testConstructor()
hgs
parents:
diff changeset
   111
{
hgs
parents:
diff changeset
   112
    QObject *parent = new QObject();
hgs
parents:
diff changeset
   113
    delete mTestObjectNotInitialized;
hgs
parents:
diff changeset
   114
    mTestObjectNotInitialized = new VideoListDataModel(parent);
hgs
parents:
diff changeset
   115
    QVERIFY( mTestObjectNotInitialized->QObject::parent() == parent );
hgs
parents:
diff changeset
   116
    QVERIFY( mTestObjectNotInitialized->mCollectionClient == 0);
hgs
parents:
diff changeset
   117
    QVERIFY( mTestObjectNotInitialized->d_ptr != 0);
hgs
parents:
diff changeset
   118
    
hgs
parents:
diff changeset
   119
    delete parent; // also deletes the test object;
hgs
parents:
diff changeset
   120
    mTestObjectNotInitialized = 0;
hgs
parents:
diff changeset
   121
}
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   124
// testInitializeFails
hgs
parents:
diff changeset
   125
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   126
//
hgs
parents:
diff changeset
   127
void TestVideoListDataModel::testInitializeFails()
hgs
parents:
diff changeset
   128
{
hgs
parents:
diff changeset
   129
    // Test all possible failures in the initialisation -call
hgs
parents:
diff changeset
   130
    // NOTE: signal connecting or new operator failures cannot be tested
hgs
parents:
diff changeset
   131
    
hgs
parents:
diff changeset
   132
    // - collection client init fails
hgs
parents:
diff changeset
   133
    VideoCollectionClient::mFailInitialize = true;
hgs
parents:
diff changeset
   134
    QVERIFY(mTestObjectNotInitialized->initialize() == -1 );
hgs
parents:
diff changeset
   135
    VideoCollectionClient::mFailInitialize = false;
hgs
parents:
diff changeset
   136
    
hgs
parents:
diff changeset
   137
    // - private impl init fails
hgs
parents:
diff changeset
   138
    VideoListDataModelPrivate::mFailInit = true;
hgs
parents:
diff changeset
   139
    QVERIFY( mTestObjectNotInitialized->initialize() == -1 );
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
}
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   144
// testInitialize
hgs
parents:
diff changeset
   145
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   146
//
hgs
parents:
diff changeset
   147
void TestVideoListDataModel::testInitialize()
hgs
parents:
diff changeset
   148
{
hgs
parents:
diff changeset
   149
    VideoListDataModelPrivate::mFailInit = false;
hgs
parents:
diff changeset
   150
    VideoCollectionClient::mFailInitialize = false;
hgs
parents:
diff changeset
   151
    VideoCollectionClient::mFailConnectSignals = false;
hgs
parents:
diff changeset
   152
    VideoCollectionClient::mInitializeCount = 0;
hgs
parents:
diff changeset
   153
    VideoDeleteWorker::mCreateCount = 0;
hgs
parents:
diff changeset
   154
    
hgs
parents:
diff changeset
   155
    QVERIFY(mTestObjectNotInitialized->initialize() == 0);
hgs
parents:
diff changeset
   156
    // secon call should succeed right away
hgs
parents:
diff changeset
   157
    QVERIFY(mTestObjectNotInitialized->initialize() == 0);
hgs
parents:
diff changeset
   158
    QVERIFY(mTestObjectNotInitialized->getCollectionClient() != 0);
hgs
parents:
diff changeset
   159
    
hgs
parents:
diff changeset
   160
    // for the coverity, cannot be verified, because cannot get count from
hgs
parents:
diff changeset
   161
    // connected signals runtime
hgs
parents:
diff changeset
   162
    mTestObjectNotInitialized->d_ptr->callModelDisconnect();
hgs
parents:
diff changeset
   163
    
hgs
parents:
diff changeset
   164
    QVERIFY(VideoCollectionClient::mInitializeCount == 1);
hgs
parents:
diff changeset
   165
    QVERIFY(VideoDeleteWorker::mCreateCount == 1);
hgs
parents:
diff changeset
   166
    
hgs
parents:
diff changeset
   167
}
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   170
// testRowCount
hgs
parents:
diff changeset
   171
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   172
//
hgs
parents:
diff changeset
   173
void TestVideoListDataModel::testRowCount()
hgs
parents:
diff changeset
   174
{
hgs
parents:
diff changeset
   175
    // Test to make sure model queries correct amount of items
hgs
parents:
diff changeset
   176
    // - at beginning row count should be 0
hgs
parents:
diff changeset
   177
    // - create defined amount of items
hgs
parents:
diff changeset
   178
    // - call rowCount to get matching count
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
    mMediaFactory->removeArray();  
hgs
parents:
diff changeset
   181
   
hgs
parents:
diff changeset
   182
    // row count with invalid parent and zero -array should be 0
hgs
parents:
diff changeset
   183
    QVERIFY(mTestObjectInitialized->rowCount() == 0);
hgs
parents:
diff changeset
   184
    
hgs
parents:
diff changeset
   185
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   186
    
hgs
parents:
diff changeset
   187
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   188
    
hgs
parents:
diff changeset
   189
    // check row count is ok
hgs
parents:
diff changeset
   190
    QVERIFY( mTestObjectInitialized->rowCount() == MEDIA_COUNT);
hgs
parents:
diff changeset
   191
          
hgs
parents:
diff changeset
   192
    // with valid parent: according to Qt documentation if parent is valid rowCount should return 0
hgs
parents:
diff changeset
   193
    QModelIndex validIndex = mTestObjectInitialized->index(0,0);
hgs
parents:
diff changeset
   194
    QVERIFY( mTestObjectInitialized->rowCount(validIndex) == 0);
hgs
parents:
diff changeset
   195
    
hgs
parents:
diff changeset
   196
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   197
    
hgs
parents:
diff changeset
   198
}
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   201
// testMediaIdAtIndex
hgs
parents:
diff changeset
   202
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   203
//
hgs
parents:
diff changeset
   204
void TestVideoListDataModel::testMediaIdAtIndex() 
hgs
parents:
diff changeset
   205
{
hgs
parents:
diff changeset
   206
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   207
    
hgs
parents:
diff changeset
   208
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   209
      
hgs
parents:
diff changeset
   210
    // ownership of media-array transferred
hgs
parents:
diff changeset
   211
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   212
         
hgs
parents:
diff changeset
   213
    // invalid index: below bounds
hgs
parents:
diff changeset
   214
    QVERIFY(mTestObjectInitialized->mediaIdAtIndex(-1) == TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   215
    
hgs
parents:
diff changeset
   216
    //invalid index: above bounds
hgs
parents:
diff changeset
   217
    QVERIFY(mTestObjectInitialized->mediaIdAtIndex(MEDIA_COUNT) == TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
    // first
hgs
parents:
diff changeset
   220
    QVERIFY(mTestObjectInitialized->mediaIdAtIndex(0).iId1 == 0);
hgs
parents:
diff changeset
   221
    
hgs
parents:
diff changeset
   222
    // middle
hgs
parents:
diff changeset
   223
    QVERIFY(mTestObjectInitialized->mediaIdAtIndex(MEDIA_COUNT / 2).iId1 == (MEDIA_COUNT / 2));
hgs
parents:
diff changeset
   224
    
hgs
parents:
diff changeset
   225
    // last
hgs
parents:
diff changeset
   226
    QVERIFY(mTestObjectInitialized->mediaIdAtIndex(MEDIA_COUNT - 1).iId1 == (MEDIA_COUNT - 1));
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    // no items
hgs
parents:
diff changeset
   229
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   230
    mTestObjectInitialized->d_ptr->newVideoListSlot(0);
hgs
parents:
diff changeset
   231
    QVERIFY( mTestObjectInitialized->mediaIdAtIndex(MEDIA_COUNT / 2) == TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   232
}
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   235
// testMediaFilePathForId
hgs
parents:
diff changeset
   236
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   237
//
hgs
parents:
diff changeset
   238
void TestVideoListDataModel::testMediaFilePathForId() 
hgs
parents:
diff changeset
   239
{
hgs
parents:
diff changeset
   240
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   241
    
hgs
parents:
diff changeset
   242
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   243
      
hgs
parents:
diff changeset
   244
    // ownership of media-array transferred
hgs
parents:
diff changeset
   245
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
    TMPXItemId id;
hgs
parents:
diff changeset
   248
    
hgs
parents:
diff changeset
   249
    // invalid id
hgs
parents:
diff changeset
   250
    QVERIFY(mTestObjectInitialized->mediaFilePathForId( TMPXItemId::InvalidId()) == "");
hgs
parents:
diff changeset
   251
    
hgs
parents:
diff changeset
   252
    // first
hgs
parents:
diff changeset
   253
    id.iId1 = 0;
hgs
parents:
diff changeset
   254
    id.iId2 = 0;
hgs
parents:
diff changeset
   255
    QVERIFY(mTestObjectInitialized->mediaFilePathForId(id) == 
hgs
parents:
diff changeset
   256
        QString(gQTMediaNamePrefix + QString::number(id.iId1)));
hgs
parents:
diff changeset
   257
    
hgs
parents:
diff changeset
   258
    // middle
hgs
parents:
diff changeset
   259
    id.iId1 = MEDIA_COUNT / 2;
hgs
parents:
diff changeset
   260
    id.iId2 = 0;
hgs
parents:
diff changeset
   261
    QVERIFY(mTestObjectInitialized->mediaFilePathForId(id) == 
hgs
parents:
diff changeset
   262
        QString(gQTMediaNamePrefix + QString::number(id.iId1)));
hgs
parents:
diff changeset
   263
    
hgs
parents:
diff changeset
   264
    // last
hgs
parents:
diff changeset
   265
    id.iId1 = MEDIA_COUNT - 1;
hgs
parents:
diff changeset
   266
    id.iId2 = 0;
hgs
parents:
diff changeset
   267
    QVERIFY(mTestObjectInitialized->mediaFilePathForId(id) == 
hgs
parents:
diff changeset
   268
        QString(gQTMediaNamePrefix + QString::number(id.iId1)));
hgs
parents:
diff changeset
   269
    
hgs
parents:
diff changeset
   270
    // no items
hgs
parents:
diff changeset
   271
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   272
    id.iId1 = MEDIA_COUNT / 2;
hgs
parents:
diff changeset
   273
    id.iId2 = 0;
hgs
parents:
diff changeset
   274
    mTestObjectInitialized->d_ptr->newVideoListSlot(0);
hgs
parents:
diff changeset
   275
    QVERIFY( mTestObjectInitialized->mediaFilePathForId(id) == "" );
hgs
parents:
diff changeset
   276
}
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   279
// testItemData
hgs
parents:
diff changeset
   280
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   281
//
hgs
parents:
diff changeset
   282
void TestVideoListDataModel::testItemData()
hgs
parents:
diff changeset
   283
{
hgs
parents:
diff changeset
   284
    // Test to make sure item data is passed ok throught model
hgs
parents:
diff changeset
   285
    // - create defined amount of items
hgs
parents:
diff changeset
   286
    // - setup their data as predefined values
hgs
parents:
diff changeset
   287
    // - call item data to make sure data is passed ok from the model
hgs
parents:
diff changeset
   288
    // Qt::DisplayRole
hgs
parents:
diff changeset
   289
    // Qt::DecorationRole
hgs
parents:
diff changeset
   290
    // Qt::BackgroundRole
hgs
parents:
diff changeset
   291
    
hgs
parents:
diff changeset
   292
    QModelIndex index;
hgs
parents:
diff changeset
   293
    QMap<int, QVariant> mapData;
hgs
parents:
diff changeset
   294
    
hgs
parents:
diff changeset
   295
    VideoListDataModelPrivate::mFailInit = false;
hgs
parents:
diff changeset
   296
 
hgs
parents:
diff changeset
   297
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   298
    
hgs
parents:
diff changeset
   299
    mTestObjectInitialized->d_ptr->newVideoListSlot(0);
hgs
parents:
diff changeset
   300
    
hgs
parents:
diff changeset
   301
    // no items
hgs
parents:
diff changeset
   302
    index = mTestObjectInitialized->index(0, 0, QModelIndex());
hgs
parents:
diff changeset
   303
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   304
    QVERIFY(mapData.count() == 0);
hgs
parents:
diff changeset
   305
    
hgs
parents:
diff changeset
   306
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   307
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   308
    
hgs
parents:
diff changeset
   309
    // below index bounds, should not even get correct index
hgs
parents:
diff changeset
   310
    index = mTestObjectInitialized->index(-1, 0, QModelIndex());
hgs
parents:
diff changeset
   311
    QVERIFY(!index.isValid());
hgs
parents:
diff changeset
   312
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   313
    QVERIFY(mapData.count() == 0);
hgs
parents:
diff changeset
   314
    
hgs
parents:
diff changeset
   315
    // above index bounds, should not even get correct index
hgs
parents:
diff changeset
   316
    index = mTestObjectInitialized->index(MEDIA_COUNT, 0, QModelIndex());
hgs
parents:
diff changeset
   317
    QVERIFY(!index.isValid());
hgs
parents:
diff changeset
   318
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   319
    QVERIFY(mapData.count() == 0);
hgs
parents:
diff changeset
   320
    
hgs
parents:
diff changeset
   321
    // first
hgs
parents:
diff changeset
   322
    index = mTestObjectInitialized->index(0, 0, QModelIndex());
hgs
parents:
diff changeset
   323
    QVERIFY(index.isValid());
hgs
parents:
diff changeset
   324
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   325
    QVERIFY(mapData.count() == 3);
hgs
parents:
diff changeset
   326
    
hgs
parents:
diff changeset
   327
    // middle
hgs
parents:
diff changeset
   328
    index = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0, QModelIndex());
hgs
parents:
diff changeset
   329
    QVERIFY(index.isValid());
hgs
parents:
diff changeset
   330
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   331
    QVERIFY(mapData.count() == 3);
hgs
parents:
diff changeset
   332
    
hgs
parents:
diff changeset
   333
    // last
hgs
parents:
diff changeset
   334
    index = mTestObjectInitialized->index(MEDIA_COUNT - 1, 0, QModelIndex());
hgs
parents:
diff changeset
   335
    QVERIFY(index.isValid());
hgs
parents:
diff changeset
   336
    mapData = mTestObjectInitialized->itemData(index);
hgs
parents:
diff changeset
   337
    QVERIFY(mapData.count() == 3);
hgs
parents:
diff changeset
   338
             
hgs
parents:
diff changeset
   339
}
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   342
// testData
hgs
parents:
diff changeset
   343
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   344
//
hgs
parents:
diff changeset
   345
void TestVideoListDataModel::testData()
hgs
parents:
diff changeset
   346
{
hgs
parents:
diff changeset
   347
    VideoListDataModelPrivate::mFailInit = false;
hgs
parents:
diff changeset
   348
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   349
    
hgs
parents:
diff changeset
   350
    const int TEST_INDEX = 3;
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
    
hgs
parents:
diff changeset
   353
    mMediaFactory->createMediaItems(TEST_INDEX + 1);
hgs
parents:
diff changeset
   354
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   355
    QModelIndex index = QModelIndex();
hgs
parents:
diff changeset
   356
    QVariant data;
hgs
parents:
diff changeset
   357
    
hgs
parents:
diff changeset
   358
    // test with invalid QModelIndex
hgs
parents:
diff changeset
   359
    data = mTestObjectInitialized->data(index, Qt::DisplayRole);
hgs
parents:
diff changeset
   360
    QVERIFY(data.toStringList().count() == 0);
hgs
parents:
diff changeset
   361
    
hgs
parents:
diff changeset
   362
    // test with correct data
hgs
parents:
diff changeset
   363
    index = mTestObjectInitialized->index(TEST_INDEX,0, QModelIndex());
hgs
parents:
diff changeset
   364
    
hgs
parents:
diff changeset
   365
    data = mTestObjectInitialized->data(index, Qt::DisplayRole);
hgs
parents:
diff changeset
   366
    QVERIFY(data.toStringList().count() == 2);
hgs
parents:
diff changeset
   367
    QVERIFY(data.toStringList().at(0) == QString(gQTMediaNamePrefix + QString::number(TEST_INDEX)));
hgs
parents:
diff changeset
   368
    
hgs
parents:
diff changeset
   369
    data.clear();
hgs
parents:
diff changeset
   370
    data = mTestObjectInitialized->data(index, Qt::DecorationRole);
hgs
parents:
diff changeset
   371
    QVERIFY(data.isValid());
hgs
parents:
diff changeset
   372
    
hgs
parents:
diff changeset
   373
    data.clear();
hgs
parents:
diff changeset
   374
    data = mTestObjectInitialized->data(index, Qt::BackgroundRole); 
hgs
parents:
diff changeset
   375
    // at the moment we do not have background role -data, when it becomes available,
hgs
parents:
diff changeset
   376
    // this will fail and needs to be changed
hgs
parents:
diff changeset
   377
    QVERIFY(!data.isValid());
hgs
parents:
diff changeset
   378
    
hgs
parents:
diff changeset
   379
    data.clear();
hgs
parents:
diff changeset
   380
    QDate date = QDate(2009, TEST_INDEX+1, TEST_INDEX+1);
hgs
parents:
diff changeset
   381
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyDateTime); 
hgs
parents:
diff changeset
   382
    QCOMPARE(data.toDate(), date);
hgs
parents:
diff changeset
   383
    
hgs
parents:
diff changeset
   384
    data.clear();
hgs
parents:
diff changeset
   385
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeySizeValue); 
hgs
parents:
diff changeset
   386
    QVERIFY(data.toUInt() == (1+TEST_INDEX));
hgs
parents:
diff changeset
   387
    
hgs
parents:
diff changeset
   388
    data.clear();
hgs
parents:
diff changeset
   389
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyStatus); 
hgs
parents:
diff changeset
   390
    QVERIFY(data.toInt() == VideoCollectionCommon::StatusNone);
hgs
parents:
diff changeset
   391
    
hgs
parents:
diff changeset
   392
    data.clear();
hgs
parents:
diff changeset
   393
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyMetaData);
hgs
parents:
diff changeset
   394
    QMap<QString, QVariant> map = data.toMap();
hgs
parents:
diff changeset
   395
    QVERIFY(map.contains("metadata"));
hgs
parents:
diff changeset
   396
    QCOMPARE(map["metadata"].toString(), QString("metadata"));
hgs
parents:
diff changeset
   397
    
hgs
parents:
diff changeset
   398
    data.clear();
hgs
parents:
diff changeset
   399
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyFilePath); 
hgs
parents:
diff changeset
   400
    QCOMPARE(data.toString(), gQTMediaFilePathPrefix + QString::number(TEST_INDEX));
hgs
parents:
diff changeset
   401
    
hgs
parents:
diff changeset
   402
    // invalid role
hgs
parents:
diff changeset
   403
    data.clear();
hgs
parents:
diff changeset
   404
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyLast); 
hgs
parents:
diff changeset
   405
    QVERIFY(!data.isValid());
hgs
parents:
diff changeset
   406
    
hgs
parents:
diff changeset
   407
    // test with incorrect (== missing details) data
hgs
parents:
diff changeset
   408
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   409
    mMediaFactory->createMediaItems(TEST_INDEX + 1, 0, MediaDetailNone);
hgs
parents:
diff changeset
   410
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   411
    data.clear();
hgs
parents:
diff changeset
   412
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyDateTime); 
hgs
parents:
diff changeset
   413
    QVERIFY(!data.toDateTime().isValid());
hgs
parents:
diff changeset
   414
    
hgs
parents:
diff changeset
   415
    data.clear();
hgs
parents:
diff changeset
   416
    data = mTestObjectInitialized->data(index, VideoCollectionCommon::KeyFilePath);
hgs
parents:
diff changeset
   417
    QVERIFY(!data.toString().length());
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
}
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   422
// testColumnCount
hgs
parents:
diff changeset
   423
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   424
//
hgs
parents:
diff changeset
   425
void TestVideoListDataModel::testColumnCount()
hgs
parents:
diff changeset
   426
{
hgs
parents:
diff changeset
   427
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   428
    const int TEST_INDEX = 3;
hgs
parents:
diff changeset
   429
       
hgs
parents:
diff changeset
   430
    // test with correct data
hgs
parents:
diff changeset
   431
    mMediaFactory->createMediaItems(1);
hgs
parents:
diff changeset
   432
    
hgs
parents:
diff changeset
   433
    QModelIndex index = QModelIndex();
hgs
parents:
diff changeset
   434
    // test with invalid "parent" index
hgs
parents:
diff changeset
   435
    QVERIFY(mTestObjectInitialized->columnCount(index) == 1);
hgs
parents:
diff changeset
   436
    
hgs
parents:
diff changeset
   437
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   438
    index = mTestObjectInitialized->index(0,0);
hgs
parents:
diff changeset
   439
    // test with valid "parent index
hgs
parents:
diff changeset
   440
    QVERIFY(mTestObjectInitialized->columnCount(index) == 0);
hgs
parents:
diff changeset
   441
}
hgs
parents:
diff changeset
   442
   
hgs
parents:
diff changeset
   443
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   444
// testIndex
hgs
parents:
diff changeset
   445
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   446
//
hgs
parents:
diff changeset
   447
void TestVideoListDataModel::testIndex()
hgs
parents:
diff changeset
   448
{
hgs
parents:
diff changeset
   449
    QModelIndex indexToGet;
hgs
parents:
diff changeset
   450
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   451
    mTestObjectInitialized->d_ptr->newVideoListSlot(0);
hgs
parents:
diff changeset
   452
    
hgs
parents:
diff changeset
   453
    
hgs
parents:
diff changeset
   454
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   455
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   456
    
hgs
parents:
diff changeset
   457
    // index below bounds
hgs
parents:
diff changeset
   458
    indexToGet = mTestObjectInitialized->index(-1, 0);
hgs
parents:
diff changeset
   459
    QVERIFY(!indexToGet.isValid()); 
hgs
parents:
diff changeset
   460
    
hgs
parents:
diff changeset
   461
    // index above bounds
hgs
parents:
diff changeset
   462
    indexToGet = mTestObjectInitialized->index(MEDIA_COUNT, 0);
hgs
parents:
diff changeset
   463
    QVERIFY(!indexToGet.isValid()); 
hgs
parents:
diff changeset
   464
    
hgs
parents:
diff changeset
   465
    // first
hgs
parents:
diff changeset
   466
    indexToGet = mTestObjectInitialized->index(0, 0);
hgs
parents:
diff changeset
   467
    QVERIFY(indexToGet.isValid()); 
hgs
parents:
diff changeset
   468
    QVERIFY(indexToGet.row() == 0); 
hgs
parents:
diff changeset
   469
    
hgs
parents:
diff changeset
   470
    // middle
hgs
parents:
diff changeset
   471
    indexToGet = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   472
    QVERIFY(indexToGet.isValid()); 
hgs
parents:
diff changeset
   473
    QVERIFY(indexToGet.row() == (MEDIA_COUNT / 2)); 
hgs
parents:
diff changeset
   474
    
hgs
parents:
diff changeset
   475
    // last
hgs
parents:
diff changeset
   476
    indexToGet = mTestObjectInitialized->index(MEDIA_COUNT - 1, 0);
hgs
parents:
diff changeset
   477
    QVERIFY(indexToGet.isValid()); 
hgs
parents:
diff changeset
   478
    QVERIFY(indexToGet.row() == (MEDIA_COUNT -1)); 
hgs
parents:
diff changeset
   479
}
hgs
parents:
diff changeset
   480
hgs
parents:
diff changeset
   481
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   482
// testParent
hgs
parents:
diff changeset
   483
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   484
//
hgs
parents:
diff changeset
   485
void TestVideoListDataModel::testParent()
hgs
parents:
diff changeset
   486
{
hgs
parents:
diff changeset
   487
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   488
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
    QModelIndex index = mTestObjectInitialized->index(0,0);
hgs
parents:
diff changeset
   491
    QVERIFY(index.isValid());
hgs
parents:
diff changeset
   492
    QModelIndex parentIndex = mTestObjectInitialized->parent(index);
hgs
parents:
diff changeset
   493
    QVERIFY(!parentIndex.isValid());
hgs
parents:
diff changeset
   494
}
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   497
// testPrepareDetails
hgs
parents:
diff changeset
   498
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   499
//
hgs
parents:
diff changeset
   500
void TestVideoListDataModel::testPrepareDetails() 
hgs
parents:
diff changeset
   501
{
hgs
parents:
diff changeset
   502
    // cannot call preparedetails directly, need to call indirectly using 
hgs
parents:
diff changeset
   503
    // public data -method.
hgs
parents:
diff changeset
   504
    
hgs
parents:
diff changeset
   505
    QString details("");
hgs
parents:
diff changeset
   506
    QModelIndex modelIndex;
hgs
parents:
diff changeset
   507
    QVariant result;
hgs
parents:
diff changeset
   508
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   509
    
hgs
parents:
diff changeset
   510
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   511
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   512
        
hgs
parents:
diff changeset
   513
    // missing size
hgs
parents:
diff changeset
   514
    mMediaFactory->removeArray();        
hgs
parents:
diff changeset
   515
    mMediaFactory->createMediaItems(MEDIA_COUNT, 0, MediaDetailDurationFlag);
hgs
parents:
diff changeset
   516
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   517
    details.clear();
hgs
parents:
diff changeset
   518
    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   519
  
hgs
parents:
diff changeset
   520
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   521
    QVERIFY (result.toStringList().count() == 2 );
hgs
parents:
diff changeset
   522
    QVERIFY(!result.toStringList().at(1).contains(","));
hgs
parents:
diff changeset
   523
    
hgs
parents:
diff changeset
   524
    // missing duration
hgs
parents:
diff changeset
   525
    mMediaFactory->removeArray();        
hgs
parents:
diff changeset
   526
    mMediaFactory->createMediaItems(MEDIA_COUNT, 0, MediaDetailSizeFlag);
hgs
parents:
diff changeset
   527
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   528
    details.clear();
hgs
parents:
diff changeset
   529
    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   530
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   531
    QVERIFY (result.toStringList().count() == 2 );
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
    
hgs
parents:
diff changeset
   534
    // missing both
hgs
parents:
diff changeset
   535
    mMediaFactory->removeArray();        
hgs
parents:
diff changeset
   536
    mMediaFactory->createMediaItems(MEDIA_COUNT, 0, MediaDetailNone);
hgs
parents:
diff changeset
   537
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   538
    details.clear();
hgs
parents:
diff changeset
   539
    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   540
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   541
    QVERIFY (result.toStringList().count() == 2 );
hgs
parents:
diff changeset
   542
    
hgs
parents:
diff changeset
   543
    // album typed data
hgs
parents:
diff changeset
   544
    mMediaFactory->removeArray();        
hgs
parents:
diff changeset
   545
    mMediaFactory->createMediaItems(5, 2, MediaDetailNone);
hgs
parents:
diff changeset
   546
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   547
    modelIndex = mTestObjectInitialized->index(3, 0);
hgs
parents:
diff changeset
   548
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   549
    QVERIFY (result.toStringList().count() == 2 );
hgs
parents:
diff changeset
   550
  
hgs
parents:
diff changeset
   551
}
hgs
parents:
diff changeset
   552
hgs
parents:
diff changeset
   553
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   554
// testPrepareSizeString
hgs
parents:
diff changeset
   555
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   556
//
hgs
parents:
diff changeset
   557
void TestVideoListDataModel::testPrepareSizeString()
hgs
parents:
diff changeset
   558
{
hgs
parents:
diff changeset
   559
    // This tests the CVideoCollectionUtils::prepareSizeString at the same time
hgs
parents:
diff changeset
   560
    // as we do not have separate tests for that.
hgs
parents:
diff changeset
   561
hgs
parents:
diff changeset
   562
    // cannot call prepareSizeStrings directly, need to call indirectly using 
hgs
parents:
diff changeset
   563
    // public data -method. That means: 
hgs
parents:
diff changeset
   564
    // - we cannot test without videolistdata -object -case because tested throught data -call and
hgs
parents:
diff changeset
   565
    //   existence is tested there already
hgs
parents:
diff changeset
   566
    // cannot chck the actual string due localization
hgs
parents:
diff changeset
   567
    QString details("");
hgs
parents:
diff changeset
   568
    QModelIndex modelIndex;
hgs
parents:
diff changeset
   569
    QVariant result;  
hgs
parents:
diff changeset
   570
   
hgs
parents:
diff changeset
   571
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   572
    
hgs
parents:
diff changeset
   573
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   574
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   575
    
hgs
parents:
diff changeset
   576
    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   577
    
hgs
parents:
diff changeset
   578
    // zero size
hgs
parents:
diff changeset
   579
    VideoListDataModelPrivate::mOverrideSize = true;
hgs
parents:
diff changeset
   580
    VideoListDataModelPrivate::mSize = 0;
hgs
parents:
diff changeset
   581
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   582
    QVERIFY(!result.toStringList().at(1).contains(","));    
hgs
parents:
diff changeset
   583
    result = QVariant();
hgs
parents:
diff changeset
   584
    // 1 byte
hgs
parents:
diff changeset
   585
    VideoListDataModelPrivate::mSize = 1;
hgs
parents:
diff changeset
   586
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   587
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   588
    result = QVariant();
hgs
parents:
diff changeset
   589
    
hgs
parents:
diff changeset
   590
    // under kB
hgs
parents:
diff changeset
   591
    VideoListDataModelPrivate::mSize = 1023;
hgs
parents:
diff changeset
   592
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   593
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   594
    result = QVariant();
hgs
parents:
diff changeset
   595
    // exactly on kB
hgs
parents:
diff changeset
   596
    VideoListDataModelPrivate::mSize = 1024;
hgs
parents:
diff changeset
   597
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   598
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   599
    result = QVariant();
hgs
parents:
diff changeset
   600
    // over kB but under under MB
hgs
parents:
diff changeset
   601
    VideoListDataModelPrivate::mSize = 0xFFFFF;
hgs
parents:
diff changeset
   602
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   603
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   604
    result = QVariant();
hgs
parents:
diff changeset
   605
    // MB
hgs
parents:
diff changeset
   606
    VideoListDataModelPrivate::mSize = 0x100000;
hgs
parents:
diff changeset
   607
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   608
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   609
    result = QVariant();
hgs
parents:
diff changeset
   610
    // larger than MB but smaller than GB
hgs
parents:
diff changeset
   611
    VideoListDataModelPrivate::mSize = 0x3FFFFFFF;
hgs
parents:
diff changeset
   612
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   613
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   614
    result = QVariant();
hgs
parents:
diff changeset
   615
    // 1 GB
hgs
parents:
diff changeset
   616
    VideoListDataModelPrivate::mSize = 0x40000000;
hgs
parents:
diff changeset
   617
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   618
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   619
    result = QVariant();
hgs
parents:
diff changeset
   620
    
hgs
parents:
diff changeset
   621
    // larger than 1 GB
hgs
parents:
diff changeset
   622
    VideoListDataModelPrivate::mSize = 0x90000000;
hgs
parents:
diff changeset
   623
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   624
    QVERIFY(result.toStringList().at(1).length() > 0);
hgs
parents:
diff changeset
   625
    result = QVariant();
hgs
parents:
diff changeset
   626
    
hgs
parents:
diff changeset
   627
    VideoListDataModelPrivate::mOverrideSize = false;
hgs
parents:
diff changeset
   628
}
hgs
parents:
diff changeset
   629
hgs
parents:
diff changeset
   630
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   631
// testPrepareLengthString
hgs
parents:
diff changeset
   632
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   633
//
hgs
parents:
diff changeset
   634
void TestVideoListDataModel::testPrepareLengthString()
hgs
parents:
diff changeset
   635
{
hgs
parents:
diff changeset
   636
    // This tests the CVideoCollectionUtils::prepareSizeString at the same time
hgs
parents:
diff changeset
   637
    // as we do not have separate tests for that.
hgs
parents:
diff changeset
   638
    //
hgs
parents:
diff changeset
   639
    // cannot check the actual strin due localisation
hgs
parents:
diff changeset
   640
    //
hgs
parents:
diff changeset
   641
    // cannot call prepareLengthStrings directly, need to call indirectly using 
hgs
parents:
diff changeset
   642
    // public data -method. That means: 
hgs
parents:
diff changeset
   643
    // - we cannot test without videolistdata -object -case because tested throught data -call and
hgs
parents:
diff changeset
   644
    //   existence is tested there already
hgs
parents:
diff changeset
   645
    
hgs
parents:
diff changeset
   646
    QString details("");
hgs
parents:
diff changeset
   647
    QModelIndex modelIndex;
hgs
parents:
diff changeset
   648
    QVariant result;  
hgs
parents:
diff changeset
   649
   
hgs
parents:
diff changeset
   650
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   651
    
hgs
parents:
diff changeset
   652
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   653
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   654
    modelIndex = mTestObjectInitialized->index(MEDIA_COUNT / 2, 0);
hgs
parents:
diff changeset
   655
    
hgs
parents:
diff changeset
   656
    // override size to zero, so prepareDetailRow doesn't include size in the detail row text.
hgs
parents:
diff changeset
   657
    VideoListDataModelPrivate::mOverrideSize = true;
hgs
parents:
diff changeset
   658
    VideoListDataModelPrivate::mSize = 0;
hgs
parents:
diff changeset
   659
    VideoListDataModelPrivate::mOverrideDuration = true;
hgs
parents:
diff changeset
   660
    VideoListDataModelPrivate::mDuration = 0;
hgs
parents:
diff changeset
   661
hgs
parents:
diff changeset
   662
    // zero
hgs
parents:
diff changeset
   663
    VideoListDataModelPrivate::mDuration = 0;
hgs
parents:
diff changeset
   664
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   665
    result = QVariant();
hgs
parents:
diff changeset
   666
   
hgs
parents:
diff changeset
   667
    // second
hgs
parents:
diff changeset
   668
    VideoListDataModelPrivate::mDuration = 1;
hgs
parents:
diff changeset
   669
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   670
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   671
    result = QVariant();
hgs
parents:
diff changeset
   672
    
hgs
parents:
diff changeset
   673
    // over 1 second, under minute
hgs
parents:
diff changeset
   674
    VideoListDataModelPrivate::mDuration = 59;
hgs
parents:
diff changeset
   675
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   676
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   677
    result = QVariant();
hgs
parents:
diff changeset
   678
    
hgs
parents:
diff changeset
   679
    // one minute
hgs
parents:
diff changeset
   680
    VideoListDataModelPrivate::mDuration = 60;
hgs
parents:
diff changeset
   681
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   682
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   683
    result = QVariant();
hgs
parents:
diff changeset
   684
    
hgs
parents:
diff changeset
   685
    // one minute one second 
hgs
parents:
diff changeset
   686
    VideoListDataModelPrivate::mDuration = 61;
hgs
parents:
diff changeset
   687
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   688
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   689
    result = QVariant();
hgs
parents:
diff changeset
   690
    
hgs
parents:
diff changeset
   691
    // more than one minute and one second
hgs
parents:
diff changeset
   692
    VideoListDataModelPrivate::mDuration = 3599;
hgs
parents:
diff changeset
   693
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   694
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   695
    result = QVariant();
hgs
parents:
diff changeset
   696
        
hgs
parents:
diff changeset
   697
    // one hour
hgs
parents:
diff changeset
   698
    VideoListDataModelPrivate::mDuration = 3600;
hgs
parents:
diff changeset
   699
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   700
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   701
    result = QVariant();
hgs
parents:
diff changeset
   702
    
hgs
parents:
diff changeset
   703
    // one hour, one minute
hgs
parents:
diff changeset
   704
    VideoListDataModelPrivate::mDuration = 3660;
hgs
parents:
diff changeset
   705
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   706
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   707
    result = QVariant();
hgs
parents:
diff changeset
   708
    
hgs
parents:
diff changeset
   709
    // over hour
hgs
parents:
diff changeset
   710
    VideoListDataModelPrivate::mDuration = 8654;
hgs
parents:
diff changeset
   711
    result = mTestObjectInitialized->data(modelIndex, Qt::DisplayRole);
hgs
parents:
diff changeset
   712
    QVERIFY(result.toStringList().at(1).length() > 0); 
hgs
parents:
diff changeset
   713
    result = QVariant();
hgs
parents:
diff changeset
   714
    
hgs
parents:
diff changeset
   715
    VideoListDataModelPrivate::mOverrideSize = false;
hgs
parents:
diff changeset
   716
    VideoListDataModelPrivate::mOverrideDuration = true;
hgs
parents:
diff changeset
   717
    VideoListDataModelPrivate::mDuration = 0;
hgs
parents:
diff changeset
   718
}
hgs
parents:
diff changeset
   719
hgs
parents:
diff changeset
   720
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   721
// testRemoveRows
hgs
parents:
diff changeset
   722
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   723
//
hgs
parents:
diff changeset
   724
void TestVideoListDataModel::testRemoveRows()
hgs
parents:
diff changeset
   725
{
hgs
parents:
diff changeset
   726
    QSignalSpy spysignal(mTestObjectInitialized, SIGNAL(modelChanged()));
hgs
parents:
diff changeset
   727
    QModelIndexList indexList;       
hgs
parents:
diff changeset
   728
    mMediaFactory->removeArray();
hgs
parents:
diff changeset
   729
    
hgs
parents:
diff changeset
   730
    // no collection neither deleteworker
hgs
parents:
diff changeset
   731
    QVERIFY(!mTestObjectNotInitialized->removeRows(indexList));
hgs
parents:
diff changeset
   732
    
hgs
parents:
diff changeset
   733
    // empty list provided
hgs
parents:
diff changeset
   734
    QVERIFY(!mTestObjectInitialized->removeRows(indexList));
hgs
parents:
diff changeset
   735
    QVERIFY(spysignal.count() == 1);
hgs
parents:
diff changeset
   736
    QVERIFY(mTestObjectInitialized->mDeleteWorker->mRequestList.count() == 0);
hgs
parents:
diff changeset
   737
    spysignal.clear();
hgs
parents:
diff changeset
   738
    
hgs
parents:
diff changeset
   739
    mMediaFactory->createMediaItems(MEDIA_COUNT);
hgs
parents:
diff changeset
   740
    mTestObjectInitialized->d_ptr->newVideoListSlot(mMediaFactory->mediaArray());
hgs
parents:
diff changeset
   741
    indexList.append(mTestObjectInitialized->index(0,0));
hgs
parents:
diff changeset
   742
    indexList.append(mTestObjectInitialized->index(1,0));
hgs
parents:
diff changeset
   743
    
hgs
parents:
diff changeset
   744
    // invalid id from mark -call (for coverity's sake
hgs
parents:
diff changeset
   745
    VideoListDataModelPrivate::mReturnInvalidMarked = true;
hgs
parents:
diff changeset
   746
    QVERIFY(!mTestObjectInitialized->removeRows(indexList));
hgs
parents:
diff changeset
   747
    QVERIFY(spysignal.count() == 1);
hgs
parents:
diff changeset
   748
    QVERIFY(mTestObjectInitialized->mDeleteWorker->mRequestList.count() == 0);
hgs
parents:
diff changeset
   749
    spysignal.clear();
hgs
parents:
diff changeset
   750
    
hgs
parents:
diff changeset
   751
    VideoListDataModelPrivate::mReturnInvalidMarked = false;  
hgs
parents:
diff changeset
   752
    // no invalid ids
hgs
parents:
diff changeset
   753
    QVERIFY(mTestObjectInitialized->removeRows(indexList));
hgs
parents:
diff changeset
   754
    QVERIFY(spysignal.count() == 1);
hgs
parents:
diff changeset
   755
    QVERIFY(mTestObjectInitialized->mDeleteWorker->mRequestList.count() == 2);
hgs
parents:
diff changeset
   756
    QVERIFY(mTestObjectInitialized->mDeleteWorker->mRequestList.at(0) != TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   757
    QVERIFY(mTestObjectInitialized->mDeleteWorker->mRequestList.at(1) != TMPXItemId::InvalidId());
hgs
parents:
diff changeset
   758
hgs
parents:
diff changeset
   759
}
hgs
parents:
diff changeset
   760
hgs
parents:
diff changeset
   761
void TestVideoListDataModel::testDeleteStartingFailsSlot()
hgs
parents:
diff changeset
   762
{
hgs
parents:
diff changeset
   763
    QSignalSpy spysignal(mTestObjectInitialized, SIGNAL(modelChanged()));
hgs
parents:
diff changeset
   764
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = false;
hgs
parents:
diff changeset
   765
    VideoCollectionWrapper::mLatestStatusCode = -1;
hgs
parents:
diff changeset
   766
    VideoCollectionWrapper::mLatestAdditional = QVariant();
hgs
parents:
diff changeset
   767
    
hgs
parents:
diff changeset
   768
    QList<TMPXItemId> idList;
hgs
parents:
diff changeset
   769
    // empty list
hgs
parents:
diff changeset
   770
    emit mTestObjectInitialized->mDeleteWorker->deleteStartupFailed(idList);
hgs
parents:
diff changeset
   771
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == -1);
hgs
parents:
diff changeset
   772
    QVERIFY(!VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   773
    QVERIFY(spysignal.count() == 1);
hgs
parents:
diff changeset
   774
    spysignal.clear();
hgs
parents:
diff changeset
   775
    
hgs
parents:
diff changeset
   776
    
hgs
parents:
diff changeset
   777
    idList.append(TMPXItemId(0,0));
hgs
parents:
diff changeset
   778
    // list containing something
hgs
parents:
diff changeset
   779
    emit mTestObjectInitialized->mDeleteWorker->deleteStartupFailed(idList);
hgs
parents:
diff changeset
   780
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == VideoCollectionCommon::statusMultipleDeleteFail);
hgs
parents:
diff changeset
   781
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   782
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.toInt() == 1);
hgs
parents:
diff changeset
   783
    QVERIFY(spysignal.count() == 1);
hgs
parents:
diff changeset
   784
    spysignal.clear();
hgs
parents:
diff changeset
   785
 
hgs
parents:
diff changeset
   786
}
hgs
parents:
diff changeset
   787
hgs
parents:
diff changeset
   788
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   789
// testBelongsToAlbum
hgs
parents:
diff changeset
   790
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   791
//
hgs
parents:
diff changeset
   792
void TestVideoListDataModel::testBelongsToAlbum()
hgs
parents:
diff changeset
   793
{
hgs
parents:
diff changeset
   794
    VideoListDataModelPrivate::mBelongsToAlbum = true;
hgs
parents:
diff changeset
   795
    TMPXItemId dummyId(1,1);
hgs
parents:
diff changeset
   796
    TMPXItemId dummyVideoId(1,0);
hgs
parents:
diff changeset
   797
    QVERIFY(mTestObjectInitialized->belongsToAlbum(dummyVideoId, dummyId));
hgs
parents:
diff changeset
   798
}   
hgs
parents:
diff changeset
   799
hgs
parents:
diff changeset
   800
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   801
// testSetAlbumInUse
hgs
parents:
diff changeset
   802
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   803
//
hgs
parents:
diff changeset
   804
void TestVideoListDataModel::testSetAlbumInUse()
hgs
parents:
diff changeset
   805
{
hgs
parents:
diff changeset
   806
    TMPXItemId dummyId(1,1);   
hgs
parents:
diff changeset
   807
    mTestObjectInitialized->setAlbumInUse(dummyId);
hgs
parents:
diff changeset
   808
    QVERIFY(mTestObjectInitialized->d_ptr->mCurrentAlbum == dummyId);
hgs
parents:
diff changeset
   809
}
hgs
parents:
diff changeset
   810
hgs
parents:
diff changeset
   811
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   812
// testreportAsyncStatus
hgs
parents:
diff changeset
   813
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   814
//
hgs
parents:
diff changeset
   815
void TestVideoListDataModel::testreportAsyncStatus()
hgs
parents:
diff changeset
   816
{
hgs
parents:
diff changeset
   817
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = false;
hgs
parents:
diff changeset
   818
    VideoCollectionWrapper::mLatestStatusCode = -1;
hgs
parents:
diff changeset
   819
    VideoCollectionWrapper::mLatestAdditional = QVariant();
hgs
parents:
diff changeset
   820
    
hgs
parents:
diff changeset
   821
    QVariant data = QString("test");
hgs
parents:
diff changeset
   822
    // no deleteworker
hgs
parents:
diff changeset
   823
    VideoDeleteWorker *tmp = mTestObjectInitialized->mDeleteWorker;
hgs
parents:
diff changeset
   824
    mTestObjectInitialized->mDeleteWorker = 0;
hgs
parents:
diff changeset
   825
    mTestObjectInitialized->d_ptr->callModelAsyncReport(VideoCollectionCommon::statusMultipleDeleteFail, data);
hgs
parents:
diff changeset
   826
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == -1);
hgs
parents:
diff changeset
   827
    QVERIFY(!VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   828
    mTestObjectInitialized->mDeleteWorker = tmp;
hgs
parents:
diff changeset
   829
    
hgs
parents:
diff changeset
   830
    // code == VideoCollectionCommon::statusSingleDeleteFail
hgs
parents:
diff changeset
   831
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = true;
hgs
parents:
diff changeset
   832
    mTestObjectInitialized->d_ptr->callModelAsyncReport(VideoCollectionCommon::statusSingleDeleteFail, data);
hgs
parents:
diff changeset
   833
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == -1);
hgs
parents:
diff changeset
   834
    QVERIFY(!VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   835
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = false; 
hgs
parents:
diff changeset
   836
    mTestObjectInitialized->d_ptr->callModelAsyncReport(VideoCollectionCommon::statusSingleDeleteFail, data);
hgs
parents:
diff changeset
   837
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == VideoCollectionCommon::statusSingleDeleteFail);
hgs
parents:
diff changeset
   838
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   839
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.toString() == data.toString());
hgs
parents:
diff changeset
   840
    VideoCollectionWrapper::mLatestStatusCode = -1;
hgs
parents:
diff changeset
   841
    VideoCollectionWrapper::mLatestAdditional = QVariant();
hgs
parents:
diff changeset
   842
    
hgs
parents:
diff changeset
   843
    // code ==  VideoCollectionCommon::statusMultipleDeleteFail
hgs
parents:
diff changeset
   844
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = true;
hgs
parents:
diff changeset
   845
    mTestObjectInitialized->d_ptr->callModelAsyncReport(VideoCollectionCommon::statusMultipleDeleteFail, data);
hgs
parents:
diff changeset
   846
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == -1);
hgs
parents:
diff changeset
   847
    QVERIFY(!VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   848
    mTestObjectInitialized->mDeleteWorker->mIsDeleting = false; 
hgs
parents:
diff changeset
   849
    mTestObjectInitialized->d_ptr->callModelAsyncReport(VideoCollectionCommon::statusMultipleDeleteFail, data);
hgs
parents:
diff changeset
   850
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == VideoCollectionCommon::statusMultipleDeleteFail);
hgs
parents:
diff changeset
   851
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   852
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.toString() == data.toString());
hgs
parents:
diff changeset
   853
    
hgs
parents:
diff changeset
   854
    // code is neither above
hgs
parents:
diff changeset
   855
    mTestObjectInitialized->d_ptr->callModelAsyncReport(-2, data);
hgs
parents:
diff changeset
   856
    QVERIFY(VideoCollectionWrapper::mLatestStatusCode == -2);
hgs
parents:
diff changeset
   857
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.isValid());
hgs
parents:
diff changeset
   858
    QVERIFY(VideoCollectionWrapper::mLatestAdditional.toString() == data.toString());
hgs
parents:
diff changeset
   859
}
hgs
parents:
diff changeset
   860
hgs
parents:
diff changeset
   861
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   862
// initializeTestObjects
hgs
parents:
diff changeset
   863
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   864
//
hgs
parents:
diff changeset
   865
bool TestVideoListDataModel::initializeTestObjects()
hgs
parents:
diff changeset
   866
{
hgs
parents:
diff changeset
   867
hgs
parents:
diff changeset
   868
    mCollectionStub = NULL;
hgs
parents:
diff changeset
   869
    mTestObjectInitialized  = NULL;
hgs
parents:
diff changeset
   870
    mTestObjectNotInitialized = NULL;
hgs
parents:
diff changeset
   871
    
hgs
parents:
diff changeset
   872
   
hgs
parents:
diff changeset
   873
    mCollectionStub = new VideoCollectionClient();
hgs
parents:
diff changeset
   874
    if(!mCollectionStub)
hgs
parents:
diff changeset
   875
    {
hgs
parents:
diff changeset
   876
       return false;
hgs
parents:
diff changeset
   877
    }
hgs
parents:
diff changeset
   878
    
hgs
parents:
diff changeset
   879
    mTestObjectInitialized  = new VideoListDataModel();
hgs
parents:
diff changeset
   880
    if(!mTestObjectInitialized)
hgs
parents:
diff changeset
   881
    {
hgs
parents:
diff changeset
   882
       return false;
hgs
parents:
diff changeset
   883
    }
hgs
parents:
diff changeset
   884
    VideoCollectionClient::mFailConnectSignals = false;
hgs
parents:
diff changeset
   885
    VideoCollectionClient::mFailInitialize = false;
hgs
parents:
diff changeset
   886
    VideoListDataModelPrivate::mFailInit = false;
hgs
parents:
diff changeset
   887
    if( mTestObjectInitialized->initialize() == -1)
hgs
parents:
diff changeset
   888
    {
hgs
parents:
diff changeset
   889
       return false;
hgs
parents:
diff changeset
   890
    }
hgs
parents:
diff changeset
   891
    
hgs
parents:
diff changeset
   892
    mTestObjectNotInitialized  = new VideoListDataModel(); 
hgs
parents:
diff changeset
   893
    if(!mTestObjectNotInitialized)
hgs
parents:
diff changeset
   894
    {
hgs
parents:
diff changeset
   895
       return false;
hgs
parents:
diff changeset
   896
    }
hgs
parents:
diff changeset
   897
    
hgs
parents:
diff changeset
   898
    return true;
hgs
parents:
diff changeset
   899
   
hgs
parents:
diff changeset
   900
}
hgs
parents:
diff changeset
   901
hgs
parents:
diff changeset
   902
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   903
// cleanupTestObjects
hgs
parents:
diff changeset
   904
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   905
//
hgs
parents:
diff changeset
   906
void TestVideoListDataModel::cleanupTestObjects()
hgs
parents:
diff changeset
   907
{
hgs
parents:
diff changeset
   908
    delete mCollectionStub;
hgs
parents:
diff changeset
   909
    delete mTestObjectInitialized;
hgs
parents:
diff changeset
   910
    delete mTestObjectNotInitialized;
hgs
parents:
diff changeset
   911
}
hgs
parents:
diff changeset
   912
hgs
parents:
diff changeset
   913
hgs
parents:
diff changeset
   914
// End of file
hgs
parents:
diff changeset
   915
    
hgs
parents:
diff changeset
   916
hgs
parents:
diff changeset
   917