--- a/qtmobility/tests/auto/qcontactfilter/tst_qcontactfilter.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/tests/auto/qcontactfilter/tst_qcontactfilter.cpp Mon May 03 13:18:40 2010 +0300
@@ -39,6 +39,7 @@
**
****************************************************************************/
#include <QtTest/QtTest>
+#include <QMetaType>
#include "qtcontacts.h"
#include "qcontactmanagerdataholder.h" //QContactManagerDataHolder
@@ -47,6 +48,9 @@
//TESTED_FILES=
QTM_USE_NAMESPACE
+
+Q_DECLARE_METATYPE(QContactFilter)
+
class tst_QContactFilter : public QObject
{
Q_OBJECT
@@ -72,6 +76,8 @@
void relationshipFilter();
void boringFilters();
void idListFilter();
+ void canonicalizedFilter();
+ void canonicalizedFilter_data();
void traits();
@@ -635,7 +641,7 @@
QVERIFY(crf.relationshipType() == QString());
QVERIFY(crf.relatedContactId() == newId);
- crf.setRelatedContactRole(QContactRelationshipFilter::First);
+ crf.setRelatedContactRole(QContactRelationship::First);
QVERIFY(crf.relationshipType() == QString());
QVERIFY(crf.relatedContactId() == newId);
@@ -917,13 +923,231 @@
idf.setIds(ids); // force a detach
}
+void tst_QContactFilter::canonicalizedFilter()
+{
+ QFETCH(QContactFilter, in);
+ QFETCH(QContactFilter, expected);
+
+ QContactFilter out = QContactManagerEngine::canonicalizedFilter(in);
+ QCOMPARE(out, expected);
+}
+
+void tst_QContactFilter::canonicalizedFilter_data()
+{
+ QTest::addColumn<QContactFilter>("in");
+ QTest::addColumn<QContactFilter>("expected");
+
+ QContactFilter detailFilter1 = QContactName::match("1");
+ QContactFilter detailFilter2 = QContactName::match("2");
+ QContactInvalidFilter invalidFilter;
+ QContactFilter defaultFilter;
+
+ {
+ QTest::newRow("Normal detail filter")
+ << static_cast<QContactFilter>(detailFilter1)
+ << static_cast<QContactFilter>(detailFilter1);
+ }
+
+ {
+ QContactIntersectionFilter qcif;
+ qcif << detailFilter1;
+ qcif << detailFilter2;
+ QTest::newRow("Normal intersection filter")
+ << static_cast<QContactFilter>(qcif)
+ << static_cast<QContactFilter>(qcif);
+ }
+
+ {
+ QContactUnionFilter qcuf;
+ qcuf << detailFilter1;
+ qcuf << detailFilter2;
+ QTest::newRow("Normal intersection filter")
+ << static_cast<QContactFilter>(qcuf)
+ << static_cast<QContactFilter>(qcuf);
+ }
+
+ {
+ QContactIntersectionFilter qcif;
+ QTest::newRow("Empty intersection")
+ << static_cast<QContactFilter>(qcif)
+ << static_cast<QContactFilter>(defaultFilter);
+ }
+
+ {
+ QContactUnionFilter qcuf;
+ QTest::newRow("Empty union")
+ << static_cast<QContactFilter>(qcuf)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+
+ {
+ QContactIntersectionFilter qcif;
+ qcif << detailFilter1;
+ QTest::newRow("Single entry intersection filter")
+ << static_cast<QContactFilter>(qcif)
+ << static_cast<QContactFilter>(detailFilter1);
+ }
+
+ {
+ QContactUnionFilter qcuf;
+ qcuf << detailFilter1;
+ QTest::newRow("Single entry union filter")
+ << static_cast<QContactFilter>(qcuf)
+ << static_cast<QContactFilter>(detailFilter1);
+ }
+
+ {
+ QContactIntersectionFilter qcif;
+ qcif << invalidFilter;
+ qcif << detailFilter1;
+ qcif << detailFilter2;
+ QTest::newRow("Intersection with invalid")
+ << static_cast<QContactFilter>(qcif)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+
+ {
+ QContactIntersectionFilter qcif;
+ qcif << defaultFilter;
+ qcif << detailFilter1;
+ qcif << detailFilter2;
+ QContactIntersectionFilter expected;
+ expected << detailFilter1;
+ expected << detailFilter2;
+ QTest::newRow("Intersection with default")
+ << static_cast<QContactFilter>(qcif)
+ << static_cast<QContactFilter>(expected);
+ }
+
+ {
+ QContactUnionFilter qcuf;
+ qcuf << invalidFilter;
+ qcuf << detailFilter1;
+ qcuf << detailFilter2;
+ QContactUnionFilter expected;
+ expected << detailFilter1;
+ expected << detailFilter2;
+ QTest::newRow("Union with invalid")
+ << static_cast<QContactFilter>(qcuf)
+ << static_cast<QContactFilter>(expected);
+ }
+
+ {
+ QContactUnionFilter qcuf;
+ qcuf << defaultFilter;
+ qcuf << detailFilter1;
+ qcuf << detailFilter2;
+ QTest::newRow("Union with default")
+ << static_cast<QContactFilter>(qcuf)
+ << static_cast<QContactFilter>(defaultFilter);
+ }
+
+ {
+ QContactLocalIdFilter qclif;
+ QTest::newRow("Empty local id filter")
+ << static_cast<QContactFilter>(qclif)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+
+ {
+ QContactLocalIdFilter qclif;
+ qclif.setIds(QList<QContactLocalId>() << 1 << 2);
+ QTest::newRow("Normal local id filter")
+ << static_cast<QContactFilter>(qclif)
+ << static_cast<QContactFilter>(qclif);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ QContactDetailFilter expected;
+ expected.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ QTest::newRow("Null valued range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(expected);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdrf.setRange(QLatin1String("a"), QLatin1String("a"));
+ qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
+ QContactDetailFilter expected;
+ expected.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ expected.setValue(QLatin1String("a"));
+ expected.setMatchFlags(QContactFilter::MatchStartsWith);
+ QTest::newRow("Equal valued range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(expected);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdrf.setRange(QLatin1String("a"), QLatin1String("a"),
+ QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper);
+ qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
+ QTest::newRow("Equal valued range filter with excluded bounds")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdrf.setRange(QLatin1String("a"), QLatin1String("b"));
+ qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
+ QTest::newRow("Normal range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(qcdrf);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdrf.setRange(QVariant(QVariant::String), QVariant(QVariant::String)); // null bounds
+ qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
+ QContactDetailFilter qcdf;
+ qcdf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdf.setMatchFlags(QContactFilter::MatchStartsWith);
+ qcdf.setValue(QVariant(QVariant::String));
+ QTest::newRow("Null valued range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(qcdf);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
+ qcdrf.setRange(QVariant(QVariant::String), QLatin1String("a")); // min is null
+ qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
+ QTest::newRow("One sided range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(qcdrf);
+ }
+
+ {
+ QContactDetailRangeFilter qcdrf;
+ QTest::newRow("Empty range filter")
+ << static_cast<QContactFilter>(qcdrf)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+
+ {
+ QContactDetailFilter qcdf;
+ QTest::newRow("Empty detail filter")
+ << static_cast<QContactFilter>(qcdf)
+ << static_cast<QContactFilter>(invalidFilter);
+ }
+}
+
void tst_QContactFilter::traits()
{
- // QCOMPARE(sizeof(QContactFilter), sizeof(void *));
+ QCOMPARE(sizeof(QContactFilter), sizeof(void *));
QTypeInfo<QTM_PREPEND_NAMESPACE(QContactFilter)> ti;
QVERIFY(ti.isComplex);
QVERIFY(!ti.isStatic);
- QVERIFY(ti.isLarge); // virtual table + d pointer
+ QVERIFY(!ti.isLarge);
QVERIFY(!ti.isPointer);
QVERIFY(!ti.isDummy);
}