--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qmessageservice/tst_qmessageservice.cpp Wed Aug 25 15:49:42 2010 +0300
@@ -0,0 +1,2028 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QObject>
+#include <QTest>
+#include <QDebug>
+
+#include "qmessageservice.h"
+#include "../support/support.h"
+
+#if defined(Q_OS_SYMBIAN) || (defined(Q_OS_WIN) && defined(_WIN32_WCE))
+# if defined(TESTDATA_DIR)
+# undef TESTDATA_DIR
+# endif
+# define TESTDATA_DIR "."
+#endif
+
+// Will try to wait for the condition while allowing event processing
+#define QTRY_VERIFY(__expr) \
+ do { \
+ const int __step = 50; \
+ const int __timeout = 90000; \
+ if (!(__expr)) { \
+ QTest::qWait(0); \
+ } \
+ for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \
+ QTest::qWait(__step); \
+ } \
+ QVERIFY(__expr); \
+ } while(0)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QTM_USE_NAMESPACE
+
+class SignalCatcher : public QObject
+{
+ Q_OBJECT
+
+public:
+ SignalCatcher(QObject* parent = 0);
+
+ void reset();
+
+public slots:
+ void messagesCounted(int count);
+ void messagesFound(const QMessageIdList& messageList);
+ void stateChanged(QMessageService::State s);
+ void progressChanged(int,int);
+
+public:
+ QMessageIdList ids;
+ int count;
+ QMessageService::State state;
+ int progressMin, progressMax;
+};
+
+SignalCatcher::SignalCatcher(QObject* parent)
+:
+QObject(parent)
+{
+ reset();
+}
+
+void SignalCatcher::reset()
+{
+ ids.clear();
+ count = 0;
+ progressMin = 0;
+ progressMax = 0;
+ state = QMessageService::InactiveState;
+}
+
+void SignalCatcher::messagesCounted(int c)
+{
+ count = c;
+}
+
+void SignalCatcher::messagesFound(const QMessageIdList& results)
+{
+ ids.append(results);
+}
+
+void SignalCatcher::stateChanged(QMessageService::State s)
+{
+ state = s;
+}
+
+void SignalCatcher::progressChanged(int min, int max)
+{
+ progressMin = min; progressMax = max;
+}
+
+class Params
+{
+ QMap<const char*, const char*> _map;
+
+public:
+ Params() {}
+
+ Params& operator()(const char* name, const char* value)
+ {
+ _map.insert(name, value); return *this;
+ }
+
+ operator Support::Parameters() const
+ {
+ Support::Parameters result;
+ QMap<const char*, const char*>::const_iterator it = _map.begin(), end = _map.end();
+ for ( ; it != end; ++it) {
+ result.insert(it.key(), it.value());
+ }
+ return result;
+ }
+};
+
+/*
+ Unit test for QMessageService class.
+*/
+class tst_QMessageService : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMessageService();
+ virtual ~tst_QMessageService();
+
+private slots:
+
+ void init();
+ void cleanUp();
+
+ void initTestCase();
+ void cleanupTestCase();
+
+ void testQueryMessages();
+ void testQueryMessages_data();
+
+ void testCountMessages();
+ void testCountMessages_data();
+
+ void testSend();
+
+ void testCompose();
+
+ void testRetrieveHeader();
+
+ void testRetrieveBody();
+
+ void testRetrieve();
+
+ void testShow();
+
+ void testExportUpdates();
+
+private:
+ void testQueryCountData();
+
+private:
+ QMessageService* testService;
+
+ QSet<QMessageFolderId> existingFolderIds;
+ QMessageFolderIdList folderIds;
+
+ QSet<QMessageAccountId> existingAccountIds;
+ QMessageAccountIdList accountIds;
+
+ QSet<QMessageId> existingMessageIds;
+ QMessageIdList messageIds;
+
+ QMessageFilter existingAccountsFilter;
+
+ QList<int> messageSizes;
+};
+
+Q_DECLARE_METATYPE(QMessageAccountIdList)
+Q_DECLARE_METATYPE(QMessageAccountFilter)
+Q_DECLARE_METATYPE(QMessageAccountSortOrder)
+
+Q_DECLARE_METATYPE(QMessageFolderIdList)
+Q_DECLARE_METATYPE(QMessageFolderFilter)
+Q_DECLARE_METATYPE(QMessageFolderSortOrder)
+
+Q_DECLARE_METATYPE(QMessageIdList)
+Q_DECLARE_METATYPE(QMessageFilter)
+Q_DECLARE_METATYPE(QMessageSortOrder)
+
+QTEST_MAIN(tst_QMessageService)
+
+#include "tst_qmessageservice.moc"
+
+tst_QMessageService::tst_QMessageService()
+{
+}
+
+tst_QMessageService::~tst_QMessageService()
+{
+}
+
+void tst_QMessageService::init()
+{
+ testService = new QMessageService(this);
+}
+
+void tst_QMessageService::cleanUp()
+{
+ if(testService) delete testService; testService = 0;
+}
+
+void tst_QMessageService::initTestCase()
+{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ if (!Support::mapiAvailable())
+ QSKIP("Skipping tests because a MAPI subsystem does not appear to be available", SkipAll);
+#endif
+
+ Support::clearMessageStore();
+
+ QMessageManager* manager = new QMessageManager(this);
+
+ existingAccountIds = manager->queryAccounts().toSet();
+
+
+ existingAccountsFilter = ~QMessageFilter();
+ foreach(QMessageAccountId id, existingAccountIds) {
+ existingAccountsFilter |= QMessageFilter::byParentAccountId(id);
+ }
+
+ QList<Support::Parameters> accountParams;
+
+ accountParams << Params()("name", "Work")
+ ("fromAddress", "Important.Person@example.com")
+ << Params()("name", "Personal")
+ ("fromAddress", "superstar2000@example.net")
+ << Params()("name", "Alter Ego")
+ ("fromAddress", "UltraMegaLightningBabe@superhero.test");
+
+ foreach (const Support::Parameters ¶ms, accountParams) {
+ accountIds.append(Support::addAccount(params));
+ QVERIFY(accountIds.last().isValid());
+ }
+
+ existingFolderIds = manager->queryFolders().toSet();
+
+ QList<Support::Parameters> folderParams;
+ folderParams << Params()("parentAccountName", "Alter Ego")
+ ("path", "My messages")
+ ("name", "My messages")
+ ("parentFolderPath", "")
+ << Params()("parentAccountName", "Work")
+ ("path", "Innbox")
+ ("name", "Innbox")
+ ("parentFolderPath", "")
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ << Params()("parentAccountName", "Work")
+ ("path", "Innbox/X-Announce")
+ ("name", "X-Announce")
+ ("parentFolderPath", "Innbox")
+ << Params()("parentAccountName", "Work")
+ ("path", "Innbox/X-Announce/X-Archived")
+ ("name", "X-Archived")
+ ("parentFolderPath", "Innbox/X-Announce");
+#else
+ << Params()("parentAccountName", "Work")
+ ("path", "X-Announce")
+ ("name", "X-Announce")
+ ("parentFolderPath", "")
+ << Params()("parentAccountName", "Work")
+ ("path", "X-Archived")
+ ("name", "X-Archived")
+ ("parentFolderPath", "");
+#endif
+
+ foreach (const Support::Parameters ¶ms, folderParams) {
+ folderIds.append(Support::addFolder(params));
+ QVERIFY(folderIds.last().isValid());
+ }
+
+ existingMessageIds = manager->queryMessages(~existingAccountsFilter).toSet();
+
+ // For windows at least, we can't have HasAttachments set without a real attachment
+ const char *attachmentPaths = TESTDATA_DIR "/testdata/1.txt";
+
+ QList<Support::Parameters> messageParams;
+ messageParams << Params()("parentAccountName", "Alter Ego")
+ ("parentFolderPath", "My messages")
+#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
+ ("type", "email")
+#else
+ ("type", "sms")
+#endif
+ ("to", "SuperMegaLightningBabe")
+ ("from", "Frozone")
+ ("subject", "Ice to meet you")
+ ("text", "Shall I compare thee to a summers day")
+ ("date", "2000-01-01T12:00:00Z")
+ ("receivedDate", "2000-01-01T12:01:00Z")
+ ("priority", "")
+ ("size", "160")
+ ("status-read", "true")
+ ("custom-flagged", "true")
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "Innbox")
+ ("type", "email")
+ ("to", "Important.Person@example.com")
+ ("from", "Esteemed.Colleague@example.com")
+ ("subject", "Meeting agenda")
+ ("date", "2000-01-01T12:00:00Z")
+ ("receivedDate", "2000-01-01T20:00:00Z")
+ ("priority", "High")
+ ("size", "10240")
+ ("status-hasAttachments", "true")
+ ("attachments", attachmentPaths)
+ ("custom-spam", "filter:no")
+ ("custom-flagged", "true")
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "Innbox")
+ ("type", "email")
+ ("to", "Important.Person@example.com,Minion@example.com")
+ ("from", "Big.Boss@example.com")
+ ("subject", "Motivational message")
+ ("text", "School's out for summer")
+ ("date", "2000-01-01T13:00:00Z")
+ ("receivedDate", "2000-01-01T13:05:00Z")
+ ("priority", "High")
+ ("size", "20480")
+ ("status-hasAttachments", "true")
+ ("attachments", attachmentPaths)
+ ("custom-spam", "filter:no")
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "Innbox/X-Announce")
+ ("type", "email")
+ ("to", "announce@example.com,maintenance-log@example.com")
+ ("from", "sysadmin@example.com")
+ ("subject", "Scheduled maintenance")
+ ("date", "2000-01-01T13:00:00Z")
+ ("receivedDate", "2000-01-01T13:00:01Z")
+ ("priority", "")
+ ("size", "1056")
+ ("status-read", "true")
+ ("custom-spam", "filter:maybe")
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "Innbox/X-Announce/X-Archived")
+ ("type", "email")
+ ("to", "announce@example.com")
+ ("from", "Big.Boss@example.com")
+ ("subject", "Free beer")
+ ("date", "1999-04-01T10:30:00Z")
+ ("receivedDate", "1999-04-01T10:31:00Z")
+ ("priority", "Low")
+ ("size", "4096")
+ ("status-read", "true")
+ ("status-hasAttachments", "true")
+ ("attachments", attachmentPaths)
+ ("custom-spam", "filter:yes");
+#else
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "X-Announce")
+ ("type", "email")
+ ("to", "announce@example.com,maintenance-log@example.com")
+ ("from", "sysadmin@example.com")
+ ("subject", "Scheduled maintenance")
+ ("date", "2000-01-01T13:00:00Z")
+ ("receivedDate", "2000-01-01T13:00:01Z")
+ ("priority", "")
+ ("size", "1056")
+ ("status-read", "true")
+ ("custom-spam", "filter:maybe")
+ << Params()("parentAccountName", "Work")
+ ("parentFolderPath", "X-Archived")
+ ("type", "email")
+ ("to", "announce@example.com")
+ ("from", "Big.Boss@example.com")
+ ("subject", "Free beer")
+ ("date", "1999-04-01T10:30:00Z")
+ ("receivedDate", "1999-04-01T10:31:00Z")
+ ("priority", "Low")
+ ("size", "4096")
+ ("status-read", "true")
+ ("status-hasAttachments", "true")
+ ("attachments", attachmentPaths)
+ ("custom-spam", "filter:yes");
+#endif
+
+ foreach (const Support::Parameters ¶ms, messageParams) {
+ messageIds.append(Support::addMessage(params));
+ QVERIFY(messageIds.last().isValid());
+
+ // Use the resultant message sizes in testing - the configured sizes aren't honoured by MAPI
+ QMessage m(messageIds.last());
+ messageSizes.append(m.size());
+ }
+}
+
+void tst_QMessageService::cleanupTestCase()
+{
+}
+
+void tst_QMessageService::testQueryMessages()
+{
+ QFETCH(QMessageFilter, filter);
+ QFETCH(QMessageIdList, ids);
+ QFETCH(QMessageIdList, negatedIds);
+ QFETCH(QString, body);
+
+ if (filter.isSupported()) {
+ QVERIFY(filter == filter);
+ QCOMPARE(filter != QMessageFilter(), !filter.isEmpty());
+
+ SignalCatcher sc(this);
+ connect(testService,SIGNAL(messagesFound(const QMessageIdList&)),&sc,SLOT(messagesFound(const QMessageIdList&)));
+#if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ connect(testService,SIGNAL(stateChanged(QMessageService::State)),&sc,SLOT(stateChanged(QMessageService::State)));
+#endif
+
+ // Order is irrelevant for filtering
+
+ if (body.isEmpty()) {
+ sc.reset();
+ QCOMPARE(testService->queryMessages(filter&~existingAccountsFilter),true);
+#if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),ids.toSet());
+
+ sc.reset();
+
+ QCOMPARE(testService->queryMessages(~filter&~existingAccountsFilter),true);
+#if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),negatedIds.toSet());
+
+ } else {
+
+ sc.reset();
+
+ QCOMPARE(testService->queryMessages(filter&~existingAccountsFilter,body),true);
+#if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),ids.toSet());
+
+ sc.reset();
+
+ QCOMPARE(testService->queryMessages(~filter&~existingAccountsFilter,body),true);
+#if (defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.ids.toSet().subtract(existingMessageIds),negatedIds.toSet());
+ }
+ } else {
+ QSKIP("Unsupported for this configuration", SkipSingle);
+ }
+}
+
+void tst_QMessageService::testQueryCountData()
+{
+ QTest::addColumn<QMessageFilter>("filter");
+ QTest::addColumn<QMessageIdList>("ids");
+ QTest::addColumn<QMessageIdList>("negatedIds");
+ QTest::addColumn<QString>("body");
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("empty filter")
+ << QMessageFilter()
+ << messageIds
+ << QMessageIdList()
+ << "";
+#endif
+
+ QTest::newRow("id equality 1")
+ << QMessageFilter::byId(messageIds[0], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("id equality 2")
+ << QMessageFilter::byId(messageIds[1], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("id equality invalid")
+ << QMessageFilter::byId(QMessageId(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("id inequality 1")
+ << QMessageFilter::byId(messageIds[0], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("id inequality 2")
+ << QMessageFilter::byId(messageIds[1], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] )
+ << "";
+
+ QTest::newRow("id inequality invalid")
+ << QMessageFilter::byId(QMessageId(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("id list inclusion 1")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[0], QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("id list inclusion 2")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[1], QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[1] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("id list inclusion 3")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[0] << messageIds[1], QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] )
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("id list inclusion empty")
+ << QMessageFilter::byId(QMessageIdList(), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+#endif
+
+ QTest::newRow("id list exclusion 1")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[0], QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("id list exclusion 2")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[1], QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] )
+ << "";
+
+ QTest::newRow("id list exclusion 3")
+ << QMessageFilter::byId(QMessageIdList() << messageIds[0] << messageIds[1], QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] )
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("id list exclusion empty")
+ << QMessageFilter::byId(QMessageIdList(), QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("id filter inclusion empty")
+ << QMessageFilter::byId(QMessageFilter(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("id filter inclusion non matching")
+ << QMessageFilter::byId(~QMessageFilter(), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("id filter inclusion 1")
+ << QMessageFilter::byId(QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal),
+ QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+#endif
+
+ QTest::newRow("type equality 1")
+ << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Equal)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << QMessageIdList()
+ << messageIds
+#else
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("type equality 2")
+ << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Equal)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << messageIds
+ << QMessageIdList()
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+#endif
+ << "";
+
+ QTest::newRow("type equality invalid")
+ << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("type inequality 1")
+ << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::NotEqual)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << messageIds
+ << QMessageIdList()
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+#endif
+ << "";
+
+ QTest::newRow("type inequality 2")
+ << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::NotEqual)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << QMessageIdList()
+ << messageIds
+#else
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("type inequality invalid")
+ << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("type mask inclusion 1")
+ << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Includes)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << QMessageIdList()
+ << messageIds
+#else
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("type mask inclusion 2")
+ << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Includes)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << messageIds
+ << QMessageIdList()
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+#endif
+ << "";
+
+ QTest::newRow("type mask inclusion 3")
+ << QMessageFilter::byType(QMessage::Sms | QMessage::Email, QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("type mask inclusion empty")
+ << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("type mask exclusion 1")
+ << QMessageFilter::byType(QMessage::Sms, QMessageDataComparator::Excludes)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << messageIds
+ << QMessageIdList()
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+#endif
+ << "";
+
+ QTest::newRow("type mask exclusion 2")
+ << QMessageFilter::byType(QMessage::Email, QMessageDataComparator::Excludes)
+#if (defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6))
+ << QMessageIdList()
+ << messageIds
+#else
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("type mask exclusion 3")
+ << QMessageFilter::byType(QMessage::Sms | QMessage::Email, QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("type mask exclusion empty")
+ << QMessageFilter::byType(QMessage::NoType, QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("sender equality 1")
+ << QMessageFilter::bySender("Esteemed.Colleague@example.com", QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("sender equality 2")
+ << QMessageFilter::bySender("sysadmin@example.com", QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+#endif
+
+ QTest::newRow("sender equality non-matching")
+ << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("sender equality empty")
+ << QMessageFilter::bySender(QString(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("sender equality zero-length")
+ << QMessageFilter::bySender("", QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("sender inequality 1")
+ << QMessageFilter::bySender("Esteemed.Colleague@example.com", QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] )
+ << "";
+
+ QTest::newRow("sender inequality 2")
+ << QMessageFilter::bySender("sysadmin@example.com", QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] )
+ << "";
+
+ QTest::newRow("sender inequality non-matching")
+ << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender inequality empty")
+ << QMessageFilter::bySender(QString(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender inequality zero-length")
+ << QMessageFilter::bySender("", QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender inclusion 1")
+ << QMessageFilter::bySender("example", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("sender inclusion 2")
+ << QMessageFilter::bySender("ozone", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("sender inclusion non-matching")
+ << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("sender inclusion empty")
+ << QMessageFilter::bySender(QString(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender inclusion zero-length")
+ << QMessageFilter::bySender("", QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender exclusion 1")
+ << QMessageFilter::bySender("example", QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("sender exclusion 2")
+ << QMessageFilter::bySender("ozone", QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("sender exclusion non-matching")
+ << QMessageFilter::bySender("Nonesuch", QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("sender exclusion empty")
+ << QMessageFilter::bySender(QString(), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("sender exclusion zero-length")
+ << QMessageFilter::bySender("", QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+#endif
+
+ QTest::newRow("recipients inclusion 1")
+ << QMessageFilter::byRecipients("example", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("recipients inclusion 2")
+ << QMessageFilter::byRecipients("Mega", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("recipients inclusion non-matching")
+ << QMessageFilter::byRecipients("Nonesuch", QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("recipients inclusion empty")
+ << QMessageFilter::byRecipients(QString(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("recipients inclusion zero-length")
+ << QMessageFilter::byRecipients("", QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("recipients exclusion 1")
+ << QMessageFilter::byRecipients("example", QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("recipients exclusion 2")
+ << QMessageFilter::byRecipients("Mega", QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("recipients exclusion non-matching")
+ << QMessageFilter::byRecipients("Nonesuch", QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("recipients exclusion empty")
+ << QMessageFilter::byRecipients(QString(), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("recipients exclusion zero-length")
+ << QMessageFilter::byRecipients("", QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject equality 1")
+ << QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("subject equality 2")
+ << QMessageFilter::bySubject("Scheduled maintenance", QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+
+ QTest::newRow("subject equality non-matching")
+ << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject equality empty")
+ << QMessageFilter::bySubject(QString(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject equality zero-length")
+ << QMessageFilter::bySubject("", QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject inequality 1")
+ << QMessageFilter::bySubject("Free beer", QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("subject inequality 2")
+ << QMessageFilter::bySubject("Scheduled maintenance", QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] )
+ << "";
+
+ QTest::newRow("subject inequality non-matching")
+ << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject inequality empty")
+ << QMessageFilter::bySubject(QString(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject inequality zero-length")
+ << QMessageFilter::bySubject("", QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject inclusion 1")
+ << QMessageFilter::bySubject("vation", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("subject inclusion 2")
+ << QMessageFilter::bySubject(" ", QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject inclusion non-matching")
+ << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject inclusion empty")
+ << QMessageFilter::bySubject(QString(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject inclusion zero-length")
+ << QMessageFilter::bySubject("", QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject exclusion 1")
+ << QMessageFilter::bySubject("vation", QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] )
+ << "";
+
+ QTest::newRow("subject exclusion 2")
+ << QMessageFilter::bySubject(" ", QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject exclusion non-matching")
+ << QMessageFilter::bySubject("Nonesuch", QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("subject exclusion empty")
+ << QMessageFilter::bySubject(QString(), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("subject exclusion zero-length")
+ << QMessageFilter::bySubject("", QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("timeStamp equality 1")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("timeStamp equality 2")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[3] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << "";
+
+ QTest::newRow("timeStamp equality non-matching")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("timeStamp equality empty")
+ << QMessageFilter::byTimeStamp(QDateTime(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("timeStamp inequality 1")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("timeStamp inequality 2")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[2] )
+ << "";
+
+ QTest::newRow("timeStamp inequality non-matching")
+ << QMessageFilter::byTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("timeStamp inequality empty")
+ << QMessageFilter::byTimeStamp(QDateTime(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QDateTime epoch(QDateTime::fromString("2000-01-01T12:00:00Z", Qt::ISODate));
+
+ QTest::newRow("timeStamp less than")
+ << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::LessThan)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("timeStamp less than equal")
+ << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::LessThanEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("timeStamp greater than")
+ << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan)
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << "";
+
+ QTest::newRow("timeStamp greater than equal")
+ << QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThanEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("receptionTimeStamp equality 1")
+#ifndef Q_OS_SYMBIAN
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:31:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+#else
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+#endif
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("receptionTimeStamp equality 2")
+#ifndef Q_OS_SYMBIAN
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:05:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+#else
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[3] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("receptionTimeStamp equality non-matching")
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("receptionTimeStamp equality empty")
+ << QMessageFilter::byReceptionTimeStamp(QDateTime(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("receptionTimeStamp inequality 1")
+#ifndef Q_OS_SYMBIAN
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:31:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+#else
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1999-04-01T10:30:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+#endif
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("receptionTimeStamp inequality 2")
+#ifndef Q_OS_SYMBIAN
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:05:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] )
+#else
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("2000-01-01T13:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[2] )
+#endif
+ << "";
+
+ QTest::newRow("receptionTimeStamp inequality non-matching")
+ << QMessageFilter::byReceptionTimeStamp(QDateTime::fromString("1990-01-01T01:00:00Z", Qt::ISODate), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("receptionTimeStamp inequality empty")
+ << QMessageFilter::byReceptionTimeStamp(QDateTime(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("receptionTimeStamp less than")
+ << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::LessThan)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("receptionTimeStamp less than equal")
+ << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::LessThanEqual)
+#ifndef Q_OS_SYMBIAN
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+#else
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+#endif
+ << "";
+
+ QTest::newRow("receptionTimeStamp greater than")
+ << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::GreaterThan)
+#ifndef Q_OS_SYMBIAN
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+#else
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("receptionTimeStamp greater than equal")
+ << QMessageFilter::byReceptionTimeStamp(epoch, QMessageDataComparator::GreaterThanEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("status equality 1")
+ << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("status equality 2")
+ << QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] )
+ << "";
+#endif
+
+ QTest::newRow("status equality 3")
+ << QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("status inequality 1")
+ << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("status inequality 2")
+ << QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+#endif
+
+ QTest::newRow("status inequality 3")
+ << QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("status mask inclusion 1")
+ << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("status mask inclusion 2")
+ << QMessageFilter::byStatus(QMessage::Read | QMessage::HasAttachments, QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+#endif
+
+ QTest::newRow("status mask inclusion 3")
+ << QMessageFilter::byStatus(QMessage::Read | QMessage::Removed, QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("status mask inclusion empty")
+ << QMessageFilter::byStatus(static_cast<QMessage::StatusFlags>(0), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("status mask exclusion 1")
+ << QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("status mask exclusion 2")
+ << QMessageFilter::byStatus(QMessage::Read | QMessage::HasAttachments, QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("status mask exclusion 3")
+ << QMessageFilter::byStatus(QMessage::Read | QMessage::Removed, QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+#endif
+
+ QTest::newRow("status mask exclusion empty")
+ << QMessageFilter::byStatus(static_cast<QMessage::StatusFlags>(0), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("priority equality 1")
+ << QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("priority equality 2")
+ << QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("priority equality 3")
+ << QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+
+ QTest::newRow("priority inequality 1")
+ << QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("priority inequality 2")
+ << QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("priority inequality 3")
+ << QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] )
+ << "";
+#endif
+
+ QTest::newRow("size equality 1")
+ << QMessageFilter::bySize(messageSizes[3], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+
+ QTest::newRow("size equality 2")
+ << QMessageFilter::bySize(messageSizes[2], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("size equality non-matching")
+ << QMessageFilter::bySize(13, QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("size equality zero")
+ << QMessageFilter::bySize(0, QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("size inequality 1")
+ << QMessageFilter::bySize(messageSizes[3], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] )
+ << "";
+
+ QTest::newRow("size inequality 2")
+ << QMessageFilter::bySize(messageSizes[2], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] )
+ << "";
+
+ QTest::newRow("size inequality non-matching")
+ << QMessageFilter::bySize(13, QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("size inequality empty")
+ << QMessageFilter::bySize(0, QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ // Sizes are ordered differently on CE
+ uint discriminator(messageSizes[2]);
+#else
+ uint discriminator(messageSizes[1]);
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("size less than")
+ << QMessageFilter::bySize(discriminator, QMessageDataComparator::LessThan)
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+#elif defined(Q_OS_SYMBIAN)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+#else
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+#endif
+ << "";
+
+ QTest::newRow("size less than equal")
+ << QMessageFilter::bySize(discriminator, QMessageDataComparator::LessThanEqual)
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[3] )
+#else
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[2] )
+#endif
+ << "";
+
+ QTest::newRow("size greater than")
+ << QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThan)
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ << ( QMessageIdList() << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+#else
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("size greater than equal")
+ << QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThanEqual)
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+#elif defined(Q_OS_SYMBIAN)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("parentAccountId equality 1")
+ << QMessageFilter::byParentAccountId(accountIds[0], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("parentAccountId equality 2")
+ << QMessageFilter::byParentAccountId(accountIds[2], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+#endif
+
+ QTest::newRow("parentAccountId equality invalid")
+ << QMessageFilter::byParentAccountId(QMessageAccountId(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("parentAccountId inequality 1")
+ << QMessageFilter::byParentAccountId(accountIds[0], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentAccountId inequality 2")
+ << QMessageFilter::byParentAccountId(accountIds[2], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+#endif
+
+ QTest::newRow("parentAccountId inequality invalid")
+ << QMessageFilter::byParentAccountId(QMessageAccountId(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("parentAccountId filter inclusion 1")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Alter Ego", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentAccountId filter inclusion 2")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Work", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("parentAccountId filter inclusion 3")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("o", QMessageDataComparator::Includes), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("parentAccountId filter inclusion empty")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("parentAccountId filter inclusion non-matching")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("NoneSuch"), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentAccountId filter exclusion 1")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Alter Ego", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("parentAccountId filter exclusion 2")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("Work", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentAccountId filter exclusion 3")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("o", QMessageDataComparator::Includes), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentAccountId filter exclusion empty")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter(), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentAccountId filter exclusion non-matching")
+ << QMessageFilter::byParentAccountId(QMessageAccountFilter::byName("NoneSuch"), QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("standardFolder equality 1")
+ << QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal)
+#ifndef Q_OS_SYMBIAN
+ << messageIds
+ << ( QMessageIdList() )
+#else // Created folders are not mapped to any Standard Folder in Symbian
+ // <=> No messages will be returned, if messages are searched using Standard Folder Filter
+ << ( QMessageIdList() )
+ << ( QMessageIdList() )
+#endif
+ << "";
+
+ QTest::newRow("standardFolder equality 2")
+ << QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal)
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ << ( QMessageIdList() )
+ << messageIds
+#else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
+ // <=> No messages will be returned, if messages are searched using Standard Folder Filter
+ << ( QMessageIdList() )
+ << ( QMessageIdList() )
+#endif
+ << "";
+
+ QTest::newRow("standardFolder inequality 1")
+ << QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::NotEqual)
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ << ( QMessageIdList() )
+ << messageIds
+#else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
+ // <=> No messages will be returned, if messages are searched using Standard Folder Filter
+ << ( QMessageIdList() )
+ << ( QMessageIdList() )
+#endif
+ << "";
+
+ QTest::newRow("standardFolder inequality 2")
+ << QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::NotEqual)
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ << messageIds
+ << ( QMessageIdList() )
+#else // Created folders are not mapped to any Standard Folder in Symbian & Maemo
+ // <=> No messages will be returned, if messages are searched using Standard Folder Filter
+ << ( QMessageIdList() )
+ << ( QMessageIdList() )
+#endif
+ << "";
+#endif
+
+ QTest::newRow("parentFolderId equality 1")
+ << QMessageFilter::byParentFolderId(folderIds[0], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentFolderId equality 2")
+ << QMessageFilter::byParentFolderId(folderIds[1], QMessageDataComparator::Equal)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentFolderId equality invalid")
+ << QMessageFilter::byParentFolderId(QMessageFolderId(), QMessageDataComparator::Equal)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentFolderId inequality 1")
+ << QMessageFilter::byParentFolderId(folderIds[0], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("parentFolderId inequality 2")
+ << QMessageFilter::byParentFolderId(folderIds[1], QMessageDataComparator::NotEqual)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("parentFolderId inequality invalid")
+ << QMessageFilter::byParentFolderId(QMessageFolderId(), QMessageDataComparator::NotEqual)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("parentFolderId filter inclusion 1")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("My messages", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentFolderId filter inclusion 2")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("parentFolderId filter inclusion 3")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Includes)
+#ifndef Q_OS_SYMBIAN
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("parentFolderId filter inclusion empty")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter(), QMessageDataComparator::Includes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("parentFolderId filter inclusion non-matching")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentFolderId filter exclusion 1")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("My messages", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] )
+ << "";
+
+ QTest::newRow("parentFolderId filter exclusion 2")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("parentFolderId filter exclusion 3")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Excludes)
+#ifndef Q_OS_SYMBIAN
+ << ( QMessageIdList() << messageIds[0] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] << messageIds[4] )
+#else
+ << ( QMessageIdList() << messageIds[0] << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] )
+#endif
+ << "";
+
+ QTest::newRow("parentFolderId filter exclusion empty")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter(), QMessageDataComparator::Excludes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("parentFolderId filter exclusion non-matching")
+ << QMessageFilter::byParentFolderId(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+#endif
+
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("ancestorFolderIds inclusion 1")
+ << QMessageFilter::byAncestorFolderIds(folderIds[1], QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds inclusion 2")
+ << QMessageFilter::byAncestorFolderIds(folderIds[2], QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds inclusion invalid")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderId(), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("ancestorFolderIds exclusion 1")
+ << QMessageFilter::byAncestorFolderIds(folderIds[1], QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds exclusion 2")
+ << QMessageFilter::byAncestorFolderIds(folderIds[2], QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds exclusion invalid")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderId(), QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter inclusion 1")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter inclusion 2")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("X-Announce", QMessageDataComparator::Equal), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter inclusion 3")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter inclusion empty")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter(), QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter inclusion non-matching")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Includes)
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter exclusion 1")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("Innbox", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter exclusion 2")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byName("X-Announce", QMessageDataComparator::Equal), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter exclusion 3")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("Innbox", QMessageDataComparator::Includes), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter exclusion empty")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter(), QMessageDataComparator::Excludes)
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] )
+ << ( QMessageIdList() << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("ancestorFolderIds filter exclusion non-matching")
+ << QMessageFilter::byAncestorFolderIds(QMessageFolderFilter::byPath("NoneSuch"), QMessageDataComparator::Excludes)
+ << messageIds
+ << QMessageIdList()
+ << "";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ // Test some basic combinations
+ QTest::newRow("status mask inclusion AND timeStamp greater than")
+ << ( QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes) &
+ QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
+ << ( QMessageIdList() << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[4] )
+ << "";
+
+ QTest::newRow("size greater than equal OR timeStamp greater than")
+ << ( QMessageFilter::bySize(discriminator, QMessageDataComparator::GreaterThanEqual) |
+ QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
+#if defined(Q_OS_WIN) && defined(_WIN32_WCE)
+ << ( QMessageIdList() << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[4] )
+#elif defined(Q_OS_SYMBIAN)
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[4] )
+#else
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[4] )
+#endif
+ << "";
+
+ QTest::newRow("sender inclusion AND timeStamp greater than")
+ << ( QMessageFilter::bySender("Boss", QMessageDataComparator::Includes) &
+ QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan) )
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << "";
+
+ QTest::newRow("subject inclusion OR subject exclusion")
+ << ( QMessageFilter::bySubject("agenda", QMessageDataComparator::Includes) |
+ QMessageFilter::bySubject("ee", QMessageDataComparator::Excludes) )
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[4] )
+ << "";
+
+ QMessageFilter andEquals(QMessageFilter::bySender("Boss", QMessageDataComparator::Includes));
+ andEquals &= QMessageFilter::byTimeStamp(epoch, QMessageDataComparator::GreaterThan);
+ QTest::newRow("QMessageFilter::operator&=")
+ << andEquals
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[3] << messageIds[4] )
+ << "";
+#endif
+
+ QMessageFilter orEquals(QMessageFilter::bySubject("agenda", QMessageDataComparator::Includes));
+ orEquals |= QMessageFilter::bySubject("ee", QMessageDataComparator::Excludes);
+ QTest::newRow("QMessageFilter::operator|=")
+ << orEquals
+ << ( QMessageIdList() << messageIds[1] << messageIds[2] << messageIds[3] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[4] )
+ << "";
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ QTest::newRow("body")
+ << QMessageFilter()
+ << ( QMessageIdList() << messageIds[0] << messageIds[2] )
+ << QMessageIdList() // contains body but does not match filter
+ << "summer";
+
+ QTest::newRow("body and subject")
+ << QMessageFilter::bySubject("message", QMessageDataComparator::Includes)
+ << ( QMessageIdList() << messageIds[2] )
+ << ( QMessageIdList() << messageIds[0] ) // contains body but does not match filter
+ << "summer";
+#endif
+
+#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+ // Test options
+ QMessageFilter caseInsensitive1(QMessageFilter::bySubject("free beer", QMessageDataComparator::Equal));
+ QTest::newRow("options:caseInsensitive 1")
+ << caseInsensitive1
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+#endif
+
+ QMessageFilter caseSensitive1(QMessageFilter::bySubject("free beer", QMessageDataComparator::Equal));
+ caseSensitive1.setMatchFlags(QMessageDataComparator::MatchCaseSensitive);
+ QTest::newRow("options:caseSensitive 1")
+ << caseSensitive1
+ << QMessageIdList()
+ << messageIds
+ << "";
+
+ QMessageFilter caseSensitive2(QMessageFilter::bySubject("Free beer", QMessageDataComparator::Equal));
+ caseSensitive2.setMatchFlags(QMessageDataComparator::MatchCaseSensitive);
+ QTest::newRow("options:caseSensitive 2")
+ << caseSensitive2
+ << ( QMessageIdList() << messageIds[4] )
+ << ( QMessageIdList() << messageIds[0] << messageIds[1] << messageIds[2] << messageIds[3] )
+ << "";
+}
+
+void tst_QMessageService::testQueryMessages_data()
+{
+ testQueryCountData();
+}
+
+void tst_QMessageService::testCountMessages()
+{
+ QFETCH(QMessageFilter, filter);
+ QFETCH(QMessageIdList, ids);
+ QFETCH(QMessageIdList, negatedIds);
+ QFETCH(QString, body);
+
+ if (filter.isSupported()) {
+ QVERIFY(filter == filter);
+ QCOMPARE(filter != QMessageFilter(), !filter.isEmpty());
+
+ SignalCatcher sc(this);
+ connect(testService,SIGNAL(messagesCounted(int)),&sc,SLOT(messagesCounted(int)));
+#ifdef Q_OS_SYMBIAN
+ connect(testService,SIGNAL(stateChanged(QMessageService::State)),&sc,SLOT(stateChanged(QMessageService::State)));
+#endif
+
+ // Order is irrelevant for filtering
+
+ if(body.isEmpty()) {
+ QCOMPARE(testService->countMessages(filter&~existingAccountsFilter),true);
+#ifdef Q_OS_SYMBIAN
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.count-existingMessageIds.count(), ids.count());
+
+ QCOMPARE(testService->countMessages(~filter&~existingAccountsFilter),true);
+#ifdef Q_OS_SYMBIAN
+ QTRY_VERIFY(sc.state == QMessageService::FinishedState);
+#else
+ while(testService->state() == QMessageService::ActiveState)
+ QTest::qWait(1000);
+#endif
+ QCOMPARE(sc.count-existingMessageIds.count(), negatedIds.count());
+ }
+
+ } else {
+ QSKIP("Unsupported for this configuration", SkipSingle);
+ }
+}
+
+void tst_QMessageService::testCountMessages_data()
+{
+ testQueryCountData();
+}
+
+void tst_QMessageService::testSend()
+{
+ QMessage testMessage;
+ testMessage.setType(QMessage::Email);
+ bool result = testService->send(testMessage);
+ QVERIFY(result == true || result == false);
+}
+
+void tst_QMessageService::testCompose()
+{
+ QMessage testMessage;
+ testMessage.setType(QMessage::Email);
+ bool result = testService->compose(testMessage);
+ QVERIFY(result == true || result == false);
+}
+
+
+void tst_QMessageService::testRetrieveHeader()
+{
+ bool result = testService->retrieveHeader(QMessageId());
+ QCOMPARE(result,false);
+}
+
+void tst_QMessageService::testRetrieveBody()
+{
+ bool result = testService->retrieveBody(QMessageId());
+ QCOMPARE(result,false);
+}
+
+void tst_QMessageService::testRetrieve()
+{
+ bool result = testService->retrieve(QMessageId(),QMessageContentContainerId());
+ QCOMPARE(result,false);
+}
+
+void tst_QMessageService::testShow()
+{
+ QMessageId testId;
+ bool result = testService->show(testId);
+ QCOMPARE(result,false);
+}
+
+void tst_QMessageService::testExportUpdates()
+{
+ bool result = testService->exportUpdates(QMessageAccountId());
+ QCOMPARE(result,false);
+}