qtmobility/tests/auto/qcontactfilter/tst_qcontactfilter.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    37 **
    37 **
    38 ** $QT_END_LICENSE$
    38 ** $QT_END_LICENSE$
    39 **
    39 **
    40 ****************************************************************************/
    40 ****************************************************************************/
    41 #include <QtTest/QtTest>
    41 #include <QtTest/QtTest>
       
    42 #include <QMetaType>
    42 
    43 
    43 #include "qtcontacts.h"
    44 #include "qtcontacts.h"
    44 #include "qcontactmanagerdataholder.h" //QContactManagerDataHolder
    45 #include "qcontactmanagerdataholder.h" //QContactManagerDataHolder
    45 
    46 
    46 //TESTED_CLASS=
    47 //TESTED_CLASS=
    47 //TESTED_FILES=
    48 //TESTED_FILES=
    48 
    49 
    49 QTM_USE_NAMESPACE
    50 QTM_USE_NAMESPACE
       
    51 
       
    52 Q_DECLARE_METATYPE(QContactFilter)
       
    53 
    50 class tst_QContactFilter : public QObject
    54 class tst_QContactFilter : public QObject
    51 {
    55 {
    52 Q_OBJECT
    56 Q_OBJECT
    53 
    57 
    54 public:
    58 public:
    70     void changeLogFilter();
    74     void changeLogFilter();
    71     void actionFilter();
    75     void actionFilter();
    72     void relationshipFilter();
    76     void relationshipFilter();
    73     void boringFilters();
    77     void boringFilters();
    74     void idListFilter();
    78     void idListFilter();
       
    79     void canonicalizedFilter();
       
    80     void canonicalizedFilter_data();
    75 
    81 
    76     void traits();
    82     void traits();
    77 
    83 
    78     void sortObject(); // should perhaps be in a different test :)
    84     void sortObject(); // should perhaps be in a different test :)
    79     void sortTraits();
    85     void sortTraits();
   633     crf.setRelatedContactId(newId);
   639     crf.setRelatedContactId(newId);
   634 
   640 
   635     QVERIFY(crf.relationshipType() == QString());
   641     QVERIFY(crf.relationshipType() == QString());
   636     QVERIFY(crf.relatedContactId() == newId);
   642     QVERIFY(crf.relatedContactId() == newId);
   637 
   643 
   638     crf.setRelatedContactRole(QContactRelationshipFilter::First);
   644     crf.setRelatedContactRole(QContactRelationship::First);
   639     
   645     
   640     QVERIFY(crf.relationshipType() == QString());
   646     QVERIFY(crf.relationshipType() == QString());
   641     QVERIFY(crf.relatedContactId() == newId);
   647     QVERIFY(crf.relatedContactId() == newId);
   642 
   648 
   643     crf.setRelationshipType(QContactRelationship::HasManager);
   649     crf.setRelationshipType(QContactRelationship::HasManager);
   915     QVERIFY(idf == idf3); // again, should be a blank id list filter.
   921     QVERIFY(idf == idf3); // again, should be a blank id list filter.
   916     idf = idf3;
   922     idf = idf3;
   917     idf.setIds(ids); // force a detach
   923     idf.setIds(ids); // force a detach
   918 }
   924 }
   919 
   925 
       
   926 void tst_QContactFilter::canonicalizedFilter()
       
   927 {
       
   928     QFETCH(QContactFilter, in);
       
   929     QFETCH(QContactFilter, expected);
       
   930 
       
   931     QContactFilter out = QContactManagerEngine::canonicalizedFilter(in);
       
   932     QCOMPARE(out, expected);
       
   933 }
       
   934 
       
   935 void tst_QContactFilter::canonicalizedFilter_data()
       
   936 {
       
   937     QTest::addColumn<QContactFilter>("in");
       
   938     QTest::addColumn<QContactFilter>("expected");
       
   939 
       
   940     QContactFilter detailFilter1 = QContactName::match("1");
       
   941     QContactFilter detailFilter2 = QContactName::match("2");
       
   942     QContactInvalidFilter invalidFilter;
       
   943     QContactFilter defaultFilter;
       
   944 
       
   945     {
       
   946         QTest::newRow("Normal detail filter")
       
   947                 << static_cast<QContactFilter>(detailFilter1)
       
   948                 << static_cast<QContactFilter>(detailFilter1);
       
   949     }
       
   950 
       
   951     {
       
   952         QContactIntersectionFilter qcif;
       
   953         qcif << detailFilter1;
       
   954         qcif << detailFilter2;
       
   955         QTest::newRow("Normal intersection filter")
       
   956                 << static_cast<QContactFilter>(qcif)
       
   957                 << static_cast<QContactFilter>(qcif);
       
   958     }
       
   959 
       
   960     {
       
   961         QContactUnionFilter qcuf;
       
   962         qcuf << detailFilter1;
       
   963         qcuf << detailFilter2;
       
   964         QTest::newRow("Normal intersection filter")
       
   965                 << static_cast<QContactFilter>(qcuf)
       
   966                 << static_cast<QContactFilter>(qcuf);
       
   967     }
       
   968 
       
   969     {
       
   970         QContactIntersectionFilter qcif;
       
   971         QTest::newRow("Empty intersection")
       
   972                 << static_cast<QContactFilter>(qcif)
       
   973                 << static_cast<QContactFilter>(defaultFilter);
       
   974     }
       
   975 
       
   976     {
       
   977         QContactUnionFilter qcuf;
       
   978         QTest::newRow("Empty union")
       
   979                 << static_cast<QContactFilter>(qcuf)
       
   980                 << static_cast<QContactFilter>(invalidFilter);
       
   981     }
       
   982 
       
   983     {
       
   984         QContactIntersectionFilter qcif;
       
   985         qcif << detailFilter1;
       
   986         QTest::newRow("Single entry intersection filter")
       
   987                 << static_cast<QContactFilter>(qcif)
       
   988                 << static_cast<QContactFilter>(detailFilter1);
       
   989     }
       
   990 
       
   991     {
       
   992         QContactUnionFilter qcuf;
       
   993         qcuf << detailFilter1;
       
   994         QTest::newRow("Single entry union filter")
       
   995                 << static_cast<QContactFilter>(qcuf)
       
   996                 << static_cast<QContactFilter>(detailFilter1);
       
   997     }
       
   998 
       
   999     {
       
  1000         QContactIntersectionFilter qcif;
       
  1001         qcif << invalidFilter;
       
  1002         qcif << detailFilter1;
       
  1003         qcif << detailFilter2;
       
  1004         QTest::newRow("Intersection with invalid")
       
  1005                 << static_cast<QContactFilter>(qcif)
       
  1006                 << static_cast<QContactFilter>(invalidFilter);
       
  1007     }
       
  1008 
       
  1009     {
       
  1010         QContactIntersectionFilter qcif;
       
  1011         qcif << defaultFilter;
       
  1012         qcif << detailFilter1;
       
  1013         qcif << detailFilter2;
       
  1014         QContactIntersectionFilter expected;
       
  1015         expected << detailFilter1;
       
  1016         expected << detailFilter2;
       
  1017         QTest::newRow("Intersection with default")
       
  1018                 << static_cast<QContactFilter>(qcif)
       
  1019                 << static_cast<QContactFilter>(expected);
       
  1020     }
       
  1021 
       
  1022     {
       
  1023         QContactUnionFilter qcuf;
       
  1024         qcuf << invalidFilter;
       
  1025         qcuf << detailFilter1;
       
  1026         qcuf << detailFilter2;
       
  1027         QContactUnionFilter expected;
       
  1028         expected << detailFilter1;
       
  1029         expected << detailFilter2;
       
  1030         QTest::newRow("Union with invalid")
       
  1031                 << static_cast<QContactFilter>(qcuf)
       
  1032                 << static_cast<QContactFilter>(expected);
       
  1033     }
       
  1034 
       
  1035     {
       
  1036         QContactUnionFilter qcuf;
       
  1037         qcuf << defaultFilter;
       
  1038         qcuf << detailFilter1;
       
  1039         qcuf << detailFilter2;
       
  1040         QTest::newRow("Union with default")
       
  1041                 << static_cast<QContactFilter>(qcuf)
       
  1042                 << static_cast<QContactFilter>(defaultFilter);
       
  1043     }
       
  1044 
       
  1045     {
       
  1046         QContactLocalIdFilter qclif;
       
  1047         QTest::newRow("Empty local id filter")
       
  1048                 << static_cast<QContactFilter>(qclif)
       
  1049                 << static_cast<QContactFilter>(invalidFilter);
       
  1050     }
       
  1051 
       
  1052     {
       
  1053         QContactLocalIdFilter qclif;
       
  1054         qclif.setIds(QList<QContactLocalId>() << 1 << 2);
       
  1055         QTest::newRow("Normal local id filter")
       
  1056                 << static_cast<QContactFilter>(qclif)
       
  1057                 << static_cast<QContactFilter>(qclif);
       
  1058     }
       
  1059 
       
  1060     {
       
  1061         QContactDetailRangeFilter qcdrf;
       
  1062         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1063         QContactDetailFilter expected;
       
  1064         expected.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1065         QTest::newRow("Null valued range filter")
       
  1066                 << static_cast<QContactFilter>(qcdrf)
       
  1067                 << static_cast<QContactFilter>(expected);
       
  1068     }
       
  1069 
       
  1070     {
       
  1071         QContactDetailRangeFilter qcdrf;
       
  1072         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1073         qcdrf.setRange(QLatin1String("a"), QLatin1String("a"));
       
  1074         qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1075         QContactDetailFilter expected;
       
  1076         expected.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1077         expected.setValue(QLatin1String("a"));
       
  1078         expected.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1079         QTest::newRow("Equal valued range filter")
       
  1080                 << static_cast<QContactFilter>(qcdrf)
       
  1081                 << static_cast<QContactFilter>(expected);
       
  1082     }
       
  1083 
       
  1084     {
       
  1085         QContactDetailRangeFilter qcdrf;
       
  1086         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1087         qcdrf.setRange(QLatin1String("a"), QLatin1String("a"),
       
  1088                QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper);
       
  1089         qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1090         QTest::newRow("Equal valued range filter with excluded bounds")
       
  1091                 << static_cast<QContactFilter>(qcdrf)
       
  1092                 << static_cast<QContactFilter>(invalidFilter);
       
  1093     }
       
  1094 
       
  1095     {
       
  1096         QContactDetailRangeFilter qcdrf;
       
  1097         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1098         qcdrf.setRange(QLatin1String("a"), QLatin1String("b"));
       
  1099         qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1100         QTest::newRow("Normal range filter")
       
  1101                 << static_cast<QContactFilter>(qcdrf)
       
  1102                 << static_cast<QContactFilter>(qcdrf);
       
  1103     }
       
  1104 
       
  1105     {
       
  1106         QContactDetailRangeFilter qcdrf;
       
  1107         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1108         qcdrf.setRange(QVariant(QVariant::String), QVariant(QVariant::String)); // null bounds
       
  1109         qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1110         QContactDetailFilter qcdf;
       
  1111         qcdf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1112         qcdf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1113         qcdf.setValue(QVariant(QVariant::String));
       
  1114         QTest::newRow("Null valued range filter")
       
  1115                 << static_cast<QContactFilter>(qcdrf)
       
  1116                 << static_cast<QContactFilter>(qcdf);
       
  1117     }
       
  1118 
       
  1119     {
       
  1120         QContactDetailRangeFilter qcdrf;
       
  1121         qcdrf.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldCustomLabel);
       
  1122         qcdrf.setRange(QVariant(QVariant::String), QLatin1String("a")); // min is null
       
  1123         qcdrf.setMatchFlags(QContactFilter::MatchStartsWith);
       
  1124         QTest::newRow("One sided range filter")
       
  1125                 << static_cast<QContactFilter>(qcdrf)
       
  1126                 << static_cast<QContactFilter>(qcdrf);
       
  1127     }
       
  1128 
       
  1129     {
       
  1130         QContactDetailRangeFilter qcdrf;
       
  1131         QTest::newRow("Empty range filter")
       
  1132                 << static_cast<QContactFilter>(qcdrf)
       
  1133                 << static_cast<QContactFilter>(invalidFilter);
       
  1134     }
       
  1135 
       
  1136     {
       
  1137         QContactDetailFilter qcdf;
       
  1138         QTest::newRow("Empty detail filter")
       
  1139                 << static_cast<QContactFilter>(qcdf)
       
  1140                 << static_cast<QContactFilter>(invalidFilter);
       
  1141     }
       
  1142 }
       
  1143 
   920 void tst_QContactFilter::traits()
  1144 void tst_QContactFilter::traits()
   921 {
  1145 {
   922     // QCOMPARE(sizeof(QContactFilter), sizeof(void *));
  1146     QCOMPARE(sizeof(QContactFilter), sizeof(void *));
   923     QTypeInfo<QTM_PREPEND_NAMESPACE(QContactFilter)> ti;
  1147     QTypeInfo<QTM_PREPEND_NAMESPACE(QContactFilter)> ti;
   924     QVERIFY(ti.isComplex);
  1148     QVERIFY(ti.isComplex);
   925     QVERIFY(!ti.isStatic);
  1149     QVERIFY(!ti.isStatic);
   926     QVERIFY(ti.isLarge); // virtual table + d pointer
  1150     QVERIFY(!ti.isLarge);
   927     QVERIFY(!ti.isPointer);
  1151     QVERIFY(!ti.isPointer);
   928     QVERIFY(!ti.isDummy);
  1152     QVERIFY(!ti.isDummy);
   929 }
  1153 }
   930 
  1154 
   931 void tst_QContactFilter::sortTraits()
  1155 void tst_QContactFilter::sortTraits()