hgcacheproxymodel/tsrc/unit/test_hgcacheproxydatamodel.cpp
changeset 1 e48454f237ca
child 2 49c70dcc3f17
equal deleted inserted replaced
0:89c329efa980 1:e48454f237ca
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 *  Version     : %version: 3 %
       
    17 */
       
    18 #include <QtTest/QtTest>
       
    19 #include <hgwidgets/hgcacheproxymodel.h>
       
    20 #include "test_hgcacheproxydatamodel.h"
       
    21 
       
    22 #include "../../inc/hgbuffermanager.h"
       
    23 #include "bmhelper.h"
       
    24 
       
    25 #include "dataproviderhelper.h"
       
    26 #include "cacheproxyhelper.h"
       
    27 #include <QtDebug>
       
    28 
       
    29 // ======== MEMBER FUNCTIONS ========
       
    30 void TestCacheProxy::testQAbstractItemModel(QAbstractItemModel* model, int rows, int columns)
       
    31 {
       
    32     QVERIFY(model != 0);
       
    33     QModelIndex idx = model->index(0, 0);
       
    34     if ( rows > 0 && columns > 0){
       
    35         QVERIFY(idx.isValid() == true);
       
    36         QVERIFY(idx.row() == 0);
       
    37         QVERIFY(idx.column() == 0);
       
    38         
       
    39         idx = model->index(rows/2, 0);
       
    40         QVERIFY(idx.row() == rows/2);
       
    41         QVERIFY(idx.column() == 0);
       
    42         
       
    43         idx = model->index(0, columns/2);
       
    44         QVERIFY(idx.row() == 0);
       
    45         QVERIFY(idx.column() == columns/2);
       
    46     
       
    47         idx = model->index(-10, 0);
       
    48         QVERIFY(idx.row() == -10);
       
    49         QVERIFY(idx.column() == 0);
       
    50     
       
    51         idx = model->index(0, -10);
       
    52         QVERIFY(idx.row() == 0);
       
    53         QVERIFY(idx.column() == -10);
       
    54         
       
    55         idx = model->index(rows*2, 0);
       
    56         QVERIFY(idx.row() == -1);
       
    57         QVERIFY(idx.column() == 0);
       
    58     
       
    59         idx = model->index(0, columns*2);
       
    60         QVERIFY(idx.row() == 0);
       
    61         QVERIFY(idx.column() == -1);
       
    62     }else{
       
    63         QVERIFY(idx.row() == -1);
       
    64         QVERIFY(idx.column() == -1);
       
    65         
       
    66         idx = model->index(-10, 0);
       
    67         QVERIFY(idx.row() == -10);
       
    68         QVERIFY(idx.column() == -1);
       
    69 
       
    70         idx = model->index(0, -10);
       
    71         QVERIFY(idx.row() == -1);
       
    72         QVERIFY(idx.column() == -10);
       
    73 
       
    74         idx = model->index(10, 0);
       
    75         QVERIFY(idx.row() == -1);
       
    76         QVERIFY(idx.column() == -1);
       
    77         
       
    78         idx = model->index(0, 10);
       
    79         QVERIFY(idx.row() == -1);
       
    80         QVERIFY(idx.column() == -1);
       
    81     }
       
    82     
       
    83     idx = model->parent(idx);
       
    84     QVERIFY(idx.isValid() == false);
       
    85     QVERIFY(model->columnCount() == columns);
       
    86     QVERIFY(model->rowCount() == rows);
       
    87     
       
    88 //    QVERIFY(model->hasChildren() == false);
       
    89 //    QVERIFY(model->headerData(0, Qt::Horizontal).isValid == false);
       
    90     
       
    91 }
       
    92 
       
    93 void TestCacheProxy::initTestCase()
       
    94 {
       
    95     bm = 0;
       
    96     bmh = 0;
       
    97     dph = 0;
       
    98     cp = 0;   
       
    99     cph = 0;
       
   100 }
       
   101     
       
   102 void TestCacheProxy::cleanupTestCase()
       
   103 {
       
   104     delete bm;
       
   105     delete bmh;
       
   106     delete dph;   
       
   107     delete cp;
       
   108     delete cph;
       
   109 }
       
   110 
       
   111 void TestCacheProxy::init()
       
   112 {
       
   113     delete bm;
       
   114     delete bmh;
       
   115     bm = 0;
       
   116     bmh = 0;
       
   117 
       
   118     delete dph;
       
   119     dph = 0;
       
   120     
       
   121     delete cp;
       
   122     cp = 0;
       
   123     
       
   124     delete cph;
       
   125     cph = 0;
       
   126 }
       
   127 
       
   128 void TestCacheProxy::cleanup()
       
   129 {    
       
   130     delete bm;
       
   131     delete bmh;
       
   132     bm = 0;
       
   133     bmh = 0;
       
   134     
       
   135     delete dph;
       
   136     dph = 0;
       
   137 
       
   138     delete cp;
       
   139     cp = 0;
       
   140     
       
   141     delete cph;
       
   142     cph = 0;
       
   143 }
       
   144 
       
   145 //BufferManager
       
   146 void TestCacheProxy::testBM_SetPosition()
       
   147 {
       
   148     int totalsize = 100;
       
   149     int bufferSize = 100;
       
   150     bmh = new BMHelper(totalsize);
       
   151     bm = new HgBufferManager(bmh, bufferSize, 40, 110, totalsize);
       
   152     delete bmh;
       
   153     delete bm;
       
   154     
       
   155     totalsize = 100;
       
   156     bufferSize = 200;
       
   157     bmh = new BMHelper(totalsize);
       
   158     bm = new HgBufferManager(bmh, bufferSize, 40, -20, totalsize);
       
   159     delete bmh;
       
   160     delete bm;
       
   161 
       
   162     totalsize = 1000;
       
   163     bufferSize = 100;
       
   164     bmh = new BMHelper(totalsize);
       
   165     bm = new HgBufferManager(bmh, bufferSize, 40, 0, totalsize);
       
   166     
       
   167     QVERIFY(bmh->isIntergal(bufferSize));
       
   168 
       
   169     bm->setPosition(5);
       
   170     QVERIFY(bmh->isIntergal(bufferSize));
       
   171     
       
   172     bm->setPosition(23);
       
   173     QVERIFY(bmh->isIntergal(bufferSize));
       
   174 
       
   175     bm->setPosition(50);
       
   176     QVERIFY(bmh->isIntergal(bufferSize));
       
   177 
       
   178     bm->setPosition(111);
       
   179     QVERIFY(bmh->isIntergal(bufferSize));
       
   180 
       
   181     bm->setPosition(120);
       
   182     QVERIFY(bmh->isIntergal(bufferSize));
       
   183 
       
   184     bm->setPosition(130);
       
   185     QVERIFY(bmh->isIntergal(bufferSize));
       
   186     
       
   187     bm->setPosition(271);
       
   188     QVERIFY(bmh->isIntergal(bufferSize));
       
   189     
       
   190     bm->setPosition(507);
       
   191     QVERIFY(bmh->isIntergal(bufferSize));
       
   192     
       
   193     bm->setPosition(800);
       
   194     QVERIFY(bmh->isIntergal(bufferSize));
       
   195     
       
   196     bm->setPosition(880);
       
   197     QVERIFY(bmh->isIntergal(bufferSize));
       
   198     
       
   199     bm->setPosition(899);
       
   200     QVERIFY(bmh->isIntergal(bufferSize));
       
   201     
       
   202     bm->setPosition(910);
       
   203     QVERIFY(bmh->isIntergal(bufferSize));
       
   204     
       
   205     bm->setPosition(950);
       
   206     QVERIFY(bmh->isIntergal(bufferSize));
       
   207     
       
   208     bm->setPosition(996);
       
   209     QVERIFY(bmh->isIntergal(bufferSize));
       
   210     
       
   211     bm->setPosition(1000);
       
   212     QVERIFY(bmh->isIntergal(bufferSize));
       
   213     
       
   214     bm->setPosition(1200);
       
   215     QVERIFY(bmh->isIntergal(bufferSize));
       
   216     
       
   217     bm->setPosition(950);
       
   218     QVERIFY(bmh->isIntergal(bufferSize));
       
   219     
       
   220     bm->setPosition(501);
       
   221     QVERIFY(bmh->isIntergal(bufferSize));
       
   222     
       
   223     bm->setPosition(160);
       
   224     QVERIFY(bmh->isIntergal(bufferSize));
       
   225 
       
   226     bm->setPosition(150);
       
   227     QVERIFY(bmh->isIntergal(bufferSize));
       
   228 
       
   229     bm->setPosition(140);
       
   230     QVERIFY(bmh->isIntergal(bufferSize));
       
   231     
       
   232     bm->setPosition(100);
       
   233     QVERIFY(bmh->isIntergal(bufferSize));
       
   234     
       
   235     bm->setPosition(37);
       
   236     QVERIFY(bmh->isIntergal(bufferSize));
       
   237    
       
   238     bm->setPosition(1);
       
   239     QVERIFY(bmh->isIntergal(bufferSize));
       
   240     
       
   241     bm->setPosition(-200);
       
   242     QVERIFY(bmh->isIntergal(bufferSize));
       
   243     
       
   244     bm->setPosition(250);
       
   245     QVERIFY(bmh->isIntergal(bufferSize));
       
   246     
       
   247     bm->setPosition(-100);
       
   248     QVERIFY(bmh->isIntergal(bufferSize));
       
   249     
       
   250     bm->setPosition(891);
       
   251     QVERIFY(bmh->isIntergal(bufferSize));
       
   252 }
       
   253 
       
   254 void TestCacheProxy::testBM_ResetBuffer()
       
   255 {
       
   256     int totalsize = 1000;
       
   257     int bufferSize = 100;
       
   258     bmh = new BMHelper(totalsize);
       
   259     bm = new HgBufferManager(bmh, bufferSize, 40, 0, totalsize);
       
   260 
       
   261     bm->resetBuffer(0, totalsize);
       
   262     QVERIFY(bmh->isIntergal(bufferSize));
       
   263     
       
   264     bm->setPosition(891);
       
   265     bm->resetBuffer(0, totalsize);
       
   266     QVERIFY(bmh->isIntergal(bufferSize));
       
   267     
       
   268     bm->resetBuffer(880, totalsize);
       
   269     QVERIFY(bmh->isIntergal(bufferSize));
       
   270 
       
   271     bm->setPosition(891);
       
   272     bm->resetBuffer(880, totalsize);
       
   273     QVERIFY(bmh->isIntergal(bufferSize));
       
   274     
       
   275     bm->setPosition(999);
       
   276     bm->resetBuffer(0, totalsize);
       
   277     QVERIFY(bmh->isIntergal(bufferSize));
       
   278     
       
   279     bm->setPosition(999);
       
   280     bm->resetBuffer(995, totalsize);
       
   281     QVERIFY(bmh->isIntergal(bufferSize));
       
   282     
       
   283     bm->setPosition(10);
       
   284     bm->resetBuffer(910, totalsize);
       
   285     QVERIFY(bmh->isIntergal(bufferSize));
       
   286     
       
   287     bm->resetBuffer(10, totalsize);
       
   288     QVERIFY(bmh->isIntergal(bufferSize));
       
   289 }
       
   290 
       
   291 void TestCacheProxy::testBM_ItemCountChanged()
       
   292 {
       
   293     int totalsize = 1000;
       
   294     int bufferSize = 100;
       
   295     bmh = new BMHelper(totalsize);
       
   296     bm = new HgBufferManager(bmh, bufferSize, 40, 0, totalsize);    
       
   297     
       
   298     totalsize--;
       
   299     bmh->itemCountChanged(0, true, totalsize);
       
   300     bm->itemCountChanged(0, true, totalsize);
       
   301     QVERIFY(bmh->isIntergal(bufferSize));
       
   302 
       
   303     totalsize--;
       
   304     bmh->itemCountChanged(150, true, totalsize);
       
   305     bm->itemCountChanged(150, true, totalsize);
       
   306     QVERIFY(bmh->isIntergal(bufferSize));
       
   307 
       
   308     totalsize--;
       
   309     bm->setPosition(100);
       
   310     bmh->itemCountChanged(150, true, totalsize);
       
   311     bm->itemCountChanged(150, true, totalsize);
       
   312     QVERIFY(bmh->isIntergal(bufferSize));
       
   313 
       
   314     totalsize--;
       
   315     bm->setPosition(891);
       
   316     bmh->itemCountChanged(150, true, totalsize);
       
   317     bm->itemCountChanged(150, true, totalsize);
       
   318     QVERIFY(bmh->isIntergal(bufferSize));
       
   319     
       
   320     totalsize--;
       
   321     bm->setPosition(900);
       
   322     bmh->itemCountChanged(890, true, totalsize);
       
   323     bm->itemCountChanged(890, true, totalsize);
       
   324     QVERIFY(bmh->isIntergal(bufferSize));
       
   325     
       
   326     totalsize--;
       
   327     bm->setPosition(totalsize);
       
   328     bmh->itemCountChanged(totalsize, true, totalsize);
       
   329     bm->itemCountChanged(totalsize, true, totalsize);
       
   330     QVERIFY(bmh->isIntergal(bufferSize));
       
   331     
       
   332     totalsize--;
       
   333     bm->setPosition(totalsize+200);
       
   334     bmh->itemCountChanged(totalsize+200, true, totalsize);
       
   335     bm->itemCountChanged(totalsize+200, true, totalsize);
       
   336     QVERIFY(bmh->isIntergal(bufferSize));
       
   337     
       
   338     
       
   339     totalsize= totalsize - 10;
       
   340     bm->setPosition(0);
       
   341     bmh->itemCountChanged(0, true, totalsize);
       
   342     bm->itemCountChanged(0, true, totalsize);
       
   343     QVERIFY(bmh->isIntergal(bufferSize));
       
   344     
       
   345     totalsize= totalsize - 10;
       
   346     bm->setPosition(totalsize);
       
   347     bmh->itemCountChanged(totalsize, true, totalsize);
       
   348     bm->itemCountChanged(totalsize, true, totalsize);
       
   349     QVERIFY(bmh->isIntergal(bufferSize));
       
   350     
       
   351     totalsize= totalsize - 10;
       
   352     bm->setPosition(totalsize/2);
       
   353     bmh->itemCountChanged(totalsize/2, true, totalsize);
       
   354     bm->itemCountChanged(totalsize/2, true, totalsize);
       
   355     QVERIFY(bmh->isIntergal(bufferSize));
       
   356     
       
   357     totalsize++;
       
   358     bm->setPosition(0);
       
   359     bmh->itemCountChanged(0, false, totalsize);
       
   360     bm->itemCountChanged(0, false, totalsize);
       
   361     QVERIFY(bmh->isIntergal(bufferSize));
       
   362     
       
   363     totalsize++;    
       
   364     bmh->itemCountChanged(50, false, totalsize);
       
   365     bm->itemCountChanged(50, false, totalsize);
       
   366     QVERIFY(bmh->isIntergal(bufferSize));
       
   367     
       
   368     totalsize++;    
       
   369     bm->setPosition(100);
       
   370     bmh->itemCountChanged(80, false, totalsize);
       
   371     bm->itemCountChanged(80, false, totalsize);
       
   372     QVERIFY(bmh->isIntergal(bufferSize));
       
   373     
       
   374     totalsize++;    
       
   375     bm->setPosition(500);
       
   376     bmh->itemCountChanged(480, false, totalsize);
       
   377     bm->itemCountChanged(480, false, totalsize);
       
   378     QVERIFY(bmh->isIntergal(bufferSize));
       
   379     
       
   380     totalsize++;    
       
   381     bm->setPosition(totalsize-20);
       
   382     bmh->itemCountChanged(totalsize, false, totalsize);
       
   383     bm->itemCountChanged(totalsize, false, totalsize);
       
   384     QVERIFY(bmh->isIntergal(bufferSize));
       
   385     
       
   386     totalsize=totalsize+10;
       
   387     bm->setPosition(totalsize-20);
       
   388     bmh->itemCountChanged(totalsize, false, totalsize);
       
   389     bm->itemCountChanged(totalsize, false, totalsize);
       
   390     QVERIFY(bmh->isIntergal(bufferSize));
       
   391     
       
   392     totalsize=totalsize+10;
       
   393     bm->setPosition(20);
       
   394     bmh->itemCountChanged(totalsize, false, totalsize);
       
   395     bm->itemCountChanged(totalsize, false, totalsize);
       
   396     QVERIFY(bmh->isIntergal(bufferSize));
       
   397 
       
   398     totalsize=totalsize+10;
       
   399     bm->setPosition(totalsize/2-20);
       
   400     bmh->itemCountChanged(totalsize, false, totalsize);
       
   401     bm->itemCountChanged(totalsize, false, totalsize);
       
   402     QVERIFY(bmh->isIntergal(bufferSize));   
       
   403 }
       
   404 
       
   405 void TestCacheProxy::testBM_ResizeCache()
       
   406 {
       
   407     int totalsize = 1000;
       
   408     int bufferSize = 100;
       
   409     bmh = new BMHelper(totalsize);
       
   410     bm = new HgBufferManager(bmh, bufferSize, 40, 0, totalsize);
       
   411     
       
   412     bm->resizeCache(100, 40);
       
   413     QVERIFY(bmh->isIntergal(bufferSize));
       
   414     
       
   415     bufferSize = 50;
       
   416     bm->resizeCache(bufferSize, 40);
       
   417     QVERIFY(bmh->isIntergal(bufferSize));
       
   418     
       
   419     bufferSize = 150;
       
   420     bm->resizeCache(bufferSize, 50);
       
   421     QVERIFY(bmh->isIntergal(bufferSize));
       
   422     
       
   423     bm->setPosition(30);
       
   424     bm->resizeCache(bufferSize, 30);
       
   425     QVERIFY(bmh->isIntergal(bufferSize));
       
   426     
       
   427     bufferSize = 50;
       
   428     bm->resizeCache(bufferSize, 40);
       
   429     QVERIFY(bmh->isIntergal(bufferSize));
       
   430     
       
   431     bufferSize = 150;
       
   432     bm->resizeCache(bufferSize, 40);
       
   433     QVERIFY(bmh->isIntergal(bufferSize));
       
   434 
       
   435     bm->setPosition(500);
       
   436     bm->resizeCache(bufferSize, 40);
       
   437     QVERIFY(bmh->isIntergal(bufferSize));
       
   438     
       
   439     bufferSize = 50;
       
   440     bm->resizeCache(bufferSize, 40);
       
   441     QVERIFY(bmh->isIntergal(bufferSize));
       
   442     
       
   443     bufferSize = 151;
       
   444     bm->resizeCache(bufferSize, 40);
       
   445     QVERIFY(bmh->isIntergal(bufferSize));
       
   446     
       
   447     bm->setPosition(totalsize-20);
       
   448     bm->resizeCache(bufferSize, 40);
       
   449     QVERIFY(bmh->isIntergal(bufferSize));
       
   450     
       
   451     bufferSize = 53;
       
   452     bm->resizeCache(bufferSize, 40);
       
   453     QVERIFY(bmh->isIntergal(bufferSize));
       
   454     
       
   455     bufferSize = 150;
       
   456     bm->resizeCache(bufferSize, 40);
       
   457     QVERIFY(bmh->isIntergal(bufferSize));
       
   458     
       
   459     bm->setPosition(totalsize);
       
   460     bm->resizeCache(bufferSize, 40);
       
   461     QVERIFY(bmh->isIntergal(bufferSize));
       
   462     
       
   463     bufferSize = 50;
       
   464     bm->resizeCache(bufferSize, 40);
       
   465     QVERIFY(bmh->isIntergal(bufferSize));
       
   466     
       
   467     bufferSize = 175;
       
   468     bm->resizeCache(bufferSize, 40);
       
   469     QVERIFY(bmh->isIntergal(bufferSize));
       
   470 }
       
   471 
       
   472 //DataProvider
       
   473 void TestCacheProxy::testDP_QAbstractItemModel()
       
   474 {
       
   475     dph = new DataProviderHelper();
       
   476     delete dph;
       
   477     dph = new DataProviderHelper(200);
       
   478     testQAbstractItemModel(dph, 200, 1);
       
   479 }
       
   480 
       
   481 void TestCacheProxy::testDP_RequestReleaseAndData()
       
   482 {
       
   483     dph = new DataProviderHelper();
       
   484     QModelIndex idx = dph->index(0,0);
       
   485     QVariant res = dph->data(idx, Qt::DisplayRole);
       
   486     QVERIFY(res.isValid() == true);
       
   487     QString s = res.toString(); 
       
   488     QVERIFY(s.isNull() == false);
       
   489 
       
   490     res = dph->data(idx, Qt::UserRole+1); //int value (not less then 0)
       
   491     QVERIFY(res.isValid() == true);
       
   492     QVERIFY(res.toInt() >= 0);
       
   493     
       
   494     res = dph->data(idx, Qt::UserRole+100); //should be empty
       
   495     QVERIFY(res.isValid() == false);
       
   496 
       
   497     res = dph->data(idx, Qt::DecorationRole); //should give defaultIcon();
       
   498     QVERIFY(res.isValid() == true);
       
   499     s = res.toString(); 
       
   500     QVERIFY(s.isNull() == false);
       
   501     QVERIFY(res == dph->defaultIcon());
       
   502 
       
   503     idx = dph->index(-10, 0);
       
   504     res = dph->data(idx, Qt::DisplayRole);
       
   505     QVERIFY(res.isValid() == false);
       
   506 
       
   507     idx = dph->index(1000000, 0);
       
   508     res = dph->data(idx, Qt::DisplayRole);
       
   509     QVERIFY(res.isValid() == false);
       
   510 
       
   511     QList<int> list;
       
   512     list<<-1;
       
   513     list<<0;
       
   514     list<<1;
       
   515     list<<2;
       
   516     list<<1000000;
       
   517     dph->registerObserver(dph);
       
   518     dph->request(list);
       
   519     QList< QPair< int, int > > updates = dph->getObserverDataUpdated();
       
   520     QVERIFY(updates.count() == 3); //3 updates - for 0 1 and 2
       
   521     QVERIFY(updates[0].first == 0); //for 0
       
   522     QVERIFY(updates[0].second == 0); //for 0
       
   523     QVERIFY(updates[1].first == 1); //for 1
       
   524     QVERIFY(updates[1].second == 1); //for 1
       
   525     QVERIFY(updates[2].first == 2); //for 2
       
   526     QVERIFY(updates[2].second == 2); //for 2
       
   527     
       
   528     idx = dph->index(0,0);
       
   529     res = dph->data(idx, Qt::DecorationRole);
       
   530     QVERIFY(res.isValid() == true);
       
   531     s = res.toString(); 
       
   532     QVERIFY(s.isNull() == false);
       
   533     s = QString("MyNiceIcon %1").arg(0);
       
   534     QVERIFY(res.toString() == s);
       
   535 
       
   536     idx = dph->index(1,0);
       
   537     res = dph->data(idx, Qt::DecorationRole);
       
   538     QVERIFY(res.isValid() == true);
       
   539     s = res.toString(); 
       
   540     QVERIFY(s.isNull() == false);
       
   541     s = QString("MyNiceIcon 1");
       
   542     QVERIFY(res.toString() == s);
       
   543     
       
   544     idx = dph->index(2,0);
       
   545     res = dph->data(idx, Qt::DecorationRole);
       
   546     QVERIFY(res.isValid() == true);
       
   547     s = res.toString(); 
       
   548     QVERIFY(s.isNull() == false);
       
   549     s = QString("MyNiceIcon 2");
       
   550     QVERIFY(res.toString() == s);
       
   551     
       
   552     idx = dph->index(3,0);
       
   553     res = dph->data(idx, Qt::DecorationRole);
       
   554     QVERIFY(res.isValid() == true);
       
   555     s = res.toString(); 
       
   556     QVERIFY(s.isNull() == false);
       
   557     s = QString("MyNiceIcon 3");
       
   558     QVERIFY(res.toString() != s);
       
   559     QVERIFY(res == dph->defaultIcon());    
       
   560     
       
   561     dph->release(list, false);
       
   562     updates = dph->getObserverDataUpdated();
       
   563     QVERIFY(updates.count() == 0); //0 updates - updates from emit not observer
       
   564     updates = dph->getSignalDataUpdated();
       
   565     QVERIFY(updates.count() == 1); //1 update for all items
       
   566     QVERIFY(updates[0].first == 0); //for 0
       
   567     QVERIFY(updates[0].second == 2); //for 0
       
   568     
       
   569     idx = dph->index(0, 0);
       
   570     res = dph->data(idx, Qt::DecorationRole);
       
   571     QVERIFY(res == dph->defaultIcon());    
       
   572 
       
   573     idx = dph->index(1, 0);
       
   574     res = dph->data(idx, Qt::DecorationRole);
       
   575     QVERIFY(res == dph->defaultIcon());    
       
   576 
       
   577     idx = dph->index(2, 0);
       
   578     res = dph->data(idx, Qt::DecorationRole);
       
   579     QVERIFY(res == dph->defaultIcon());    
       
   580     
       
   581     idx = dph->index(3, 0);
       
   582     res = dph->data(idx, Qt::DecorationRole);
       
   583     QVERIFY(res == dph->defaultIcon());    
       
   584     dph->registerObserver(NULL);
       
   585     dph->request(list);
       
   586     updates = dph->getObserverDataUpdated();
       
   587     QVERIFY(updates.count() == 0); //0 updates - no observer
       
   588     dph->getSignalDataUpdated();
       
   589     dph->release(list, false);
       
   590     updates = dph->getObserverDataUpdated();
       
   591     QVERIFY(updates.count() == 0); //0 updates - no observer
       
   592 }
       
   593 
       
   594 void TestCacheProxy::testDP_CacheManagment()
       
   595 {
       
   596     dph = new DataProviderHelper(100);
       
   597     //signals status reset
       
   598     dph->getObserverDataUpdated();
       
   599     dph->getSignalDataUpdated();
       
   600     dph->getSignalRowsAboutToBeInserted();    
       
   601     dph->getSignalRowsInserted();
       
   602     dph->getSignalRowsAboutToBeRemoved();    
       
   603     dph->getSignalRowsRemoved();
       
   604     dph->getSignalAboutToBeReset();
       
   605     dph->getSignalReset();
       
   606     
       
   607     int size = dph->rowCount();
       
   608     QModelIndex idx;
       
   609     QVariant res;
       
   610     for ( int i=0; i<size; i++){
       
   611         idx = dph->index(i,0);
       
   612         res = dph->data(idx, Qt::UserRole+1);
       
   613         QVERIFY(res.isValid() == true);
       
   614         QVERIFY(res.toInt() == i);   
       
   615     }
       
   616     idx = dph->index(0,0);
       
   617     dph->testClearCache();    
       
   618     res = dph->data(idx, Qt::DisplayRole);
       
   619     QVERIFY(res.isValid() == false);
       
   620     
       
   621     QList< QPair< QVariant, int > > list;
       
   622     QString s = "NEWITEM";
       
   623     list.append( QPair< QVariant, int >(s, Qt::DisplayRole) );
       
   624     
       
   625     dph->testUpdate(0, &list, false); //update shouldn't change - no item
       
   626     dph->testUpdate(-1, &list, true); //update shouldn't change - no item
       
   627     dph->testUpdate(120000, &list, false); //update shouldn't change - no item
       
   628     res = dph->data(idx, Qt::DisplayRole);
       
   629     QVERIFY(res.isValid() == false);
       
   630     QVERIFY(dph->getObserverDataUpdated().count() == 0);
       
   631 
       
   632     dph->testNewItem(&list, false);
       
   633     QList< QPair< int, int > > resList = dph->getSignalRowsAboutToBeInserted();
       
   634     QVERIFY(resList.count() == 1);
       
   635     QVERIFY(resList[0].first == 0); //for item 0
       
   636     QVERIFY(resList[0].second == 0); //for item 0
       
   637     resList = dph->getSignalRowsInserted();
       
   638     QVERIFY(resList.count() == 1);
       
   639     QVERIFY(resList[0].first == 0); //for item 0
       
   640     QVERIFY(resList[0].second == 0); //for item 0
       
   641     
       
   642     QVERIFY(dph->rowCount() == 1);
       
   643     
       
   644     idx = dph->index(0,0);
       
   645     res = dph->data(idx, Qt::DisplayRole);
       
   646     QVERIFY(res.isValid() == true);
       
   647     QVERIFY(res == s);
       
   648     dph->testNewItem(&list, true);
       
   649     QVERIFY(dph->getSignalRowsAboutToBeInserted().count() == 0);//no updates it was suuposed to be silent
       
   650     QVERIFY(dph->getSignalRowsInserted().count() == 0);//no updates it was suuposed to be silent    
       
   651     QVERIFY(dph->rowCount() == 2);
       
   652 
       
   653     dph->testNewItem(&list, false);
       
   654     dph->testNewItem(&list, false);
       
   655     resList = dph->getSignalRowsInserted();
       
   656     QVERIFY(resList.count() == 2);
       
   657     QVERIFY(resList[0].first == 2); //for item 2
       
   658     QVERIFY(resList[0].second == 2); //for item 2
       
   659     QVERIFY(resList[1].first == 3); //for item 3
       
   660     QVERIFY(resList[1].second == 3); //for item 3
       
   661 
       
   662     list.clear();
       
   663     QString s2 = "NEWITEM2";
       
   664     list.append( QPair< QVariant, int >(s2, Qt::DisplayRole) );
       
   665     dph->testUpdate(0, &list, false);
       
   666     resList = dph->getSignalDataUpdated();
       
   667     QVERIFY(resList.count() == 1);
       
   668     QVERIFY(resList[0].first == 0);
       
   669     QVERIFY(resList[0].second == 0);
       
   670     res = dph->data(idx, Qt::DisplayRole);
       
   671     QVERIFY(res.isValid() == true);
       
   672     QVERIFY(res == s2);
       
   673     
       
   674     dph->testRemoveItems(0, 1);//should remove item
       
   675     resList = dph->getSignalRowsAboutToBeRemoved();
       
   676     QVERIFY(resList.count() == 1);
       
   677     QVERIFY(resList[0].first == 0);
       
   678     QVERIFY(resList[0].second == 0);
       
   679     resList = dph->getSignalRowsRemoved();
       
   680     QVERIFY(resList.count() == 1);
       
   681     QVERIFY(resList[0].first == 0);
       
   682     QVERIFY(resList[0].second == 0);
       
   683     
       
   684     QVERIFY(dph->rowCount() == 3);
       
   685     dph->testRemoveItems(-2, 10);//should remove remaining items (0,1, 2)
       
   686     resList = dph->getSignalRowsAboutToBeRemoved();
       
   687     QVERIFY(resList.count() == 1);
       
   688     QVERIFY(resList[0].first == 0);
       
   689     QVERIFY(resList[0].second == 2);
       
   690 
       
   691     QVERIFY(dph->rowCount() == 0);
       
   692     idx = dph->index(0,0);
       
   693     res = dph->data(idx, Qt::DisplayRole); //invalid variant, for not existing item
       
   694     QVERIFY(res.isValid() == false);
       
   695     
       
   696     QVERIFY(dph->getSignalAboutToBeReset() == false);
       
   697     QVERIFY(dph->getSignalReset() == false);    
       
   698     dph->resetModel();
       
   699     QVERIFY(dph->getSignalAboutToBeReset() == true);
       
   700     QVERIFY(dph->getSignalReset() == true);
       
   701     QVERIFY(dph->columnCount() == 1);
       
   702     QVERIFY(dph->rowCount() == 1000);
       
   703     idx = dph->index(0,0);
       
   704     res = dph->data(idx, Qt::DisplayRole);
       
   705     QVERIFY(res.isValid() == true);
       
   706     QVERIFY(res.toString().startsWith(QString("NEW ITEM")) == true);    
       
   707     
       
   708     dph->testRemoveItems(0, 100);//should remove items 0 - 99
       
   709     QVERIFY(dph->rowCount() == 900);
       
   710     idx = dph->index(0,0);
       
   711     res = dph->data(idx, Qt::UserRole+1);
       
   712     QVERIFY(res.isValid() == true);
       
   713     QVERIFY(res.toInt() == 100);
       
   714     
       
   715     dph->testUpdate(0, QString(""), Qt::DisplayRole, false);
       
   716     idx = dph->index(0,0);
       
   717     res = dph->data(idx, Qt::DisplayRole);
       
   718     QVERIFY(res.isValid() == true);
       
   719     QVERIFY(res.toString() == QString(""));    
       
   720 
       
   721     resList = dph->getSignalDataUpdated();
       
   722     QVERIFY(resList.count() == 1);
       
   723     QVERIFY(resList[0].first == 0);
       
   724     QVERIFY(resList[0].second == 0);
       
   725     
       
   726     dph->testNewItem( QPair< QVariant, int >(QString(""), Qt::DisplayRole), false);
       
   727     resList = dph->getSignalRowsInserted();
       
   728     QVERIFY(resList.count() == 1);
       
   729     QVERIFY(resList[0].first == dph->rowCount()-1);
       
   730     QVERIFY(resList[0].second == dph->rowCount()-1);
       
   731     
       
   732     dph->getSignalRowsInserted();
       
   733     dph->getSignalRowsRemoved();
       
   734     dph->testInsertItem(100, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false);
       
   735     resList = dph->getSignalRowsInserted();
       
   736     QVERIFY(resList.count() == 1);
       
   737     QVERIFY(resList[0].first == 100);
       
   738     QVERIFY(resList[0].second == 100);
       
   739     dph->testRemoveItem(100);
       
   740     resList = dph->getSignalRowsRemoved();
       
   741     QVERIFY(resList.count() == 1);
       
   742     QVERIFY(resList[0].first == 100);
       
   743     QVERIFY(resList[0].second == 100); 
       
   744     
       
   745     dph->getSignalRowsInserted();
       
   746     dph->getSignalRowsRemoved();
       
   747     dph->testInsertItem(-10, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with -10 puts it at begining
       
   748     resList = dph->getSignalRowsInserted();
       
   749     QVERIFY(resList.count() == 1);
       
   750     QVERIFY(resList[0].first == 0);
       
   751     QVERIFY(resList[0].second == 0);
       
   752     dph->testRemoveItem(-10);
       
   753     resList = dph->getSignalRowsRemoved();
       
   754     QVERIFY(resList.count() == 0);
       
   755 
       
   756     dph->getSignalRowsInserted();
       
   757     dph->getSignalRowsRemoved();
       
   758     dph->testInsertItem(100000, QPair< QVariant, int >(QString(""), Qt::DisplayRole), false); //insert with beyond range puts it at end
       
   759     resList = dph->getSignalRowsInserted();
       
   760     QVERIFY(resList.count() == 1);
       
   761     QVERIFY(resList[0].first == dph->rowCount()-1);
       
   762     QVERIFY(resList[0].second == dph->rowCount()-1);    
       
   763     dph->testRemoveItem(100000);
       
   764     resList = dph->getSignalRowsRemoved();
       
   765     QVERIFY(resList.count() == 0);
       
   766     
       
   767     idx = dph->index(579,0);
       
   768     QMap<int, QVariant> it = dph->itemData(idx);
       
   769     QCOMPARE(it.size(), 4);
       
   770     QCOMPARE(it.contains(Qt::DisplayRole), true);
       
   771     QVariant r2 = it[Qt::DisplayRole];
       
   772     QCOMPARE(r2.isValid(), true);
       
   773     res = dph->data(idx, Qt::DisplayRole);
       
   774     QCOMPARE(res.isValid(), true);
       
   775     QCOMPARE(res.toString(), r2.toString());
       
   776     
       
   777 }
       
   778 
       
   779 void TestCacheProxy::testDP_QPixmapPool()
       
   780 {
       
   781     dph = new DataProviderHelper(100);
       
   782     QPixmap pix;
       
   783     QVariant res = dph->testCreateIcon(0, pix);
       
   784     QVERIFY(res.isValid() == false);
       
   785 
       
   786     dph->resizeQPixmapPool(10);
       
   787     
       
   788     res = dph->testCreateIcon(0, pix);
       
   789     QVERIFY(res.isValid() == true);
       
   790     QVERIFY(res != dph->defaultIcon());
       
   791     
       
   792     QVariant res2 = dph->testCreateIcon(0, pix);
       
   793     QVERIFY(res2.isValid() == true);
       
   794     QVERIFY(res != dph->defaultIcon());   
       
   795 
       
   796     dph->testCreateIcon(0, pix);
       
   797     dph->testCreateIcon(1, pix);
       
   798     dph->testCreateIcon(2, pix);    
       
   799     dph->testCreateIcon(3, pix);
       
   800     dph->testCreateIcon(4, pix);
       
   801     
       
   802     dph->testReleasePixmap(-10);
       
   803     dph->testReleasePixmap(4);
       
   804     dph->testReleasePixmap(5);
       
   805     dph->testReleasePixmap(200);
       
   806     dph->resizeQPixmapPool(20);
       
   807     dph->resizeQPixmapPool(5);
       
   808     dph->testReleasePixmap(100);
       
   809     dph->resizeQPixmapPool(100);
       
   810     dph->resizeQPixmapPool(2);
       
   811     dph->testReleasePixmap(1);
       
   812     dph->testReleasePixmap(2);
       
   813     dph->testReleasePixmap(3);
       
   814     dph->testReleasePixmap(4);
       
   815     dph->testCreateIcon(1, pix);
       
   816     dph->testCreateIcon(2, pix);
       
   817     dph->testCreateIcon(3, pix);
       
   818     dph->testCreateIcon(4, pix);
       
   819     dph->testCreateIcon(6, pix);
       
   820     dph->resizeQPixmapPool(1);
       
   821     res = dph->testCreateIcon(10, pix);
       
   822     QVERIFY(res.isValid() == false);    
       
   823 }
       
   824 
       
   825 void TestCacheProxy::testCP_QAbstractItemModel()
       
   826 {
       
   827     cp = new HgCacheProxyModel();
       
   828     dph = new DataProviderHelper(200);
       
   829     testQAbstractItemModel(cp, 0, 0);
       
   830 
       
   831     cp->setDataProvider(dph);
       
   832     QVERIFY(cp->DataProvider() == dph);
       
   833     testQAbstractItemModel(cp, 200, 1);
       
   834     cp->setDataProvider(0);
       
   835     QVERIFY(cp->DataProvider() == 0);
       
   836 }
       
   837 
       
   838 void TestCacheProxy::testCP_SignalsForward()
       
   839 {
       
   840     cp = new HgCacheProxyModel();
       
   841     cph = new CacheProxyHelper(cp);
       
   842     dph = new DataProviderHelper(200);    
       
   843     cp->setDataProvider(dph, 50, 20);
       
   844     
       
   845     QList< QPair< int, int > > resList = cph->getSignalDataChanged();
       
   846     QVERIFY(resList.count() == 50);
       
   847     QVERIFY(resList[0].first == 0);
       
   848     QVERIFY(resList[0].second == 0);
       
   849     QVERIFY(resList[49].first == 49);
       
   850     QVERIFY(resList[49].second == 49);
       
   851     
       
   852     QList< QPair< QVariant, int > > list;
       
   853     QString s = "NEWITEM";
       
   854     list.append( QPair< QVariant, int >(s, Qt::DisplayRole) );
       
   855 
       
   856     dph->testNewItem(&list, false);
       
   857     resList = cph->getSignalRowsAboutToBeInserted();
       
   858     QVERIFY(resList.count() == 1);
       
   859     QVERIFY(resList[0].first == dph->rowCount()-1);
       
   860     QVERIFY(resList[0].second == dph->rowCount()-1);
       
   861     resList = cph->getSignalRowsInserted();
       
   862     QVERIFY(resList.count() == 1);
       
   863     QVERIFY(resList[0].first == dph->rowCount()-1);
       
   864     QVERIFY(resList[0].second == dph->rowCount()-1);
       
   865     
       
   866     dph->testRemoveItems(0, 1);//should remove item
       
   867     resList = cph->getSignalRowsAboutToBeRemoved();
       
   868     QVERIFY(resList.count() == 1);
       
   869     QVERIFY(resList[0].first == 0);
       
   870     QVERIFY(resList[0].second == 0);
       
   871     resList = cph->getSignalRowsRemoved();
       
   872     QVERIFY(resList.count() == 1);
       
   873     QVERIFY(resList[0].first == 0);
       
   874     QVERIFY(resList[0].second == 0);
       
   875     
       
   876     cph->getSignalModelAboutToBeReset();
       
   877     cph->getSignalModelReset();
       
   878     dph->resetModel();
       
   879     QVERIFY(cph->getSignalModelAboutToBeReset() == true);
       
   880     QVERIFY(cph->getSignalModelReset() == true);
       
   881     QVERIFY(cp->columnCount() == 1);
       
   882     QVERIFY(cp->rowCount() == 1000);
       
   883 
       
   884 }
       
   885 
       
   886 void TestCacheProxy::testCP_ResizeCache()
       
   887 {
       
   888     cp = new HgCacheProxyModel();
       
   889     cph = new CacheProxyHelper(cp);
       
   890     dph = new DataProviderHelper(200);
       
   891     cp->setDataProvider(dph, 50, 20);
       
   892     dph->getLastRelease();
       
   893     dph->getLastRequest();
       
   894     cp->resizeCache(20, 5);
       
   895     
       
   896     QList<int> l = dph->getLastRelease();
       
   897     QVERIFY(l.count() > 0);
       
   898     l = dph->getLastRequest();
       
   899     QVERIFY(l.count() == 0);
       
   900     
       
   901     dph->getLastRelease();
       
   902     dph->getLastRequest();
       
   903     cp->resizeCache(100, 5);
       
   904     dph->getLastRelease();
       
   905     QVERIFY(l.count() == 0);
       
   906     l = dph->getLastRequest();
       
   907     QVERIFY(l.count() > 0);
       
   908 }
       
   909 
       
   910 void TestCacheProxy::testCP_Data()
       
   911 {
       
   912     cp = new HgCacheProxyModel();
       
   913     cph = new CacheProxyHelper(cp);
       
   914     dph = new DataProviderHelper(200);
       
   915     cp->setDataProvider(dph, 50, 20);
       
   916     dph->getLastRelease();
       
   917     dph->getLastRequest();
       
   918     
       
   919     QModelIndex idx = cp->index(0, 0);
       
   920     QVariant res = cp->data(idx, Qt::UserRole+1);
       
   921     QCOMPARE(res.isValid(), true);
       
   922     QCOMPARE(res.toInt(), 0);
       
   923     
       
   924     idx = cp->index(100, 0);
       
   925     res = cp->data(idx, Qt::UserRole+1);
       
   926     QCOMPARE(res.isValid(), true);
       
   927     QCOMPARE(res.toInt(), 100);
       
   928     
       
   929     idx = cp->index(101, 0);
       
   930     res = cp->data(idx, Qt::UserRole+1);
       
   931     QCOMPARE(res.isValid(), true);
       
   932     QCOMPARE(res.toInt(), 101);
       
   933 
       
   934     idx = cp->index(50, 0);
       
   935     res = cp->data(idx, Qt::UserRole+1);
       
   936     QCOMPARE(res.isValid(), true);
       
   937     QCOMPARE(res.toInt(), 50);
       
   938     
       
   939     idx = cp->index(40, 0);
       
   940     res = cp->data(idx, Qt::UserRole+1);
       
   941     QCOMPARE(res.isValid(), true);
       
   942     QCOMPARE(res.toInt(), 40);
       
   943     
       
   944     idx = cp->index(35, 0);
       
   945     res = cp->data(idx, Qt::UserRole+1);
       
   946     QCOMPARE(res.isValid(), true);
       
   947     QCOMPARE(res.toInt(), 35);
       
   948     
       
   949     idx = cp->index(25, 0);
       
   950     res = cp->data(idx, Qt::UserRole+1);
       
   951     QCOMPARE(res.isValid(), true);
       
   952     QCOMPARE(res.toInt(), 25);
       
   953     
       
   954     int v = 234234;
       
   955     res = QVariant(v);
       
   956     idx = cp->index(0, 0);
       
   957     cp->setData(idx, res, Qt::UserRole+1);
       
   958     res = cp->data(idx, Qt::UserRole+1);
       
   959     QCOMPARE(res.isValid(), true);
       
   960     QCOMPARE(res.toInt(), v);
       
   961     
       
   962     QMap<int, QVariant> map = cp->itemData(idx);
       
   963     QCOMPARE(map.size(), 5);
       
   964     map[v]=v;
       
   965     cp->setItemData(idx, map);
       
   966     res = cp->data(idx, v);
       
   967     QCOMPARE(res.isValid(), true);
       
   968     QCOMPARE(res.toInt(), v);
       
   969 
       
   970     
       
   971 }
       
   972 
       
   973 void TestCacheProxy::testCP_Sort()
       
   974 {
       
   975     cp = new HgCacheProxyModel();
       
   976     cph = new CacheProxyHelper(cp);
       
   977     dph = new DataProviderHelper(200);
       
   978     cp->setDataProvider(dph, 50, 20);
       
   979 
       
   980     cp->setSortRole(Qt::UserRole+2);
       
   981     QCOMPARE(cp->sortRole(), Qt::UserRole+2);
       
   982     cp->sort(0, Qt::AscendingOrder);
       
   983     QCOMPARE(cp->sortColumn(), 0);
       
   984     QCOMPARE(cp->sortOrder(), Qt::AscendingOrder);
       
   985     
       
   986     QModelIndex idx = cp->index(10, 0);
       
   987     QVariant res = cp->data(idx, Qt::UserRole+2);
       
   988     QCOMPARE(res.isValid(), true);
       
   989     QCOMPARE(res.toInt(), -(cp->rowCount(idx) -1 -10));
       
   990     res = cp->data(idx, Qt::UserRole+1);
       
   991     QCOMPARE(res.isValid(), true);
       
   992     QCOMPARE(res.toInt(), cp->rowCount(idx) -1 -10);
       
   993     
       
   994     idx = cp->index(50, 0);
       
   995     res = cp->data(idx, Qt::UserRole+2);
       
   996     QCOMPARE(res.isValid(), true);
       
   997     QCOMPARE(res.toInt(), -(cp->rowCount(idx) -1 -50));
       
   998     res = cp->data(idx, Qt::UserRole+1);
       
   999     QCOMPARE(res.isValid(), true);
       
  1000     QCOMPARE(res.toInt(), cp->rowCount(idx) -1 -50);
       
  1001     
       
  1002     cp->setSortRole(Qt::DisplayRole);
       
  1003     cp->setSortCaseSensitivity(Qt::CaseSensitive);
       
  1004     QCOMPARE(cp->sortCaseSensitivity(), Qt::CaseSensitive);
       
  1005     cp->sort(0, Qt::AscendingOrder);
       
  1006     
       
  1007     idx = cp->index(10, 0);
       
  1008     res = cp->data(idx, Qt::UserRole+1);
       
  1009     QCOMPARE(res.isValid(), true);
       
  1010     QCOMPARE(res.toInt()%2, 0);
       
  1011     
       
  1012     idx = cp->index(110, 0);
       
  1013     res = cp->data(idx, Qt::UserRole+1);
       
  1014     QCOMPARE(res.isValid(), true);
       
  1015 //    qWarning("i=%d",res.toInt());
       
  1016     QCOMPARE(res.toInt()%2, 1);
       
  1017     
       
  1018     cp->setSortLocaleAware(true);
       
  1019     QCOMPARE(cp->isSortLocaleAware(), true);
       
  1020     cp->setSortLocaleAware(false);
       
  1021     QCOMPARE(cp->isSortLocaleAware(), false);
       
  1022         
       
  1023     QString s = QString("AAA");
       
  1024     cp->setDynamicSortFilter(true);
       
  1025     QCOMPARE(cp->dynamicSortFilter(), true);
       
  1026     cp->setSortRole(Qt::DisplayRole);
       
  1027     cp->setSortCaseSensitivity(Qt::CaseSensitive);
       
  1028     dph->testInsertItem(10, QPair< QVariant, int >(s, Qt::DisplayRole), false);
       
  1029     idx = cp->index(0, 0);
       
  1030     res = cp->data(idx, Qt::DisplayRole);
       
  1031     QCOMPARE(res.isValid(), true);
       
  1032 //    qWarning()<<res.toString();
       
  1033     QCOMPARE(res.toString(), s);
       
  1034     
       
  1035 }
       
  1036 
       
  1037 //void TestCacheProxy::testCP_Filter()
       
  1038 //{
       
  1039 //    cp = new HgCacheProxyModel();
       
  1040 //    cph = new CacheProxyHelper(cp);
       
  1041 //    dph = new DataProviderHelper(200);
       
  1042 //    cp->setDataProvider(dph, 50, 20);
       
  1043 //
       
  1044 //    QModelIndex idx = cp->index(1, 0);
       
  1045 //    QVariant res = cp->data(idx, Qt::DisplayRole);
       
  1046 //    QCOMPARE(res.isValid(), true);
       
  1047 //    QCOMPARE(res.toString().startsWith("item"), true);
       
  1048 //    
       
  1049 //    QRegExp regexp = QRegExp("ITEM*", Qt::CaseSensitive, QRegExp::Wildcard);
       
  1050 //    
       
  1051 //    cp->setFilterRegExp(regexp);
       
  1052 //    QVERIFY(cp->filterRegExp() == regexp);
       
  1053 //    cp->setFilterCaseSensitivity(Qt::CaseSensitive);
       
  1054 //    QCOMPARE(cp->filterCaseSensitivity(), Qt::CaseSensitive);   
       
  1055 //    
       
  1056 //    idx = cp->index(1, 0);
       
  1057 //    res = cp->data(idx, Qt::DisplayRole);
       
  1058 //    QCOMPARE(res.isValid(), true);
       
  1059 //    QCOMPARE(res.toString().startsWith("item"), false);
       
  1060 //    
       
  1061 //    cp->setFilterKeyColumn(1);
       
  1062 //    QCOMPARE(cp->filterKeyColumn (), 1);
       
  1063 //    cp->setFilterKeyColumn(0);
       
  1064 //    
       
  1065 //    cp->setFilterRole(Qt::UserRole+1);
       
  1066 //    QCOMPARE(cp->filterRole(), Qt::UserRole+1);
       
  1067 //    cp->setFilterRole(Qt::DisplayRole);     
       
  1068 //    
       
  1069 //    regexp = QRegExp("ITEM*", Qt::CaseInsensitive, QRegExp::Wildcard);
       
  1070 //    cp->setFilterRegExp(regexp);
       
  1071 //    QVERIFY(cp->filterRegExp() == regexp);
       
  1072 //    cp->setFilterCaseSensitivity(Qt::CaseInsensitive);
       
  1073 //    QCOMPARE(cp->filterCaseSensitivity(), Qt::CaseInsensitive);   
       
  1074 //
       
  1075 //    idx = cp->index(1, 0);
       
  1076 //    res = cp->data(idx, Qt::DisplayRole);
       
  1077 //    QCOMPARE(res.isValid(), true);
       
  1078 //    QCOMPARE(res.toString().startsWith("item"), true);
       
  1079 //
       
  1080 //}
       
  1081 
       
  1082 
       
  1083 #ifdef _CACHEPROXYDATAMODEL_UNITTEST_LOG_TO_C
       
  1084     int main (int argc, char* argv[]) 
       
  1085     {
       
  1086         QApplication app(argc, argv);
       
  1087         TestCacheProxy tc;
       
  1088         int c = 3;
       
  1089         char* v[] = {argv[0], "-o", "c:/test.txt"};
       
  1090         return QTest::qExec(&tc, c, v);
       
  1091     }
       
  1092 #else
       
  1093     QTEST_MAIN(TestCacheProxy)
       
  1094 #endif