tests/auto/qmessageservice/tst_qmessageservice.cpp
changeset 0 876b1a06bc25
child 5 603d3f8b6302
equal deleted inserted replaced
-1:000000000000 0:876b1a06bc25
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the Qt Mobility Components.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 #include <QObject>
       
    42 #include <QTest>
       
    43 #include <QDebug>
       
    44 
       
    45 #include "qmessageservice.h"
       
    46 #include "../support/support.h"
       
    47 
       
    48 #if defined(Q_OS_SYMBIAN) || (defined(Q_OS_WIN) && defined(_WIN32_WCE))
       
    49 # if defined(TESTDATA_DIR)
       
    50 #  undef TESTDATA_DIR
       
    51 # endif
       
    52 # define TESTDATA_DIR "."
       
    53 #endif
       
    54 
       
    55 // Will try to wait for the condition while allowing event processing
       
    56 #define QTRY_VERIFY(__expr) \
       
    57     do { \
       
    58         const int __step = 50; \
       
    59         const int __timeout = 90000; \
       
    60         if (!(__expr)) { \
       
    61             QTest::qWait(0); \
       
    62         } \
       
    63         for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \
       
    64             QTest::qWait(__step); \
       
    65         } \
       
    66         QVERIFY(__expr); \
       
    67     } while(0)
       
    68 
       
    69 //TESTED_CLASS=
       
    70 //TESTED_FILES=
       
    71 
       
    72 QTM_USE_NAMESPACE
       
    73 
       
    74 class SignalCatcher : public QObject
       
    75 {
       
    76     Q_OBJECT
       
    77 
       
    78 public:
       
    79     SignalCatcher(QObject* parent = 0);
       
    80 
       
    81     void reset();
       
    82 
       
    83 public slots:
       
    84     void messagesCounted(int count);
       
    85     void messagesFound(const QMessageIdList& messageList);
       
    86     void stateChanged(QMessageService::State s);
       
    87     void progressChanged(int,int);
       
    88 
       
    89 public:
       
    90     QMessageIdList ids;
       
    91     int count;
       
    92     QMessageService::State state;
       
    93     int progressMin, progressMax;
       
    94 };
       
    95 
       
    96 SignalCatcher::SignalCatcher(QObject* parent)
       
    97 :
       
    98 QObject(parent)
       
    99 {
       
   100     reset();
       
   101 }
       
   102 
       
   103 void SignalCatcher::reset()
       
   104 {
       
   105     ids.clear();
       
   106     count = 0;
       
   107     progressMin = 0;
       
   108     progressMax = 0;
       
   109     state = QMessageService::InactiveState;
       
   110 }
       
   111 
       
   112 void SignalCatcher::messagesCounted(int c)
       
   113 {
       
   114     count = c;
       
   115 }
       
   116 
       
   117 void SignalCatcher::messagesFound(const QMessageIdList& results)
       
   118 {
       
   119     ids.append(results);
       
   120 }
       
   121 
       
   122 void SignalCatcher::stateChanged(QMessageService::State s)
       
   123 {
       
   124     state = s;
       
   125 }
       
   126 
       
   127 void SignalCatcher::progressChanged(int min, int max)
       
   128 {
       
   129     progressMin = min; progressMax = max;
       
   130 }
       
   131 
       
   132 class Params
       
   133 {
       
   134     QMap<const char*, const char*> _map;
       
   135 
       
   136 public:
       
   137     Params() {}
       
   138 
       
   139     Params& operator()(const char* name, const char* value)
       
   140     {
       
   141         _map.insert(name, value); return *this;
       
   142     }
       
   143 
       
   144     operator Support::Parameters() const
       
   145     {
       
   146         Support::Parameters result;
       
   147         QMap<const char*, const char*>::const_iterator it = _map.begin(), end = _map.end();
       
   148         for ( ; it != end; ++it) {
       
   149             result.insert(it.key(), it.value());
       
   150         }
       
   151         return result;
       
   152     }
       
   153 };
       
   154 
       
   155 /*
       
   156     Unit test for QMessageService class.
       
   157 */
       
   158 class tst_QMessageService : public QObject
       
   159 {
       
   160     Q_OBJECT
       
   161 
       
   162 public:
       
   163     tst_QMessageService();
       
   164     virtual ~tst_QMessageService();
       
   165 
       
   166 private slots:
       
   167 
       
   168     void init();
       
   169     void cleanUp();
       
   170 
       
   171     void initTestCase();
       
   172     void cleanupTestCase();
       
   173 
       
   174     void testQueryMessages();
       
   175     void testQueryMessages_data();
       
   176 
       
   177     void testCountMessages();
       
   178     void testCountMessages_data();
       
   179 
       
   180     void testSend();
       
   181 
       
   182     void testCompose();
       
   183 
       
   184     void testRetrieveHeader();
       
   185 
       
   186     void testRetrieveBody();
       
   187 
       
   188     void testRetrieve();
       
   189 
       
   190     void testShow();
       
   191 
       
   192     void testExportUpdates();
       
   193 
       
   194 private:
       
   195     void testQueryCountData();
       
   196 
       
   197 private:
       
   198     QMessageService* testService;
       
   199 
       
   200     QSet<QMessageFolderId> existingFolderIds;
       
   201     QMessageFolderIdList folderIds;
       
   202 
       
   203     QSet<QMessageAccountId> existingAccountIds;
       
   204     QMessageAccountIdList accountIds;
       
   205 
       
   206     QSet<QMessageId> existingMessageIds;
       
   207     QMessageIdList messageIds;
       
   208 
       
   209     QMessageFilter existingAccountsFilter;
       
   210 
       
   211     QList<int> messageSizes;
       
   212 };
       
   213 
       
   214 Q_DECLARE_METATYPE(QMessageAccountIdList)
       
   215 Q_DECLARE_METATYPE(QMessageAccountFilter)
       
   216 Q_DECLARE_METATYPE(QMessageAccountSortOrder)
       
   217 
       
   218 Q_DECLARE_METATYPE(QMessageFolderIdList)
       
   219 Q_DECLARE_METATYPE(QMessageFolderFilter)
       
   220 Q_DECLARE_METATYPE(QMessageFolderSortOrder)
       
   221 
       
   222 Q_DECLARE_METATYPE(QMessageIdList)
       
   223 Q_DECLARE_METATYPE(QMessageFilter)
       
   224 Q_DECLARE_METATYPE(QMessageSortOrder)
       
   225 
       
   226 QTEST_MAIN(tst_QMessageService)
       
   227 
       
   228 #include "tst_qmessageservice.moc"
       
   229 
       
   230 tst_QMessageService::tst_QMessageService()
       
   231 {
       
   232 }
       
   233 
       
   234 tst_QMessageService::~tst_QMessageService()
       
   235 {
       
   236 }
       
   237 
       
   238 void tst_QMessageService::init()
       
   239 {
       
   240     testService = new QMessageService(this);
       
   241 }
       
   242 
       
   243 void tst_QMessageService::cleanUp()
       
   244 {
       
   245     if(testService) delete testService; testService = 0;
       
   246 }
       
   247 
       
   248 void tst_QMessageService::initTestCase()
       
   249 {
       
   250 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
       
   251     if (!Support::mapiAvailable())
       
   252         QSKIP("Skipping tests because a MAPI subsystem does not appear to be available", SkipAll);
       
   253 #endif
       
   254 
       
   255     Support::clearMessageStore();
       
   256 
       
   257     QMessageManager* manager = new QMessageManager(this);
       
   258 
       
   259     existingAccountIds = manager->queryAccounts().toSet();
       
   260 
       
   261 
       
   262     existingAccountsFilter = ~QMessageFilter();
       
   263     foreach(QMessageAccountId id, existingAccountIds) {
       
   264         existingAccountsFilter |= QMessageFilter::byParentAccountId(id);
       
   265     }
       
   266 
       
   267     QList<Support::Parameters> accountParams;
       
   268 
       
   269     accountParams << Params()("name", "Work")
       
   270         ("fromAddress", "Important.Person@example.com")
       
   271         << Params()("name", "Personal")
       
   272         ("fromAddress", "superstar2000@example.net")
       
   273         << Params()("name", "Alter Ego")
       
   274         ("fromAddress", "UltraMegaLightningBabe@superhero.test");
       
   275 
       
   276     foreach (const Support::Parameters &params, accountParams) {
       
   277         accountIds.append(Support::addAccount(params));
       
   278         QVERIFY(accountIds.last().isValid());
       
   279     }
       
   280 
       
   281     existingFolderIds = manager->queryFolders().toSet();
       
   282 
       
   283     QList<Support::Parameters> folderParams;
       
   284     folderParams << Params()("parentAccountName", "Alter Ego")
       
   285         ("path", "My messages")
       
   286         ("name", "My messages")
       
   287         ("parentFolderPath", "")
       
   288         << Params()("parentAccountName", "Work")
       
   289         ("path", "Innbox")
       
   290         ("name", "Innbox")
       
   291         ("parentFolderPath", "")
       
   292 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   293         << Params()("parentAccountName", "Work")
       
   294         ("path", "Innbox/X-Announce")
       
   295         ("name", "X-Announce")
       
   296         ("parentFolderPath", "Innbox")
       
   297         << Params()("parentAccountName", "Work")
       
   298         ("path", "Innbox/X-Announce/X-Archived")
       
   299         ("name", "X-Archived")
       
   300         ("parentFolderPath", "Innbox/X-Announce");
       
   301 #else    
       
   302     << Params()("parentAccountName", "Work")
       
   303         ("path", "X-Announce")
       
   304         ("name", "X-Announce")
       
   305         ("parentFolderPath", "")
       
   306         << Params()("parentAccountName", "Work")
       
   307         ("path", "X-Archived")
       
   308         ("name", "X-Archived")
       
   309         ("parentFolderPath", "");
       
   310 #endif    
       
   311 
       
   312     foreach (const Support::Parameters &params, folderParams) {
       
   313         folderIds.append(Support::addFolder(params));
       
   314         QVERIFY(folderIds.last().isValid());
       
   315     }
       
   316 
       
   317     existingMessageIds = manager->queryMessages(~existingAccountsFilter).toSet();
       
   318 
       
   319     // For windows at least, we can't have HasAttachments set without a real attachment
       
   320     const char *attachmentPaths = TESTDATA_DIR "/testdata/1.txt";
       
   321 
       
   322     QList<Support::Parameters> messageParams;
       
   323     messageParams << Params()("parentAccountName", "Alter Ego")
       
   324         ("parentFolderPath", "My messages")
       
   325 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)) // SMS messages must be in SMS store on Windows and on Symbian
       
   326         ("type", "email")
       
   327 #else
       
   328         ("type", "sms")
       
   329 #endif
       
   330         ("to", "SuperMegaLightningBabe")
       
   331         ("from", "Frozone")
       
   332         ("subject", "Ice to meet you")
       
   333         ("text", "Shall I compare thee to a summers day")
       
   334         ("date", "2000-01-01T12:00:00Z")
       
   335         ("receivedDate", "2000-01-01T12:01:00Z")
       
   336         ("priority", "")
       
   337         ("size", "160")
       
   338         ("status-read", "true")
       
   339         ("custom-flagged", "true")
       
   340         << Params()("parentAccountName", "Work")
       
   341         ("parentFolderPath", "Innbox")
       
   342         ("type", "email")
       
   343         ("to", "Important.Person@example.com")
       
   344         ("from", "Esteemed.Colleague@example.com")
       
   345         ("subject", "Meeting agenda")
       
   346         ("date", "2000-01-01T12:00:00Z")
       
   347         ("receivedDate", "2000-01-01T20:00:00Z")
       
   348         ("priority", "High")
       
   349         ("size", "10240")
       
   350         ("status-hasAttachments", "true")
       
   351         ("attachments", attachmentPaths)
       
   352         ("custom-spam", "filter:no")
       
   353         ("custom-flagged", "true")
       
   354         << Params()("parentAccountName", "Work")
       
   355         ("parentFolderPath", "Innbox")
       
   356         ("type", "email")
       
   357         ("to", "Important.Person@example.com,Minion@example.com")
       
   358         ("from", "Big.Boss@example.com")
       
   359         ("subject", "Motivational message")
       
   360         ("text", "School's out for summer")
       
   361         ("date", "2000-01-01T13:00:00Z")
       
   362         ("receivedDate", "2000-01-01T13:05:00Z")
       
   363         ("priority", "High")
       
   364         ("size", "20480")
       
   365         ("status-hasAttachments", "true")
       
   366         ("attachments", attachmentPaths)
       
   367         ("custom-spam", "filter:no")
       
   368 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   369         << Params()("parentAccountName", "Work")
       
   370         ("parentFolderPath", "Innbox/X-Announce")
       
   371         ("type", "email")
       
   372         ("to", "announce@example.com,maintenance-log@example.com")
       
   373         ("from", "sysadmin@example.com")
       
   374         ("subject", "Scheduled maintenance")
       
   375         ("date", "2000-01-01T13:00:00Z")
       
   376         ("receivedDate", "2000-01-01T13:00:01Z")
       
   377         ("priority", "")
       
   378         ("size", "1056")
       
   379         ("status-read", "true")
       
   380         ("custom-spam", "filter:maybe")
       
   381         << Params()("parentAccountName", "Work")
       
   382         ("parentFolderPath", "Innbox/X-Announce/X-Archived")
       
   383         ("type", "email")
       
   384         ("to", "announce@example.com")
       
   385         ("from", "Big.Boss@example.com")
       
   386         ("subject", "Free beer")
       
   387         ("date", "1999-04-01T10:30:00Z")
       
   388         ("receivedDate", "1999-04-01T10:31:00Z")
       
   389         ("priority", "Low")
       
   390         ("size", "4096")
       
   391         ("status-read", "true")
       
   392         ("status-hasAttachments", "true")
       
   393         ("attachments", attachmentPaths)
       
   394         ("custom-spam", "filter:yes");
       
   395 #else
       
   396     << Params()("parentAccountName", "Work")
       
   397         ("parentFolderPath", "X-Announce")
       
   398         ("type", "email")
       
   399         ("to", "announce@example.com,maintenance-log@example.com")
       
   400         ("from", "sysadmin@example.com")
       
   401         ("subject", "Scheduled maintenance")
       
   402         ("date", "2000-01-01T13:00:00Z")
       
   403         ("receivedDate", "2000-01-01T13:00:01Z")
       
   404         ("priority", "")
       
   405         ("size", "1056")
       
   406         ("status-read", "true")
       
   407         ("custom-spam", "filter:maybe")
       
   408         << Params()("parentAccountName", "Work")
       
   409         ("parentFolderPath", "X-Archived")
       
   410         ("type", "email")
       
   411         ("to", "announce@example.com")
       
   412         ("from", "Big.Boss@example.com")
       
   413         ("subject", "Free beer")
       
   414         ("date", "1999-04-01T10:30:00Z")
       
   415         ("receivedDate", "1999-04-01T10:31:00Z")
       
   416         ("priority", "Low")
       
   417         ("size", "4096")
       
   418         ("status-read", "true")
       
   419         ("status-hasAttachments", "true")
       
   420         ("attachments", attachmentPaths)
       
   421         ("custom-spam", "filter:yes");
       
   422 #endif
       
   423 
       
   424     foreach (const Support::Parameters &params, messageParams) {
       
   425         messageIds.append(Support::addMessage(params));
       
   426         QVERIFY(messageIds.last().isValid());
       
   427 
       
   428         // Use the resultant message sizes in testing - the configured sizes aren't honoured by MAPI
       
   429         QMessage m(messageIds.last());
       
   430         messageSizes.append(m.size());
       
   431     }
       
   432 }
       
   433 
       
   434 void tst_QMessageService::cleanupTestCase()
       
   435 {
       
   436 }
       
   437 
       
   438 void tst_QMessageService::testQueryMessages()
       
   439 {
       
   440     QFETCH(QMessageFilter, filter);
       
   441     QFETCH(QMessageIdList, ids);
       
   442     QFETCH(QMessageIdList, negatedIds);
       
   443     QFETCH(QString, body);
       
   444 
       
   445     if (filter.isSupported()) {
       
   446         QVERIFY(filter == filter);
       
   447         QCOMPARE(filter != QMessageFilter(), !filter.isEmpty());
       
   448 
       
   449         SignalCatcher sc(this);
       
   450         connect(testService,SIGNAL(messagesFound(const QMessageIdList&)),&sc,SLOT(messagesFound(const QMessageIdList&)));
       
   451 #if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   452         connect(testService,SIGNAL(stateChanged(QMessageService::State)),&sc,SLOT(stateChanged(QMessageService::State)));
       
   453 #endif
       
   454 
       
   455         // Order is irrelevant for filtering
       
   456 
       
   457         if (body.isEmpty()) {
       
   458             sc.reset();
       
   459             QCOMPARE(testService->queryMessages(filter&~existingAccountsFilter),true);
       
   460 #if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   461             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
   462 #else
       
   463             while(testService->state() == QMessageService::ActiveState)
       
   464 				QTest::qWait(1000);
       
   465 #endif
       
   466             QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),ids.toSet());
       
   467 
       
   468             sc.reset();
       
   469 
       
   470             QCOMPARE(testService->queryMessages(~filter&~existingAccountsFilter),true);
       
   471 #if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   472             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
   473 #else
       
   474             while(testService->state() == QMessageService::ActiveState)
       
   475                 QTest::qWait(1000);
       
   476 #endif
       
   477             QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),negatedIds.toSet());
       
   478 
       
   479         } else {
       
   480 
       
   481             sc.reset();
       
   482 
       
   483             QCOMPARE(testService->queryMessages(filter&~existingAccountsFilter,body),true);
       
   484 #if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   485             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
   486 #else
       
   487             while(testService->state() == QMessageService::ActiveState)
       
   488                 QTest::qWait(1000);
       
   489 #endif
       
   490             QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),ids.toSet());
       
   491 
       
   492             sc.reset();
       
   493 
       
   494             QCOMPARE(testService->queryMessages(~filter&~existingAccountsFilter,body),true);
       
   495 #if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   496             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
   497 #else
       
   498             while(testService->state() == QMessageService::ActiveState)
       
   499                 QTest::qWait(1000);
       
   500 #endif
       
   501             QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),negatedIds.toSet());
       
   502         }
       
   503     } else {
       
   504         QSKIP("Unsupported for this configuration", SkipSingle);
       
   505     }
       
   506 }
       
   507 
       
   508 void tst_QMessageService::testQueryCountData()
       
   509 {
       
   510     QTest::addColumn<QMessageFilter>("filter");
       
   511     QTest::addColumn<QMessageIdList>("ids");
       
   512     QTest::addColumn<QMessageIdList>("negatedIds");
       
   513     QTest::addColumn<QString>("body");
       
   514 
       
   515 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   516     QTest::newRow("empty filter")
       
   517         << QMessageFilter() 
       
   518         << messageIds
       
   519         << QMessageIdList()
       
   520         << "";
       
   521 #endif
       
   522 
       
   523     QTest::newRow("id equality 1")
       
   524         << QMessageFilter::byId(messageIds[0], QMessageDataComparator::Equal) 
       
   525         << ( QMessageIdList() << messageIds[0] )
       
   526         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   527         << "";
       
   528 
       
   529     QTest::newRow("id equality 2")
       
   530         << QMessageFilter::byId(messageIds[1], QMessageDataComparator::Equal) 
       
   531         << ( QMessageIdList() << messageIds[1] )
       
   532         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   533         << "";
       
   534 
       
   535     QTest::newRow("id equality invalid")
       
   536         << QMessageFilter::byId(QMessageId(), QMessageDataComparator::Equal) 
       
   537         << QMessageIdList()
       
   538         << messageIds
       
   539         << "";
       
   540 
       
   541     QTest::newRow("id inequality 1")
       
   542         << QMessageFilter::byId(messageIds[0], QMessageDataComparator::NotEqual) 
       
   543         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   544         << ( QMessageIdList() << messageIds[0] )
       
   545         << "";
       
   546 
       
   547     QTest::newRow("id inequality 2")
       
   548         << QMessageFilter::byId(messageIds[1], QMessageDataComparator::NotEqual) 
       
   549         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   550         << ( QMessageIdList() << messageIds[1] )
       
   551         << "";
       
   552 
       
   553     QTest::newRow("id inequality invalid")
       
   554         << QMessageFilter::byId(QMessageId(), QMessageDataComparator::NotEqual) 
       
   555         << messageIds
       
   556         << QMessageIdList()
       
   557         << "";
       
   558 
       
   559     QTest::newRow("id list inclusion 1")
       
   560         << QMessageFilter::byId(QMessageIdList() << messageIds[0], QMessageDataComparator::Includes) 
       
   561         << ( QMessageIdList() << messageIds[0] )
       
   562         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   563         << "";
       
   564 
       
   565     QTest::newRow("id list inclusion 2")
       
   566         << QMessageFilter::byId(QMessageIdList() << messageIds[1], QMessageDataComparator::Includes) 
       
   567         << ( QMessageIdList() << messageIds[1] )
       
   568         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   569         << "";
       
   570 
       
   571     QTest::newRow("id list inclusion 3")
       
   572         << QMessageFilter::byId(QMessageIdList() << messageIds[0] << messageIds[1], QMessageDataComparator::Includes) 
       
   573         << ( QMessageIdList() << messageIds[0] << messageIds[1] )
       
   574         << ( QMessageIdList() << messageIds[2] << messageIds[3] << messageIds[4] )
       
   575         << "";
       
   576 
       
   577 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   578     QTest::newRow("id list inclusion empty")
       
   579         << QMessageFilter::byId(QMessageIdList(), QMessageDataComparator::Includes) 
       
   580         << QMessageIdList()
       
   581         << messageIds
       
   582         << "";
       
   583 #endif
       
   584 
       
   585     QTest::newRow("id list exclusion 1")
       
   586         << QMessageFilter::byId(QMessageIdList() << messageIds[0], QMessageDataComparator::Excludes) 
       
   587         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   588         << ( QMessageIdList() << messageIds[0] )
       
   589         << "";
       
   590 
       
   591     QTest::newRow("id list exclusion 2")
       
   592         << QMessageFilter::byId(QMessageIdList() << messageIds[1], QMessageDataComparator::Excludes) 
       
   593         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   594         << ( QMessageIdList() << messageIds[1] )
       
   595         << "";
       
   596 
       
   597     QTest::newRow("id list exclusion 3")
       
   598         << QMessageFilter::byId(QMessageIdList() << messageIds[0] << messageIds[1], QMessageDataComparator::Excludes) 
       
   599         << ( QMessageIdList() << messageIds[2] << messageIds[3] << messageIds[4] )
       
   600         << ( QMessageIdList() << messageIds[0] << messageIds[1] )
       
   601         << "";
       
   602 
       
   603 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   604     QTest::newRow("id list exclusion empty")
       
   605         << QMessageFilter::byId(QMessageIdList(), QMessageDataComparator::Excludes) 
       
   606         << messageIds
       
   607         << QMessageIdList()
       
   608         << "";
       
   609 #endif
       
   610 
       
   611 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   612     QTest::newRow("id filter inclusion empty")
       
   613         << QMessageFilter::byId(QMessageFilter(), QMessageDataComparator::Includes) 
       
   614         << messageIds
       
   615         << QMessageIdList()
       
   616         << "";
       
   617 
       
   618     QTest::newRow("id filter inclusion non matching")
       
   619         << QMessageFilter::byId(~QMessageFilter(), QMessageDataComparator::Includes) 
       
   620         << QMessageIdList()
       
   621         << messageIds
       
   622         << "";
       
   623 
       
   624     QTest::newRow("id filter inclusion 1")
       
   625         << QMessageFilter::byId(QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal), 
       
   626                 QMessageDataComparator::Includes)
       
   627         << ( QMessageIdList() << messageIds[4] )
       
   628         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
   629         << "";
       
   630 #endif
       
   631 
       
   632     QTest::newRow("type equality 1")
       
   633         << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Equal) 
       
   634 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   635         << QMessageIdList()
       
   636         << messageIds
       
   637 #else
       
   638         << ( QMessageIdList() << messageIds[0] )
       
   639         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   640 #endif
       
   641         << "";
       
   642 
       
   643     QTest::newRow("type equality 2")
       
   644         << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Equal) 
       
   645 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   646         << messageIds
       
   647         << QMessageIdList()
       
   648 #else
       
   649         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   650         << ( QMessageIdList() << messageIds[0] )
       
   651 #endif
       
   652         << "";
       
   653 
       
   654     QTest::newRow("type equality invalid")
       
   655         << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Equal) 
       
   656         << QMessageIdList()
       
   657         << messageIds
       
   658         << "";
       
   659 
       
   660     QTest::newRow("type inequality 1")
       
   661         << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::NotEqual) 
       
   662 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   663         << messageIds
       
   664         << QMessageIdList()
       
   665 #else
       
   666         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   667         << ( QMessageIdList() << messageIds[0] )
       
   668 #endif
       
   669         << "";
       
   670 
       
   671     QTest::newRow("type inequality 2")
       
   672         << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::NotEqual) 
       
   673 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   674         << QMessageIdList()
       
   675         << messageIds
       
   676 #else
       
   677         << ( QMessageIdList() << messageIds[0] )
       
   678         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   679 #endif
       
   680         << "";
       
   681 
       
   682     QTest::newRow("type inequality invalid")
       
   683         << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::NotEqual) 
       
   684         << messageIds
       
   685         << QMessageIdList()
       
   686         << "";
       
   687 
       
   688     QTest::newRow("type mask inclusion 1")
       
   689         << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Includes) 
       
   690 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   691         << QMessageIdList()
       
   692         << messageIds
       
   693 #else
       
   694         << ( QMessageIdList() << messageIds[0] )
       
   695         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   696 #endif
       
   697         << "";
       
   698 
       
   699     QTest::newRow("type mask inclusion 2")
       
   700         << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Includes) 
       
   701 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   702         << messageIds
       
   703         << QMessageIdList()
       
   704 #else
       
   705         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   706         << ( QMessageIdList() << messageIds[0] )
       
   707 #endif
       
   708         << "";
       
   709 
       
   710     QTest::newRow("type mask inclusion 3")
       
   711         << QMessageFilter::byType(QMessage::Sms | QMessage::Email, QMessageDataComparator::Includes) 
       
   712         << messageIds
       
   713         << QMessageIdList()
       
   714         << "";
       
   715 
       
   716     QTest::newRow("type mask inclusion empty")
       
   717         << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Includes) 
       
   718         << QMessageIdList()
       
   719         << messageIds
       
   720         << "";
       
   721 
       
   722     QTest::newRow("type mask exclusion 1")
       
   723         << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Excludes) 
       
   724 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   725         << messageIds
       
   726         << QMessageIdList()
       
   727 #else
       
   728         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   729         << ( QMessageIdList() << messageIds[0] )
       
   730 #endif
       
   731         << "";
       
   732 
       
   733     QTest::newRow("type mask exclusion 2")
       
   734         << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Excludes) 
       
   735 #if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
       
   736         << QMessageIdList()
       
   737         << messageIds
       
   738 #else
       
   739         << ( QMessageIdList() << messageIds[0] )
       
   740         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   741 #endif
       
   742         << "";
       
   743 
       
   744     QTest::newRow("type mask exclusion 3")
       
   745         << QMessageFilter::byType(QMessage::Sms | QMessage::Email, QMessageDataComparator::Excludes) 
       
   746         << QMessageIdList()
       
   747         << messageIds
       
   748         << "";
       
   749 
       
   750     QTest::newRow("type mask exclusion empty")
       
   751         << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Excludes) 
       
   752         << messageIds
       
   753         << QMessageIdList()
       
   754         << "";
       
   755 
       
   756 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   757     QTest::newRow("sender equality 1")
       
   758         << QMessageFilter::bySender("Esteemed.Colleague@example.com", QMessageDataComparator::Equal) 
       
   759         << ( QMessageIdList() << messageIds[1] )
       
   760         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   761         << "";
       
   762 
       
   763     QTest::newRow("sender equality 2")
       
   764         << QMessageFilter::bySender("sysadmin@example.com", QMessageDataComparator::Equal) 
       
   765         << ( QMessageIdList() << messageIds[3] )
       
   766         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
   767         << "";
       
   768 #endif
       
   769 
       
   770     QTest::newRow("sender equality non-matching")
       
   771         << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Equal) 
       
   772         << QMessageIdList()
       
   773         << messageIds
       
   774         << "";
       
   775 
       
   776     QTest::newRow("sender equality empty")
       
   777         << QMessageFilter::bySender(QString(), QMessageDataComparator::Equal) 
       
   778         << QMessageIdList()
       
   779         << messageIds
       
   780         << "";
       
   781 
       
   782     QTest::newRow("sender equality zero-length")
       
   783         << QMessageFilter::bySender("", QMessageDataComparator::Equal) 
       
   784         << QMessageIdList()
       
   785         << messageIds
       
   786         << "";
       
   787 
       
   788 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
   789     QTest::newRow("sender inequality 1")
       
   790         << QMessageFilter::bySender("Esteemed.Colleague@example.com", QMessageDataComparator::NotEqual) 
       
   791         << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   792         << ( QMessageIdList() << messageIds[1] )
       
   793         << "";
       
   794 
       
   795     QTest::newRow("sender inequality 2")
       
   796         << QMessageFilter::bySender("sysadmin@example.com", QMessageDataComparator::NotEqual) 
       
   797         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
   798         << ( QMessageIdList() << messageIds[3] )
       
   799         << "";
       
   800 
       
   801     QTest::newRow("sender inequality non-matching")
       
   802         << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::NotEqual) 
       
   803         << messageIds
       
   804         << QMessageIdList()
       
   805         << "";
       
   806 
       
   807     QTest::newRow("sender inequality empty")
       
   808         << QMessageFilter::bySender(QString(), QMessageDataComparator::NotEqual) 
       
   809         << messageIds
       
   810         << QMessageIdList()
       
   811         << "";
       
   812 
       
   813     QTest::newRow("sender inequality zero-length")
       
   814         << QMessageFilter::bySender("", QMessageDataComparator::NotEqual) 
       
   815         << messageIds
       
   816         << QMessageIdList()
       
   817         << "";
       
   818 
       
   819     QTest::newRow("sender inclusion 1")
       
   820         << QMessageFilter::bySender("example", QMessageDataComparator::Includes) 
       
   821         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   822         << ( QMessageIdList() << messageIds[0] )
       
   823         << "";
       
   824 
       
   825     QTest::newRow("sender inclusion 2")
       
   826         << QMessageFilter::bySender("ozone", QMessageDataComparator::Includes) 
       
   827         << ( QMessageIdList() << messageIds[0] )
       
   828         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   829         << "";
       
   830 
       
   831     QTest::newRow("sender inclusion non-matching")
       
   832         << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Includes) 
       
   833         << QMessageIdList()
       
   834         << messageIds
       
   835         << "";
       
   836 
       
   837     QTest::newRow("sender inclusion empty")
       
   838         << QMessageFilter::bySender(QString(), QMessageDataComparator::Includes) 
       
   839         << messageIds
       
   840         << QMessageIdList()
       
   841         << "";
       
   842 
       
   843     QTest::newRow("sender inclusion zero-length")
       
   844         << QMessageFilter::bySender("", QMessageDataComparator::Includes) 
       
   845         << messageIds
       
   846         << QMessageIdList()
       
   847         << "";
       
   848 
       
   849     QTest::newRow("sender exclusion 1")
       
   850         << QMessageFilter::bySender("example", QMessageDataComparator::Excludes) 
       
   851         << ( QMessageIdList() << messageIds[0] )
       
   852         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   853         << "";
       
   854 
       
   855     QTest::newRow("sender exclusion 2")
       
   856         << QMessageFilter::bySender("ozone", QMessageDataComparator::Excludes) 
       
   857         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   858         << ( QMessageIdList() << messageIds[0] )
       
   859         << "";
       
   860 
       
   861     QTest::newRow("sender exclusion non-matching")
       
   862         << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Excludes) 
       
   863         << messageIds
       
   864         << QMessageIdList()
       
   865         << "";
       
   866 
       
   867     QTest::newRow("sender exclusion empty")
       
   868         << QMessageFilter::bySender(QString(), QMessageDataComparator::Excludes) 
       
   869         << QMessageIdList()
       
   870         << messageIds
       
   871         << "";
       
   872 
       
   873     QTest::newRow("sender exclusion zero-length")
       
   874         << QMessageFilter::bySender("", QMessageDataComparator::Excludes) 
       
   875         << QMessageIdList()
       
   876         << messageIds
       
   877         << "";
       
   878 #endif
       
   879 
       
   880     QTest::newRow("recipients inclusion 1")
       
   881         << QMessageFilter::byRecipients("example", QMessageDataComparator::Includes) 
       
   882         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   883         << ( QMessageIdList() << messageIds[0] )
       
   884         << "";
       
   885 
       
   886     QTest::newRow("recipients inclusion 2")
       
   887         << QMessageFilter::byRecipients("Mega", QMessageDataComparator::Includes) 
       
   888         << ( QMessageIdList() << messageIds[0] )
       
   889         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   890         << "";
       
   891 
       
   892     QTest::newRow("recipients inclusion non-matching")
       
   893         << QMessageFilter::byRecipients("Nonesuch", QMessageDataComparator::Includes) 
       
   894         << QMessageIdList()
       
   895         << messageIds
       
   896         << "";
       
   897 
       
   898     QTest::newRow("recipients inclusion empty")
       
   899         << QMessageFilter::byRecipients(QString(), QMessageDataComparator::Includes) 
       
   900         << messageIds
       
   901         << QMessageIdList()
       
   902         << "";
       
   903 
       
   904     QTest::newRow("recipients inclusion zero-length")
       
   905         << QMessageFilter::byRecipients("", QMessageDataComparator::Includes) 
       
   906         << messageIds
       
   907         << QMessageIdList()
       
   908         << "";
       
   909 
       
   910     QTest::newRow("recipients exclusion 1")
       
   911         << QMessageFilter::byRecipients("example", QMessageDataComparator::Excludes) 
       
   912         << ( QMessageIdList() << messageIds[0] )
       
   913         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   914         << "";
       
   915 
       
   916     QTest::newRow("recipients exclusion 2")
       
   917         << QMessageFilter::byRecipients("Mega", QMessageDataComparator::Excludes) 
       
   918         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
   919         << ( QMessageIdList() << messageIds[0] )
       
   920         << "";
       
   921 
       
   922     QTest::newRow("recipients exclusion non-matching")
       
   923         << QMessageFilter::byRecipients("Nonesuch", QMessageDataComparator::Excludes) 
       
   924         << messageIds
       
   925         << QMessageIdList()
       
   926         << "";
       
   927 
       
   928     QTest::newRow("recipients exclusion empty")
       
   929         << QMessageFilter::byRecipients(QString(), QMessageDataComparator::Excludes) 
       
   930         << QMessageIdList()
       
   931         << messageIds
       
   932         << "";
       
   933 
       
   934     QTest::newRow("recipients exclusion zero-length")
       
   935         << QMessageFilter::byRecipients("", QMessageDataComparator::Excludes) 
       
   936         << QMessageIdList()
       
   937         << messageIds
       
   938         << "";
       
   939 
       
   940     QTest::newRow("subject equality 1")
       
   941         << QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal) 
       
   942         << ( QMessageIdList() << messageIds[4] )
       
   943         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
   944         << "";
       
   945 
       
   946     QTest::newRow("subject equality 2")
       
   947         << QMessageFilter::bySubject("Scheduled maintenance", QMessageDataComparator::Equal) 
       
   948         << ( QMessageIdList() << messageIds[3] )
       
   949         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
   950         << "";
       
   951 
       
   952     QTest::newRow("subject equality non-matching")
       
   953         << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Equal) 
       
   954         << QMessageIdList()
       
   955         << messageIds
       
   956         << "";
       
   957 
       
   958     QTest::newRow("subject equality empty")
       
   959         << QMessageFilter::bySubject(QString(), QMessageDataComparator::Equal) 
       
   960         << QMessageIdList()
       
   961         << messageIds
       
   962         << "";
       
   963 
       
   964     QTest::newRow("subject equality zero-length")
       
   965         << QMessageFilter::bySubject("", QMessageDataComparator::Equal) 
       
   966         << QMessageIdList()
       
   967         << messageIds
       
   968         << "";
       
   969 
       
   970     QTest::newRow("subject inequality 1")
       
   971         << QMessageFilter::bySubject("Free beer", QMessageDataComparator::NotEqual) 
       
   972         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
   973         << ( QMessageIdList() << messageIds[4] )
       
   974         << "";
       
   975 
       
   976     QTest::newRow("subject inequality 2")
       
   977         << QMessageFilter::bySubject("Scheduled maintenance", QMessageDataComparator::NotEqual) 
       
   978         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
   979         << ( QMessageIdList() << messageIds[3] )
       
   980         << "";
       
   981 
       
   982     QTest::newRow("subject inequality non-matching")
       
   983         << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::NotEqual) 
       
   984         << messageIds
       
   985         << QMessageIdList()
       
   986         << "";
       
   987 
       
   988     QTest::newRow("subject inequality empty")
       
   989         << QMessageFilter::bySubject(QString(), QMessageDataComparator::NotEqual) 
       
   990         << messageIds
       
   991         << QMessageIdList()
       
   992         << "";
       
   993 
       
   994     QTest::newRow("subject inequality zero-length")
       
   995         << QMessageFilter::bySubject("", QMessageDataComparator::NotEqual) 
       
   996         << messageIds
       
   997         << QMessageIdList()
       
   998         << "";
       
   999 
       
  1000     QTest::newRow("subject inclusion 1")
       
  1001         << QMessageFilter::bySubject("vation", QMessageDataComparator::Includes) 
       
  1002         << ( QMessageIdList() << messageIds[2] )
       
  1003         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1004         << "";
       
  1005 
       
  1006     QTest::newRow("subject inclusion 2")
       
  1007         << QMessageFilter::bySubject(" ", QMessageDataComparator::Includes) 
       
  1008         << messageIds
       
  1009         << QMessageIdList()
       
  1010         << "";
       
  1011 
       
  1012     QTest::newRow("subject inclusion non-matching")
       
  1013         << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Includes) 
       
  1014         << QMessageIdList()
       
  1015         << messageIds
       
  1016         << "";
       
  1017 
       
  1018     QTest::newRow("subject inclusion empty")
       
  1019         << QMessageFilter::bySubject(QString(), QMessageDataComparator::Includes) 
       
  1020         << messageIds
       
  1021         << QMessageIdList()
       
  1022         << "";
       
  1023 
       
  1024     QTest::newRow("subject inclusion zero-length")
       
  1025         << QMessageFilter::bySubject("", QMessageDataComparator::Includes) 
       
  1026         << messageIds
       
  1027         << QMessageIdList()
       
  1028         << "";
       
  1029 
       
  1030     QTest::newRow("subject exclusion 1")
       
  1031         << QMessageFilter::bySubject("vation", QMessageDataComparator::Excludes) 
       
  1032         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1033         << ( QMessageIdList() << messageIds[2] )
       
  1034         << "";
       
  1035 
       
  1036     QTest::newRow("subject exclusion 2")
       
  1037         << QMessageFilter::bySubject(" ", QMessageDataComparator::Excludes) 
       
  1038         << QMessageIdList()
       
  1039         << messageIds
       
  1040         << "";
       
  1041 
       
  1042     QTest::newRow("subject exclusion non-matching")
       
  1043         << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Excludes) 
       
  1044         << messageIds
       
  1045         << QMessageIdList()
       
  1046         << "";
       
  1047 
       
  1048     QTest::newRow("subject exclusion empty")
       
  1049         << QMessageFilter::bySubject(QString(), QMessageDataComparator::Excludes) 
       
  1050         << QMessageIdList()
       
  1051         << messageIds
       
  1052         << "";
       
  1053 
       
  1054     QTest::newRow("subject exclusion zero-length")
       
  1055         << QMessageFilter::bySubject("", QMessageDataComparator::Excludes) 
       
  1056         << QMessageIdList()
       
  1057         << messageIds
       
  1058         << "";
       
  1059 
       
  1060 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1061     QTest::newRow("timeStamp equality 1")
       
  1062         << QMessageFilter::byTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::Equal) 
       
  1063         << ( QMessageIdList() << messageIds[4] )
       
  1064         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1065         << "";
       
  1066 
       
  1067     QTest::newRow("timeStamp equality 2")
       
  1068         << QMessageFilter::byTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::Equal) 
       
  1069         << ( QMessageIdList() << messageIds[3] << messageIds[2] )
       
  1070         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1071         << "";
       
  1072 
       
  1073     QTest::newRow("timeStamp equality non-matching")
       
  1074         << QMessageFilter::byTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::Equal) 
       
  1075         << QMessageIdList()
       
  1076         << messageIds
       
  1077         << "";
       
  1078 
       
  1079     QTest::newRow("timeStamp equality empty")
       
  1080         << QMessageFilter::byTimeStamp(QDateTime(), QMessageDataComparator::Equal) 
       
  1081         << QMessageIdList()
       
  1082         << messageIds
       
  1083         << "";
       
  1084 
       
  1085     QTest::newRow("timeStamp inequality 1")
       
  1086         << QMessageFilter::byTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1087         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1088         << ( QMessageIdList() << messageIds[4] )
       
  1089         << "";
       
  1090 
       
  1091     QTest::newRow("timeStamp inequality 2")
       
  1092         << QMessageFilter::byTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1093         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1094         << ( QMessageIdList() << messageIds[3] << messageIds[2] )
       
  1095         << "";
       
  1096 
       
  1097     QTest::newRow("timeStamp inequality non-matching")
       
  1098         << QMessageFilter::byTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1099         << messageIds
       
  1100         << QMessageIdList()
       
  1101         << "";
       
  1102 
       
  1103     QTest::newRow("timeStamp inequality empty")
       
  1104         << QMessageFilter::byTimeStamp(QDateTime(), QMessageDataComparator::NotEqual) 
       
  1105         << messageIds
       
  1106         << QMessageIdList()
       
  1107         << "";
       
  1108 
       
  1109     QDateTime epoch(QDateTime::fromString("2000-01-01T12:00:00Z", Qt::ISODate));
       
  1110 
       
  1111     QTest::newRow("timeStamp less than")
       
  1112         << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::LessThan) 
       
  1113         << ( QMessageIdList() << messageIds[4] )
       
  1114         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1115         << "";
       
  1116 
       
  1117     QTest::newRow("timeStamp less than equal")
       
  1118         << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::LessThanEqual) 
       
  1119         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1120         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1121         << "";
       
  1122 
       
  1123     QTest::newRow("timeStamp greater than")
       
  1124         << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) 
       
  1125         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1126         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1127         << "";
       
  1128 
       
  1129     QTest::newRow("timeStamp greater than equal")
       
  1130         << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThanEqual) 
       
  1131         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1132         << ( QMessageIdList() << messageIds[4] )
       
  1133         << "";
       
  1134 
       
  1135     QTest::newRow("receptionTimeStamp equality 1")
       
  1136 #ifndef Q_OS_SYMBIAN
       
  1137         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:31:00Z", Qt::ISODate), QMessageDataComparator::Equal)
       
  1138 #else    
       
  1139         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::Equal) 
       
  1140 #endif    
       
  1141         << ( QMessageIdList() << messageIds[4] )
       
  1142         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1143         << "";
       
  1144 
       
  1145     QTest::newRow("receptionTimeStamp equality 2")
       
  1146 #ifndef Q_OS_SYMBIAN
       
  1147         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:05:00Z", Qt::ISODate), QMessageDataComparator::Equal)
       
  1148         << ( QMessageIdList() << messageIds[2] )
       
  1149         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1150 #else    
       
  1151         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::Equal)
       
  1152         << ( QMessageIdList() << messageIds[3] << messageIds[2] )
       
  1153         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1154 #endif    
       
  1155         << "";
       
  1156 
       
  1157     QTest::newRow("receptionTimeStamp equality non-matching")
       
  1158         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::Equal) 
       
  1159         << QMessageIdList()
       
  1160         << messageIds
       
  1161         << "";
       
  1162 
       
  1163     QTest::newRow("receptionTimeStamp equality empty")
       
  1164         << QMessageFilter::byReceptionTimeStamp(QDateTime(), QMessageDataComparator::Equal) 
       
  1165         << QMessageIdList()
       
  1166         << messageIds
       
  1167         << "";
       
  1168 
       
  1169     QTest::newRow("receptionTimeStamp inequality 1")
       
  1170 #ifndef Q_OS_SYMBIAN    
       
  1171         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:31:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
       
  1172 #else    
       
  1173         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
       
  1174 #endif    
       
  1175         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1176         << ( QMessageIdList() << messageIds[4] )
       
  1177         << "";
       
  1178 
       
  1179     QTest::newRow("receptionTimeStamp inequality 2")
       
  1180 #ifndef Q_OS_SYMBIAN    
       
  1181         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:05:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1182         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1183         << ( QMessageIdList() << messageIds[2] )
       
  1184 #else    
       
  1185         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1186         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1187         << ( QMessageIdList() << messageIds[3] << messageIds[2] )
       
  1188 #endif    
       
  1189         << "";
       
  1190 
       
  1191     QTest::newRow("receptionTimeStamp inequality non-matching")
       
  1192         << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual) 
       
  1193         << messageIds
       
  1194         << QMessageIdList()
       
  1195         << "";
       
  1196 
       
  1197     QTest::newRow("receptionTimeStamp inequality empty")
       
  1198         << QMessageFilter::byReceptionTimeStamp(QDateTime(), QMessageDataComparator::NotEqual) 
       
  1199         << messageIds
       
  1200         << QMessageIdList()
       
  1201         << "";
       
  1202 
       
  1203     QTest::newRow("receptionTimeStamp less than")
       
  1204         << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::LessThan) 
       
  1205         << ( QMessageIdList() << messageIds[4] )
       
  1206         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1207         << "";
       
  1208 
       
  1209     QTest::newRow("receptionTimeStamp less than equal")
       
  1210         << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::LessThanEqual) 
       
  1211 #ifndef Q_OS_SYMBIAN    
       
  1212         << ( QMessageIdList() << messageIds[4] )
       
  1213         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1214 #else        
       
  1215         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1216         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1217 #endif
       
  1218         << "";
       
  1219 
       
  1220     QTest::newRow("receptionTimeStamp greater than")
       
  1221         << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::GreaterThan) 
       
  1222 #ifndef Q_OS_SYMBIAN    
       
  1223         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1224         << ( QMessageIdList() << messageIds[4] )
       
  1225 #else        
       
  1226         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1227         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1228 #endif
       
  1229         << "";
       
  1230 
       
  1231     QTest::newRow("receptionTimeStamp greater than equal")
       
  1232         << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::GreaterThanEqual) 
       
  1233         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1234         << ( QMessageIdList() << messageIds[4] )
       
  1235         << "";
       
  1236 #endif
       
  1237 
       
  1238 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1239     QTest::newRow("status equality 1")
       
  1240         << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Equal) 
       
  1241         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1242         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1243         << "";
       
  1244 
       
  1245     QTest::newRow("status equality 2")
       
  1246         << QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Equal) 
       
  1247         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1248         << ( QMessageIdList() << messageIds[0] << messageIds[3] )
       
  1249         << "";
       
  1250 #endif
       
  1251 
       
  1252     QTest::newRow("status equality 3")
       
  1253         << QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Equal) 
       
  1254         << QMessageIdList()
       
  1255         << messageIds
       
  1256         << "";
       
  1257 
       
  1258 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1259     QTest::newRow("status inequality 1")
       
  1260         << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::NotEqual) 
       
  1261         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1262         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1263         << "";
       
  1264 
       
  1265     QTest::newRow("status inequality 2")
       
  1266         << QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::NotEqual) 
       
  1267         << ( QMessageIdList() << messageIds[0] << messageIds[3] )
       
  1268         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1269         << "";
       
  1270 #endif
       
  1271 
       
  1272     QTest::newRow("status inequality 3")
       
  1273         << QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::NotEqual) 
       
  1274         << messageIds
       
  1275         << QMessageIdList()
       
  1276         << "";
       
  1277 
       
  1278 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1279     QTest::newRow("status mask inclusion 1")
       
  1280         << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes) 
       
  1281         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1282         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1283         << "";
       
  1284 
       
  1285     QTest::newRow("status mask inclusion 2")
       
  1286         << QMessageFilter::byStatus(QMessage::Read | QMessage::HasAttachments, QMessageDataComparator::Includes) 
       
  1287         << ( QMessageIdList() << messageIds[4] )
       
  1288         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1289         << "";
       
  1290 #endif
       
  1291 
       
  1292     QTest::newRow("status mask inclusion 3")
       
  1293         << QMessageFilter::byStatus(QMessage::Read | QMessage::Removed, QMessageDataComparator::Includes) 
       
  1294         << QMessageIdList()
       
  1295         << messageIds
       
  1296         << "";
       
  1297 
       
  1298     QTest::newRow("status mask inclusion empty")
       
  1299         << QMessageFilter::byStatus(static_cast<QMessage::StatusFlags>(0), QMessageDataComparator::Includes) 
       
  1300         << QMessageIdList()
       
  1301         << messageIds
       
  1302         << "";
       
  1303 
       
  1304 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1305     QTest::newRow("status mask exclusion 1")
       
  1306         << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Excludes) 
       
  1307         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1308         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1309         << "";
       
  1310 
       
  1311     QTest::newRow("status mask exclusion 2")
       
  1312         << QMessageFilter::byStatus(QMessage::Read | QMessage::HasAttachments, QMessageDataComparator::Excludes) 
       
  1313         << QMessageIdList()
       
  1314         << messageIds
       
  1315         << "";
       
  1316 
       
  1317     QTest::newRow("status mask exclusion 3")
       
  1318         << QMessageFilter::byStatus(QMessage::Read | QMessage::Removed, QMessageDataComparator::Excludes) 
       
  1319         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1320         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1321         << "";
       
  1322 #endif
       
  1323 
       
  1324     QTest::newRow("status mask exclusion empty")
       
  1325         << QMessageFilter::byStatus(static_cast<QMessage::StatusFlags>(0), QMessageDataComparator::Excludes) 
       
  1326         << QMessageIdList()
       
  1327         << messageIds
       
  1328         << "";
       
  1329 
       
  1330 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1331     QTest::newRow("priority equality 1")
       
  1332         << QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::Equal) 
       
  1333         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1334         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1335         << "";
       
  1336 
       
  1337     QTest::newRow("priority equality 2")
       
  1338         << QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::Equal) 
       
  1339         << ( QMessageIdList() << messageIds[4] )
       
  1340         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1341         << "";
       
  1342 
       
  1343     QTest::newRow("priority equality 3")
       
  1344         << QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::Equal) 
       
  1345         << ( QMessageIdList() << messageIds[0] << messageIds[3] )
       
  1346         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1347         << "";
       
  1348 
       
  1349     QTest::newRow("priority inequality 1")
       
  1350         << QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::NotEqual) 
       
  1351         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1352         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1353         << "";
       
  1354 
       
  1355     QTest::newRow("priority inequality 2")
       
  1356         << QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::NotEqual) 
       
  1357         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1358         << ( QMessageIdList() << messageIds[4] )
       
  1359         << "";
       
  1360 
       
  1361     QTest::newRow("priority inequality 3")
       
  1362         << QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::NotEqual) 
       
  1363         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1364         << ( QMessageIdList() << messageIds[0] << messageIds[3] )
       
  1365         << "";
       
  1366 #endif
       
  1367 
       
  1368     QTest::newRow("size equality 1")
       
  1369         << QMessageFilter::bySize(messageSizes[3], QMessageDataComparator::Equal) 
       
  1370         << ( QMessageIdList() << messageIds[3] )
       
  1371         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1372         << "";
       
  1373 
       
  1374     QTest::newRow("size equality 2")
       
  1375         << QMessageFilter::bySize(messageSizes[2], QMessageDataComparator::Equal) 
       
  1376         << ( QMessageIdList() << messageIds[2] )
       
  1377         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1378         << "";
       
  1379 
       
  1380     QTest::newRow("size equality non-matching")
       
  1381         << QMessageFilter::bySize(13, QMessageDataComparator::Equal) 
       
  1382         << QMessageIdList()
       
  1383         << messageIds
       
  1384         << "";
       
  1385 
       
  1386     QTest::newRow("size equality zero")
       
  1387         << QMessageFilter::bySize(0, QMessageDataComparator::Equal) 
       
  1388         << QMessageIdList()
       
  1389         << messageIds
       
  1390         << "";
       
  1391 
       
  1392     QTest::newRow("size inequality 1")
       
  1393         << QMessageFilter::bySize(messageSizes[3], QMessageDataComparator::NotEqual) 
       
  1394         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1395         << ( QMessageIdList() << messageIds[3] )
       
  1396         << "";
       
  1397 
       
  1398     QTest::newRow("size inequality 2")
       
  1399         << QMessageFilter::bySize(messageSizes[2], QMessageDataComparator::NotEqual) 
       
  1400         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1401         << ( QMessageIdList() << messageIds[2] )
       
  1402         << "";
       
  1403 
       
  1404     QTest::newRow("size inequality non-matching")
       
  1405         << QMessageFilter::bySize(13, QMessageDataComparator::NotEqual) 
       
  1406         << messageIds
       
  1407         << QMessageIdList()
       
  1408         << "";
       
  1409 
       
  1410     QTest::newRow("size inequality empty")
       
  1411         << QMessageFilter::bySize(0, QMessageDataComparator::NotEqual) 
       
  1412         << messageIds
       
  1413         << QMessageIdList()
       
  1414         << "";
       
  1415 
       
  1416 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1417     // Sizes are ordered differently on CE
       
  1418     uint discriminator(messageSizes[2]);
       
  1419 #else
       
  1420     uint discriminator(messageSizes[1]);
       
  1421 #endif
       
  1422 
       
  1423 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1424     QTest::newRow("size less than")
       
  1425         << QMessageFilter::bySize(discriminator, QMessageDataComparator::LessThan) 
       
  1426 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1427         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1428         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1429 #elif defined(Q_OS_SYMBIAN)
       
  1430         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1431         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1432 #else
       
  1433         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1434         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1435 #endif
       
  1436         << "";
       
  1437 
       
  1438     QTest::newRow("size less than equal")
       
  1439         << QMessageFilter::bySize(discriminator, QMessageDataComparator::LessThanEqual) 
       
  1440 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1441         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1442         << ( QMessageIdList() << messageIds[3] )
       
  1443 #else
       
  1444         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1445         << ( QMessageIdList() << messageIds[2] )
       
  1446 #endif
       
  1447         << "";
       
  1448 
       
  1449     QTest::newRow("size greater than")
       
  1450         << QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThan) 
       
  1451 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1452         << ( QMessageIdList() << messageIds[3] )
       
  1453         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1454 #else
       
  1455         << ( QMessageIdList() << messageIds[2] )
       
  1456         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1457 #endif
       
  1458         << "";
       
  1459 
       
  1460     QTest::newRow("size greater than equal")
       
  1461         << QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThanEqual)
       
  1462 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1463         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1464         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1465 #elif defined(Q_OS_SYMBIAN)
       
  1466         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1467         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1468 #else
       
  1469         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1470         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1471 #endif
       
  1472         << "";
       
  1473 #endif
       
  1474 
       
  1475 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1476     QTest::newRow("parentAccountId equality 1")
       
  1477         << QMessageFilter::byParentAccountId(accountIds[0], QMessageDataComparator::Equal) 
       
  1478         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1479         << ( QMessageIdList() << messageIds[0] )
       
  1480         << "";
       
  1481 
       
  1482     QTest::newRow("parentAccountId equality 2")
       
  1483         << QMessageFilter::byParentAccountId(accountIds[2], QMessageDataComparator::Equal) 
       
  1484         << ( QMessageIdList() << messageIds[0] )
       
  1485         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1486         << "";
       
  1487 #endif
       
  1488 
       
  1489     QTest::newRow("parentAccountId equality invalid")
       
  1490         << QMessageFilter::byParentAccountId(QMessageAccountId(), QMessageDataComparator::Equal) 
       
  1491         << QMessageIdList()
       
  1492         << messageIds
       
  1493         << "";
       
  1494 
       
  1495 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1496     QTest::newRow("parentAccountId inequality 1")
       
  1497         << QMessageFilter::byParentAccountId(accountIds[0], QMessageDataComparator::NotEqual) 
       
  1498         << ( QMessageIdList() << messageIds[0] )
       
  1499         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1500         << "";
       
  1501 
       
  1502     QTest::newRow("parentAccountId inequality 2")
       
  1503         << QMessageFilter::byParentAccountId(accountIds[2], QMessageDataComparator::NotEqual) 
       
  1504         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1505         << ( QMessageIdList() << messageIds[0] )
       
  1506         << "";
       
  1507 #endif
       
  1508 
       
  1509     QTest::newRow("parentAccountId inequality invalid")
       
  1510         << QMessageFilter::byParentAccountId(QMessageAccountId(), QMessageDataComparator::NotEqual) 
       
  1511         << messageIds
       
  1512         << QMessageIdList()
       
  1513         << "";
       
  1514 
       
  1515 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1516     QTest::newRow("parentAccountId filter inclusion 1")
       
  1517         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Alter Ego", QMessageDataComparator::Equal), QMessageDataComparator::Includes) 
       
  1518         << ( QMessageIdList() << messageIds[0] )
       
  1519         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1520         << "";
       
  1521 
       
  1522     QTest::newRow("parentAccountId filter inclusion 2")
       
  1523         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Work", QMessageDataComparator::Equal), QMessageDataComparator::Includes) 
       
  1524         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1525         << ( QMessageIdList() << messageIds[0] )
       
  1526         << "";
       
  1527 
       
  1528     QTest::newRow("parentAccountId filter inclusion 3")
       
  1529         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("o", QMessageDataComparator::Includes), QMessageDataComparator::Includes) 
       
  1530         << messageIds
       
  1531         << QMessageIdList()
       
  1532         << "";
       
  1533 
       
  1534     QTest::newRow("parentAccountId filter inclusion empty")
       
  1535         << QMessageFilter::byParentAccountId(QMessageAccountFilter(), QMessageDataComparator::Includes) 
       
  1536         << messageIds
       
  1537         << QMessageIdList()
       
  1538         << "";
       
  1539 
       
  1540     QTest::newRow("parentAccountId filter inclusion non-matching")
       
  1541         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("NoneSuch"), QMessageDataComparator::Includes) 
       
  1542         << QMessageIdList()
       
  1543         << messageIds
       
  1544         << "";
       
  1545 
       
  1546     QTest::newRow("parentAccountId filter exclusion 1")
       
  1547         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Alter Ego", QMessageDataComparator::Equal), QMessageDataComparator::Excludes) 
       
  1548         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1549         << ( QMessageIdList() << messageIds[0] )
       
  1550         << "";
       
  1551 
       
  1552     QTest::newRow("parentAccountId filter exclusion 2")
       
  1553         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Work", QMessageDataComparator::Equal), QMessageDataComparator::Excludes) 
       
  1554         << ( QMessageIdList() << messageIds[0] )
       
  1555         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1556         << "";
       
  1557 
       
  1558     QTest::newRow("parentAccountId filter exclusion 3")
       
  1559         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("o", QMessageDataComparator::Includes), QMessageDataComparator::Excludes) 
       
  1560         << QMessageIdList()
       
  1561         << messageIds
       
  1562         << "";
       
  1563 
       
  1564     QTest::newRow("parentAccountId filter exclusion empty")
       
  1565         << QMessageFilter::byParentAccountId(QMessageAccountFilter(), QMessageDataComparator::Excludes) 
       
  1566         << QMessageIdList()
       
  1567         << messageIds
       
  1568         << "";
       
  1569 
       
  1570     QTest::newRow("parentAccountId filter exclusion non-matching")
       
  1571         << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("NoneSuch"), QMessageDataComparator::Excludes) 
       
  1572         << messageIds
       
  1573         << QMessageIdList()
       
  1574         << "";
       
  1575 #endif
       
  1576 
       
  1577 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1578     QTest::newRow("standardFolder equality 1")
       
  1579         << QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal)
       
  1580 #ifndef Q_OS_SYMBIAN
       
  1581         << messageIds
       
  1582         << ( QMessageIdList() )
       
  1583 #else // Created folders are not mapped to any Standard Folder in Symbian 
       
  1584         // <=> No messages will be returned, if messages are searched using Standard Folder Filter     
       
  1585         << ( QMessageIdList() )
       
  1586         << ( QMessageIdList() )
       
  1587 #endif 
       
  1588         << "";
       
  1589 
       
  1590     QTest::newRow("standardFolder equality 2")
       
  1591         << QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal) 
       
  1592 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1593         << ( QMessageIdList() )
       
  1594         << messageIds
       
  1595 #else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
       
  1596         // <=> No messages will be returned, if messages are searched using Standard Folder Filter     
       
  1597         << ( QMessageIdList() )
       
  1598         << ( QMessageIdList() )
       
  1599 #endif        
       
  1600         << "";
       
  1601 
       
  1602     QTest::newRow("standardFolder inequality 1")
       
  1603         << QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::NotEqual)
       
  1604 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1605         << ( QMessageIdList() )
       
  1606         << messageIds
       
  1607 #else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
       
  1608         // <=> No messages will be returned, if messages are searched using Standard Folder Filter     
       
  1609         << ( QMessageIdList() )
       
  1610         << ( QMessageIdList() )
       
  1611 #endif        
       
  1612         << "";
       
  1613 
       
  1614     QTest::newRow("standardFolder inequality 2")
       
  1615         << QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::NotEqual) 
       
  1616 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1617         << messageIds
       
  1618         << ( QMessageIdList() )
       
  1619 #else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
       
  1620         // <=> No messages will be returned, if messages are searched using Standard Folder Filter     
       
  1621         << ( QMessageIdList() )
       
  1622         << ( QMessageIdList() )
       
  1623 #endif        
       
  1624         << "";
       
  1625 #endif
       
  1626 
       
  1627     QTest::newRow("parentFolderId equality 1")
       
  1628         << QMessageFilter::byParentFolderId(folderIds[0], QMessageDataComparator::Equal) 
       
  1629         << ( QMessageIdList() << messageIds[0] )
       
  1630         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1631         << "";
       
  1632 
       
  1633     QTest::newRow("parentFolderId equality 2")
       
  1634         << QMessageFilter::byParentFolderId(folderIds[1], QMessageDataComparator::Equal) 
       
  1635         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1636         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1637         << "";
       
  1638 
       
  1639     QTest::newRow("parentFolderId equality invalid")
       
  1640         << QMessageFilter::byParentFolderId(QMessageFolderId(), QMessageDataComparator::Equal) 
       
  1641         << QMessageIdList()
       
  1642         << messageIds
       
  1643         << "";
       
  1644 
       
  1645     QTest::newRow("parentFolderId inequality 1")
       
  1646         << QMessageFilter::byParentFolderId(folderIds[0], QMessageDataComparator::NotEqual) 
       
  1647         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1648         << ( QMessageIdList() << messageIds[0] )
       
  1649         << "";
       
  1650 
       
  1651     QTest::newRow("parentFolderId inequality 2")
       
  1652         << QMessageFilter::byParentFolderId(folderIds[1], QMessageDataComparator::NotEqual) 
       
  1653         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1654         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1655         << "";
       
  1656 
       
  1657     QTest::newRow("parentFolderId inequality invalid")
       
  1658         << QMessageFilter::byParentFolderId(QMessageFolderId(), QMessageDataComparator::NotEqual) 
       
  1659         << messageIds
       
  1660         << QMessageIdList()
       
  1661         << "";
       
  1662 
       
  1663 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1664     QTest::newRow("parentFolderId filter inclusion 1")
       
  1665         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("My messages", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
       
  1666         << ( QMessageIdList() << messageIds[0] )
       
  1667         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1668         << "";
       
  1669 
       
  1670     QTest::newRow("parentFolderId filter inclusion 2")
       
  1671         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
       
  1672         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1673         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1674         << "";
       
  1675 
       
  1676     QTest::newRow("parentFolderId filter inclusion 3")
       
  1677         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Includes)
       
  1678 #ifndef Q_OS_SYMBIAN    
       
  1679         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1680         << ( QMessageIdList() << messageIds[0] )
       
  1681 #else
       
  1682         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1683         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1684 #endif
       
  1685         << "";
       
  1686 
       
  1687     QTest::newRow("parentFolderId filter inclusion empty")
       
  1688         << QMessageFilter::byParentFolderId(QMessageFolderFilter(), QMessageDataComparator::Includes) 
       
  1689         << messageIds
       
  1690         << QMessageIdList()
       
  1691         << "";
       
  1692 
       
  1693     QTest::newRow("parentFolderId filter inclusion non-matching")
       
  1694         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Includes) 
       
  1695         << QMessageIdList()
       
  1696         << messageIds
       
  1697         << "";
       
  1698 
       
  1699     QTest::newRow("parentFolderId filter exclusion 1")
       
  1700         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("My messages", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
       
  1701         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1702         << ( QMessageIdList() << messageIds[0] )
       
  1703         << "";
       
  1704 
       
  1705     QTest::newRow("parentFolderId filter exclusion 2")
       
  1706         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
       
  1707         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1708         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1709         << "";
       
  1710 
       
  1711     QTest::newRow("parentFolderId filter exclusion 3")
       
  1712         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Excludes)
       
  1713 #ifndef Q_OS_SYMBIAN    
       
  1714         << ( QMessageIdList() << messageIds[0] )
       
  1715         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
       
  1716 #else
       
  1717         << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
       
  1718         << ( QMessageIdList() << messageIds[1] << messageIds[2] )
       
  1719 #endif
       
  1720         << "";
       
  1721 
       
  1722     QTest::newRow("parentFolderId filter exclusion empty")
       
  1723         << QMessageFilter::byParentFolderId(QMessageFolderFilter(), QMessageDataComparator::Excludes) 
       
  1724         << QMessageIdList()
       
  1725         << messageIds
       
  1726         << "";
       
  1727 
       
  1728     QTest::newRow("parentFolderId filter exclusion non-matching")
       
  1729         << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Excludes) 
       
  1730         << messageIds
       
  1731         << QMessageIdList()
       
  1732         << "";
       
  1733 #endif
       
  1734 
       
  1735 #if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1736     QTest::newRow("ancestorFolderIds inclusion 1")
       
  1737         << QMessageFilter::byAncestorFolderIds(folderIds[1], QMessageDataComparator::Includes)
       
  1738         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1739         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1740         << "";
       
  1741 
       
  1742     QTest::newRow("ancestorFolderIds inclusion 2")
       
  1743         << QMessageFilter::byAncestorFolderIds(folderIds[2], QMessageDataComparator::Includes) 
       
  1744         << ( QMessageIdList() << messageIds[4] )
       
  1745         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1746         << "";
       
  1747 
       
  1748     QTest::newRow("ancestorFolderIds inclusion invalid")
       
  1749         << QMessageFilter::byAncestorFolderIds(QMessageFolderId(), QMessageDataComparator::Includes) 
       
  1750         << QMessageIdList()
       
  1751         << messageIds
       
  1752         << "";
       
  1753 
       
  1754     QTest::newRow("ancestorFolderIds exclusion 1")
       
  1755         << QMessageFilter::byAncestorFolderIds(folderIds[1], QMessageDataComparator::Excludes) 
       
  1756         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1757         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1758         << "";
       
  1759 
       
  1760     QTest::newRow("ancestorFolderIds exclusion 2")
       
  1761         << QMessageFilter::byAncestorFolderIds(folderIds[2], QMessageDataComparator::Excludes) 
       
  1762         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1763         << ( QMessageIdList() << messageIds[4] )
       
  1764         << "";
       
  1765 
       
  1766     QTest::newRow("ancestorFolderIds exclusion invalid")
       
  1767         << QMessageFilter::byAncestorFolderIds(QMessageFolderId(), QMessageDataComparator::Excludes) 
       
  1768         << messageIds
       
  1769         << QMessageIdList()
       
  1770         << "";
       
  1771 
       
  1772     QTest::newRow("ancestorFolderIds filter inclusion 1")
       
  1773         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Includes) 
       
  1774         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1775         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1776         << "";
       
  1777 
       
  1778     QTest::newRow("ancestorFolderIds filter inclusion 2")
       
  1779         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("X-Announce", QMessageDataComparator::Equal), QMessageDataComparator::Includes) 
       
  1780         << ( QMessageIdList() << messageIds[4] )
       
  1781         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1782         << "";
       
  1783 
       
  1784     QTest::newRow("ancestorFolderIds filter inclusion 3")
       
  1785         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Includes)
       
  1786         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1787         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1788         << "";
       
  1789 
       
  1790     QTest::newRow("ancestorFolderIds filter inclusion empty")
       
  1791         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter(), QMessageDataComparator::Includes) 
       
  1792         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1793         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1794         << "";
       
  1795 
       
  1796     QTest::newRow("ancestorFolderIds filter inclusion non-matching")
       
  1797         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Includes) 
       
  1798         << QMessageIdList()
       
  1799         << messageIds
       
  1800         << "";
       
  1801 
       
  1802     QTest::newRow("ancestorFolderIds filter exclusion 1")
       
  1803         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Excludes) 
       
  1804         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1805         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1806         << "";
       
  1807 
       
  1808     QTest::newRow("ancestorFolderIds filter exclusion 2")
       
  1809         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("X-Announce", QMessageDataComparator::Equal), QMessageDataComparator::Excludes) 
       
  1810         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1811         << ( QMessageIdList() << messageIds[4] )
       
  1812         << "";
       
  1813 
       
  1814     QTest::newRow("ancestorFolderIds filter exclusion 3")
       
  1815         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Excludes)
       
  1816         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1817         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1818         << "";
       
  1819 
       
  1820     QTest::newRow("ancestorFolderIds filter exclusion empty")
       
  1821         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter(), QMessageDataComparator::Excludes) 
       
  1822         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
       
  1823         << ( QMessageIdList() << messageIds[3] << messageIds[4] )
       
  1824         << "";
       
  1825 
       
  1826     QTest::newRow("ancestorFolderIds filter exclusion non-matching")
       
  1827         << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Excludes) 
       
  1828         << messageIds
       
  1829         << QMessageIdList()
       
  1830         << "";
       
  1831 #endif    
       
  1832 
       
  1833 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1834     // Test some basic combinations
       
  1835     QTest::newRow("status mask inclusion AND timeStamp greater than")
       
  1836         << ( QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes) &
       
  1837                 QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
       
  1838         << ( QMessageIdList() << messageIds[3] )
       
  1839         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
       
  1840         << "";
       
  1841 
       
  1842     QTest::newRow("size greater than equal OR timeStamp greater than")
       
  1843         << ( QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThanEqual) |
       
  1844                 QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
       
  1845 #if defined(Q_OS_WIN) && defined(_WIN32_WCE)
       
  1846         << ( QMessageIdList() << messageIds[2] << messageIds[3] )
       
  1847         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
       
  1848 #elif defined(Q_OS_SYMBIAN)        
       
  1849         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1850         << ( QMessageIdList() << messageIds[0] << messageIds[4] )
       
  1851 #else
       
  1852         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1853         << ( QMessageIdList() << messageIds[0] << messageIds[4] )
       
  1854 #endif
       
  1855         << "";
       
  1856 
       
  1857     QTest::newRow("sender inclusion AND timeStamp greater than")
       
  1858         << ( QMessageFilter::bySender("Boss", QMessageDataComparator::Includes) &
       
  1859                 QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
       
  1860         << ( QMessageIdList() << messageIds[2] )
       
  1861         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1862         << "";
       
  1863 
       
  1864     QTest::newRow("subject inclusion OR subject exclusion")
       
  1865         << ( QMessageFilter::bySubject("agenda", QMessageDataComparator::Includes) |
       
  1866                 QMessageFilter::bySubject("ee", QMessageDataComparator::Excludes) )
       
  1867         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1868         << ( QMessageIdList() << messageIds[0] << messageIds[4] )
       
  1869         << "";
       
  1870 
       
  1871     QMessageFilter andEquals(QMessageFilter::bySender("Boss", QMessageDataComparator::Includes));
       
  1872     andEquals &= QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan);
       
  1873     QTest::newRow("QMessageFilter::operator&=")
       
  1874         << andEquals
       
  1875         << ( QMessageIdList() << messageIds[2] )
       
  1876         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
       
  1877         << "";
       
  1878 #endif
       
  1879 
       
  1880     QMessageFilter orEquals(QMessageFilter::bySubject("agenda", QMessageDataComparator::Includes));
       
  1881     orEquals |= QMessageFilter::bySubject("ee", QMessageDataComparator::Excludes);
       
  1882     QTest::newRow("QMessageFilter::operator|=")
       
  1883         << orEquals
       
  1884         << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1885         << ( QMessageIdList() << messageIds[0] << messageIds[4] )
       
  1886         << "";
       
  1887 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1888     QTest::newRow("body")
       
  1889         << QMessageFilter()
       
  1890         << ( QMessageIdList() << messageIds[0] << messageIds[2] )
       
  1891         << QMessageIdList() // contains body but does not match filter
       
  1892         << "summer";
       
  1893 
       
  1894     QTest::newRow("body and subject")
       
  1895         << QMessageFilter::bySubject("message", QMessageDataComparator::Includes)
       
  1896         << ( QMessageIdList() << messageIds[2] )
       
  1897         << ( QMessageIdList() << messageIds[0] ) // contains body but does not match filter
       
  1898         << "summer";
       
  1899 #endif
       
  1900 
       
  1901 #if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
       
  1902     // Test options
       
  1903     QMessageFilter caseInsensitive1(QMessageFilter::bySubject("free beer", QMessageDataComparator::Equal));
       
  1904     QTest::newRow("options:caseInsensitive 1")
       
  1905         << caseInsensitive1
       
  1906         << ( QMessageIdList() << messageIds[4] )
       
  1907         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1908         << "";
       
  1909 #endif
       
  1910 
       
  1911     QMessageFilter caseSensitive1(QMessageFilter::bySubject("free beer", QMessageDataComparator::Equal));
       
  1912     caseSensitive1.setMatchFlags(QMessageDataComparator::MatchCaseSensitive);
       
  1913     QTest::newRow("options:caseSensitive 1")
       
  1914         << caseSensitive1
       
  1915         << QMessageIdList()
       
  1916         << messageIds
       
  1917         << "";
       
  1918 
       
  1919     QMessageFilter caseSensitive2(QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal));
       
  1920     caseSensitive2.setMatchFlags(QMessageDataComparator::MatchCaseSensitive);
       
  1921     QTest::newRow("options:caseSensitive 2")
       
  1922         << caseSensitive2
       
  1923         << ( QMessageIdList() << messageIds[4] )
       
  1924         << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
       
  1925         << "";
       
  1926 }
       
  1927 
       
  1928 void tst_QMessageService::testQueryMessages_data()
       
  1929 {
       
  1930     testQueryCountData();
       
  1931 }
       
  1932 
       
  1933 void tst_QMessageService::testCountMessages()
       
  1934 {
       
  1935     QFETCH(QMessageFilter, filter);
       
  1936     QFETCH(QMessageIdList, ids);
       
  1937     QFETCH(QMessageIdList, negatedIds);
       
  1938     QFETCH(QString, body);
       
  1939 
       
  1940     if (filter.isSupported()) {
       
  1941         QVERIFY(filter == filter);
       
  1942         QCOMPARE(filter != QMessageFilter(), !filter.isEmpty());
       
  1943 
       
  1944         SignalCatcher sc(this);
       
  1945         connect(testService,SIGNAL(messagesCounted(int)),&sc,SLOT(messagesCounted(int)));
       
  1946 #ifdef Q_OS_SYMBIAN
       
  1947         connect(testService,SIGNAL(stateChanged(QMessageService::State)),&sc,SLOT(stateChanged(QMessageService::State)));
       
  1948 #endif
       
  1949 
       
  1950         // Order is irrelevant for filtering
       
  1951 
       
  1952         if(body.isEmpty()) {
       
  1953             QCOMPARE(testService->countMessages(filter&~existingAccountsFilter),true);
       
  1954 #ifdef Q_OS_SYMBIAN
       
  1955             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
  1956 #else
       
  1957             while(testService->state() == QMessageService::ActiveState)
       
  1958 				QTest::qWait(1000);
       
  1959 #endif
       
  1960             QCOMPARE(sc.count-existingMessageIds.count(), ids.count());
       
  1961 
       
  1962             QCOMPARE(testService->countMessages(~filter&~existingAccountsFilter),true);
       
  1963 #ifdef Q_OS_SYMBIAN
       
  1964             QTRY_VERIFY(sc.state == QMessageService::FinishedState);
       
  1965 #else
       
  1966             while(testService->state() == QMessageService::ActiveState)
       
  1967                 QTest::qWait(1000);
       
  1968 #endif
       
  1969             QCOMPARE(sc.count-existingMessageIds.count(), negatedIds.count());
       
  1970         }
       
  1971 
       
  1972     } else {
       
  1973         QSKIP("Unsupported for this configuration", SkipSingle);
       
  1974     }
       
  1975 }
       
  1976 
       
  1977 void tst_QMessageService::testCountMessages_data()
       
  1978 {
       
  1979     testQueryCountData();
       
  1980 }
       
  1981 
       
  1982 void tst_QMessageService::testSend()
       
  1983 {
       
  1984     QMessage testMessage;
       
  1985     testMessage.setType(QMessage::Email);
       
  1986     bool result = testService->send(testMessage);
       
  1987     QVERIFY(result == true || result == false);
       
  1988 }
       
  1989 
       
  1990 void tst_QMessageService::testCompose()
       
  1991 {
       
  1992     QMessage testMessage;
       
  1993     testMessage.setType(QMessage::Email);
       
  1994     bool result = testService->compose(testMessage);
       
  1995     QVERIFY(result == true || result == false);
       
  1996 }
       
  1997 
       
  1998 
       
  1999 void tst_QMessageService::testRetrieveHeader()
       
  2000 {
       
  2001     bool result = testService->retrieveHeader(QMessageId());
       
  2002     QCOMPARE(result,false);
       
  2003 }
       
  2004 
       
  2005 void tst_QMessageService::testRetrieveBody()
       
  2006 {
       
  2007     bool result = testService->retrieveBody(QMessageId());
       
  2008     QCOMPARE(result,false);
       
  2009 }
       
  2010 
       
  2011 void tst_QMessageService::testRetrieve()
       
  2012 {
       
  2013     bool result = testService->retrieve(QMessageId(),QMessageContentContainerId());
       
  2014     QCOMPARE(result,false);
       
  2015 }
       
  2016 
       
  2017 void tst_QMessageService::testShow()
       
  2018 {
       
  2019     QMessageId testId;
       
  2020     bool result = testService->show(testId);
       
  2021     QCOMPARE(result,false);
       
  2022 }
       
  2023 
       
  2024 void tst_QMessageService::testExportUpdates()
       
  2025 {
       
  2026     bool result = testService->exportUpdates(QMessageAccountId());
       
  2027     QCOMPARE(result,false);
       
  2028 }