--- a/qtmobility/tests/auto/qcontactmanagerfiltering/tst_qcontactmanagerfiltering.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/tests/auto/qcontactmanagerfiltering/tst_qcontactmanagerfiltering.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -166,12 +166,11 @@
managerNames.removeAll("testdummy");
managerNames.removeAll("teststaticdummy");
managerNames.removeAll("maliciousplugin");
-#if defined(Q_OS_SYMBIAN)
- // TODO: Analyze fails on symbiansim backend. Simply disable testing of
- // symbiansim backend for now to make sure the fails do not steal attention
- // from possible fails in symbian backend.
+ // Symbiansim backend does not support the required details for these
+ // tests to pass. Symbiansim backend specific unit test tst_simcm is
+ // testing filtering instead.
managerNames.removeAll("symbiansim");
-#endif
+
foreach(QString mgr, managerNames) {
QMap<QString, QString> params;
@@ -360,6 +359,11 @@
QTest::newRow("integer == 20, contains, string") << manager << defAndFieldNames.first << defAndFieldNames.second << QVariant("20") << (int)(Qt::MatchFixedString | Qt::MatchContains) << "bc";
QTest::newRow("integer == 0, contains, string") << manager << defAndFieldNames.first << defAndFieldNames.second << QVariant("0") << (int)(Qt::MatchFixedString | Qt::MatchContains) << "abc";
}
+
+ /* Detail filter semantics: empty definition or field */
+ newMRow("Empty Definition Name", manager) << manager << es << lastname << QVariant("A") << (int)(Qt::MatchStartsWith) << es; // empty definition name means filter matches nothing
+ newMRow("Empty Def And Field Name", manager) << manager << es << es << QVariant("A") << (int)(Qt::MatchStartsWith) << es; // as above
+ newMRow("Empty Field Name", manager) << manager << name << es << QVariant("A") << (int)(Qt::MatchStartsWith) << "abcdefghijk"; // empty field name matches any with a name detail
}
}
@@ -529,7 +533,7 @@
newMRow("no def name", manager) << manager << es << "value" << false << ev << es;
/* Strings (name) */
- newMRow("first name presence", manager) << manager << "Name" << QString(QLatin1String(QContactName::FieldFirstName)) << false << ev << "abcdefg";
+ newMRow("first name presence", manager) << manager << "Name" << QString(QLatin1String(QContactName::FieldFirstName)) << false << ev << "abcdefghijk";
newMRow("first name == Aaron", manager) << manager << "Name" << QString(QLatin1String(QContactName::FieldFirstName)) << true << QVariant("Aaron") << "a";
/*
@@ -798,6 +802,7 @@
QString phonedef = QContactPhoneNumber::DefinitionName;
QString phonenum = QContactPhoneNumber::FieldNumber;
+ bool localeCapsFirst = (QString("aaa").localeAwareCompare(QString("AAA")) > 0);
int csflag = (int)Qt::MatchCaseSensitive;
@@ -806,7 +811,7 @@
/* First, cover the "empty defname / fieldname / ranges" cases */
newMRow("invalid defname", manager) << manager << es << firstname << QVariant("A") << QVariant("Bob") << false << 0 << true << 0 << es;
- newMRow("defn presence test", manager) << manager << namedef << es << QVariant("A") << QVariant("Bob") << false << 0 << true << 0 << "abcdefg";
+ newMRow("defn presence test", manager) << manager << namedef << es << QVariant("A") << QVariant("Bob") << false << 0 << true << 0 << "abcdefghijk";
newMRow("field presence test", manager) << manager << phonedef << phonenum << QVariant() << QVariant() << false << 0 << true << 0 << "ab";
newMRow("good def, bad field", manager) << manager << namedef << "Bongo" << QVariant("A") << QVariant("Bob") << false << 0 << true << 0 << es;
newMRow("bad def", manager) << manager << "Bongo" << es << QVariant("A") << QVariant("Bob") << false << 0 << true << 0 << es;
@@ -816,27 +821,36 @@
newMRow("field presence test negative", manager) << manager << "Burgers" << "Beef" << ev << ev << false << 0 << false << 0 << es;
newMRow("defn yes, field no presence test negative", manager) << manager << namedef << "Burger" << ev << ev << false << 0 << false << 0 << es;
- newMRow("no max, all results", manager) << manager << namedef << firstname << QVariant("a") << QVariant() << false << 0 << true << 0 << "abcdefg";
- newMRow("no max, some results", manager) << manager << namedef << firstname << QVariant("BOB") << QVariant() << false << 0 << true << 0 << "bcdefg";
+ newMRow("no max, all results", manager) << manager << namedef << firstname << QVariant("a") << QVariant() << false << 0 << true << 0 << "abcdefghijk";
+ newMRow("no max, some results", manager) << manager << namedef << firstname << QVariant("bob") << QVariant() << false << 0 << true << 0 << "bcdefghijk";
newMRow("no max, no results", manager) << manager << namedef << firstname << QVariant("ZamBeZI") << QVariant() << false << 0 << true << 0 << es;
- newMRow("no min, all results", manager) << manager << namedef << firstname << QVariant() << QVariant("zambezi") << false << 0 << true << 0 << "abcdefg";
+ newMRow("no min, all results", manager) << manager << namedef << firstname << QVariant() << QVariant("zambezi") << false << 0 << true << 0 << "abcdefghijk";
newMRow("no min, some results", manager) << manager << namedef << firstname << QVariant() << QVariant("bOb") << false << 0 << true << 0 << "a";
newMRow("no min, no results", manager) << manager << namedef << firstname << QVariant() << QVariant("aardvark") << false << 0 << true << 0 << es;
/* now case sensitive */
- newMRow("no max, cs, all results", manager) << manager << namedef << firstname << QVariant("A") << QVariant() << false << 0 << true << csflag << "abcdefg";
- newMRow("no max, cs, some results", manager) << manager << namedef << firstname << QVariant("Bob") << QVariant() << false << 0 << true << csflag << "bcdefg";
- newMRow("no max, cs, no results", manager) << manager << namedef << firstname << QVariant("Zambezi") << QVariant() << false << 0 << true << csflag << es;
- newMRow("no min, cs, all results", manager) << manager << namedef << firstname << QVariant() << QVariant("Zambezi") << false << 0 << true << csflag << "abcdefg";
+ newMRow("no max, cs, all results", manager) << manager << namedef << firstname << QVariant("A") << QVariant() << false << 0 << true << csflag << "abcdefghijk";
+ newMRow("no max, cs, some results", manager) << manager << namedef << firstname << QVariant("Bob") << QVariant() << false << 0 << true << csflag << "bcdefghijk";
+ newMRow("no max, cs, no results", manager) << manager << namedef << firstname << QVariant("Xambezi") << QVariant() << false << 0 << true << csflag << "hijk";
+ newMRow("no min, cs, most results", manager) << manager << namedef << firstname << QVariant() << QVariant("Xambezi") << false << 0 << true << csflag << "abcdefg";
newMRow("no min, cs, some results", manager) << manager << namedef << firstname << QVariant() << QVariant("Bob") << false << 0 << true << csflag << "a";
newMRow("no min, cs, no results", manager) << manager << namedef << firstname << QVariant() << QVariant("Aardvark") << false << 0 << true << csflag << es;
/* due to ascii sorting, most lower case parameters give all results, which is boring */
- newMRow("no max, cs, badcase, all results", manager) << manager << namedef << firstname << QVariant("A") << QVariant() << false << 0 << true << csflag << "abcdefg";
- newMRow("no max, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant("BOB") << QVariant() << false << 0 << true << csflag << "bcdefg";
- newMRow("no max, cs, badcase, no results", manager) << manager << namedef << firstname << QVariant("ZAMBEZI") << QVariant() << false << 0 << true << csflag << es;
- newMRow("no min, cs, badcase, all results", manager) << manager << namedef << firstname << QVariant() << QVariant("ZAMBEZI") << false << 0 << true << csflag << "abcdefg";
- newMRow("no min, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant() << QVariant("BOB") << false << 0 << true << csflag << "a";
+ newMRow("no max, cs, badcase, all results", manager) << manager << namedef << firstname << QVariant("A") << QVariant() << false << 0 << true << csflag << "abcdefghijk";
+ if(localeCapsFirst) {
+ newMRow("no max, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant("BOB") << QVariant() << false << 0 << true << csflag << "bcdefghijk";
+ } else {
+ newMRow("no max, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant("BOB") << QVariant() << false << 0 << true << csflag << "cdefghijk";
+ }
+
+ newMRow("no max, cs, badcase, no results", manager) << manager << namedef << firstname << QVariant("XAMBEZI") << QVariant() << false << 0 << true << csflag << "hijk";
+ newMRow("no min, cs, badcase, all results", manager) << manager << namedef << firstname << QVariant() << QVariant("XAMBEZI") << false << 0 << true << csflag << "abcdefg";
+ if(localeCapsFirst) {
+ newMRow("no min, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant() << QVariant("BOB") << false << 0 << true << csflag << "a";
+ } else {
+ newMRow("no min, cs, badcase, some results", manager) << manager << namedef << firstname << QVariant() << QVariant("BOB") << false << 0 << true << csflag << "ab";
+ }
newMRow("no min, cs, badcase, no results", manager) << manager << namedef << firstname << QVariant() << QVariant("AARDVARK") << false << 0 << true << csflag << es;
/* 'a' has phone number ("5551212") */
@@ -867,36 +881,15 @@
QTest::newRow("string range - startswith - 9") << manager << namedef << firstname << QVariant("Barry") << QVariant("C") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchStartsWith) << "bc";
// Open ended starts with
- QTest::newRow("string range - startswith open top - 1") << manager << namedef << firstname << QVariant("A") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefg";
- QTest::newRow("string range - startswith open top - 2") << manager << namedef << firstname << QVariant("A") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefg";
- QTest::newRow("string range - startswith open top - 3") << manager << namedef << firstname << QVariant("Aaron") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefg";
- QTest::newRow("string range - startswith open top - 4") << manager << namedef << firstname << QVariant("Aaron") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchStartsWith) << "bcdefg";
+ QTest::newRow("string range - startswith open top - 1") << manager << namedef << firstname << QVariant("A") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefghijk";
+ QTest::newRow("string range - startswith open top - 2") << manager << namedef << firstname << QVariant("A") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefghijk";
+ QTest::newRow("string range - startswith open top - 3") << manager << namedef << firstname << QVariant("Aaron") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchStartsWith) << "abcdefghijk";
+ QTest::newRow("string range - startswith open top - 4") << manager << namedef << firstname << QVariant("Aaron") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchStartsWith) << "bcdefghijk";
QTest::newRow("string range - startswith open bottom - 1") << manager << namedef << firstname << ev << QVariant("Borit") << true << (int)(QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchStartsWith) << "abc";
QTest::newRow("string range - startswith open bottom - 2") << manager << namedef << firstname << ev << QVariant("Borit") << true << (int)(QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchStartsWith) << "abc";
QTest::newRow("string range - startswith open bottom - 3") << manager << namedef << firstname << ev << QVariant("Boris") << true << (int)(QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchStartsWith) << "abc";
QTest::newRow("string range - startswith open bottom - 4") << manager << namedef << firstname << ev << QVariant("Boris") << true << (int)(QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchStartsWith) << "ab";
- // Qt::MatchContains with range is invalid
- QTest::newRow("string range - contains - 1") << manager << namedef << firstname << QVariant("A") << QVariant("Bob") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchContains) << es;
-
- // Check EndsWith with range: A == son, B == sen, C == sun
- QTest::newRow("string range - endswith - 1") << manager << namedef << lastname << QVariant("sen") << QVariant("son") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchEndsWith) << es;
- QTest::newRow("string range - endswith - 2") << manager << namedef << lastname << QVariant("sen") << QVariant("son") << true << (int)(QContactDetailRangeFilter::IncludeLower | QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchEndsWith) << "b";
- QTest::newRow("string range - endswith - 3") << manager << namedef << lastname << QVariant("sen") << QVariant("son") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchEndsWith) << "a";
- QTest::newRow("string range - endswith - 4") << manager << namedef << lastname << QVariant("sen") << QVariant("son") << true << (int)(QContactDetailRangeFilter::IncludeLower | QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchEndsWith) << "ab";
- QTest::newRow("string range - endswith - 5") << manager << namedef << lastname << QVariant("sen") << QVariant("sun") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchEndsWith) << "ac";
- QTest::newRow("string range - endswith - 6") << manager << namedef << lastname << QVariant("sen") << QVariant("sun") << true << (int)(QContactDetailRangeFilter::ExcludeLower | QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchEndsWith) << "a";
-
- // Endswith with open ends
- QTest::newRow("string range - endswith no max - 1") << manager << namedef << lastname << QVariant("sen") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchEndsWith) << "acdg";
- QTest::newRow("string range - endswith no max - 2") << manager << namedef << lastname << QVariant("sen") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchEndsWith) << "abcdg";
- QTest::newRow("string range - endswith no max - 3") << manager << namedef << lastname << QVariant("sem") << ev << true << (int)(QContactDetailRangeFilter::ExcludeLower) << true << (int)(Qt::MatchEndsWith) << "abcdg";
- QTest::newRow("string range - endswith no max - 4") << manager << namedef << lastname << QVariant("sem") << ev << true << (int)(QContactDetailRangeFilter::IncludeLower) << true << (int)(Qt::MatchEndsWith) << "abcdg";
- QTest::newRow("string range - endswith no min - 1") << manager << namedef << lastname << ev << QVariant("sen") << true << (int)(QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchEndsWith) << "ef";
- QTest::newRow("string range - endswith no min - 2") << manager << namedef << lastname << ev << QVariant("sen") << true << (int)(QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchEndsWith) << "bef";
- QTest::newRow("string range - endswith no min - 3") << manager << namedef << lastname << ev << QVariant("seo") << true << (int)(QContactDetailRangeFilter::ExcludeUpper) << true << (int)(Qt::MatchEndsWith) << "bef";
- QTest::newRow("string range - endswith no min - 4") << manager << namedef << lastname << ev << QVariant("seo") << true << (int)(QContactDetailRangeFilter::IncludeUpper) << true << (int)(Qt::MatchEndsWith) << "bef";
-
/* A(10), B(20), C(-20) */
// Now integer range testing
QPair<QString, QString> defAndFieldNames = defAndFieldNamesForTypePerManager.value(manager).value("Integer");
@@ -2025,14 +2018,22 @@
QTest::addColumn<int>("directioni");
QTest::addColumn<bool>("setbp");
QTest::addColumn<int>("blankpolicyi");
+ QTest::addColumn<int>("casesensitivityi");
QTest::addColumn<QString>("expected");
QTest::addColumn<QString>("unstable");
QString firstname = QContactName::FieldFirstName;
QString lastname = QContactName::FieldLastName;
QString namedef = QContactName::DefinitionName;
- QString urldef = QContactUrl::DefinitionName;
- QString urlfield = QContactUrl::FieldUrl;
+ QString dldef = QContactDisplayLabel::DefinitionName;
+ QString dlfld = QContactDisplayLabel::FieldLabel;
+
+ int asc = Qt::AscendingOrder;
+ int desc = Qt::DescendingOrder;
+ int bll = QContactSortOrder::BlanksLast;
+ int blf = QContactSortOrder::BlanksFirst;
+ int cs = Qt::CaseSensitive;
+ int ci = Qt::CaseInsensitive;
for (int i = 0; i < managers.size(); i++) {
QContactManager *manager = managers.at(i);
@@ -2040,20 +2041,23 @@
QPair<QString, QString> integerDefAndFieldNames = defAndFieldNamesForTypePerManager.value(manager).value("Integer");
QPair<QString, QString> stringDefAndFieldNames = defAndFieldNamesForTypePerManager.value(manager).value("String");
- newMRow("first ascending", manager) << manager << namedef << firstname << (int)(Qt::AscendingOrder) << false << 0 << "abcdefg" << "efg"; // efg have the same first name
- newMRow("first descending", manager) << manager << namedef << firstname << (int)(Qt::DescendingOrder) << false << 0 << "efgdcba" << "efg";// efg have the same first name
- newMRow("last ascending", manager) << manager << namedef << lastname << (int)(Qt::AscendingOrder) << false << 0 << "bacdefg" << ""; // all have a well defined, sortable last name
- newMRow("last descending", manager) << manager << namedef << lastname << (int)(Qt::DescendingOrder) << false << 0 << "gfedcab" << ""; // all have a well defined, sortable last name
+ newMRow("first ascending", manager) << manager << namedef << firstname << asc << false << 0 << cs << "abcdefghjik" << "efg"; // efg have the same first name
+ newMRow("first descending", manager) << manager << namedef << firstname << desc << false << 0 << cs << "kijhefgdcba" << "efg";// efg have the same first name
+ newMRow("last ascending", manager) << manager << namedef << lastname << asc << false << 0 << cs << "bacdefghijk" << "hijk"; // all have a well defined, sortable last name except hijk
+ newMRow("last descending", manager) << manager << namedef << lastname << desc << false << 0 << cs << "gfedcabhijk" << "hijk"; // all have a well defined, sortable last name except hijk
if (!integerDefAndFieldNames.first.isEmpty() && !integerDefAndFieldNames.second.isEmpty()) {
- newMRow("integer ascending, blanks last", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << (int)(Qt::AscendingOrder) << true << (int)(QContactSortOrder::BlanksLast) << "cabgfed" << "gfed"; // gfed have no integer
- newMRow("integer descending, blanks last", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << (int)(Qt::DescendingOrder) << true << (int)(QContactSortOrder::BlanksLast) << "bacgfed" << "gfed"; // gfed have no integer
- newMRow("integer ascending, blanks first", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << (int)(Qt::AscendingOrder) << true << (int)(QContactSortOrder::BlanksFirst) << "defgcab" << "gfed"; // gfed have no integer
- newMRow("integer descending, blanks first", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << (int)(Qt::DescendingOrder) << true << (int)(QContactSortOrder::BlanksFirst) << "defgbac" << "gfed"; // gfed have no integer
+ newMRow("integer ascending, blanks last", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << asc << true << bll << cs << "cabgfedhijk" << "gfedhijk"; // gfedhijk have no integer
+ newMRow("integer descending, blanks last", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << desc << true << bll << cs << "bacgfedhijk" << "gfedhijk"; // gfedhijk have no integer
+ newMRow("integer ascending, blanks first", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << asc << true << blf << cs << "hijkdefgcab" << "gfedhijk"; // gfedhijk have no integer
+ newMRow("integer descending, blanks first", manager) << manager << integerDefAndFieldNames.first << integerDefAndFieldNames.second << desc << true << blf << cs << "hijkdefgbac" << "gfedhijk"; // gfedhijk have no integer
}
if (!stringDefAndFieldNames.first.isEmpty() && !stringDefAndFieldNames.second.isEmpty()) {
- QTest::newRow("string ascending (null value), blanks first") << manager << stringDefAndFieldNames.first << stringDefAndFieldNames.second << (int)(Qt::AscendingOrder) << true << (int)(QContactSortOrder::BlanksFirst) << "feabcdg" << "fe"; // f and e have blank string
- QTest::newRow("string ascending (null value), blanks last") << manager << stringDefAndFieldNames.first << stringDefAndFieldNames.second << (int)(Qt::AscendingOrder) << true << (int)(QContactSortOrder::BlanksLast) << "abcdgef" << "ef"; // f and e have blank string
+ QTest::newRow("string ascending (null value), blanks first") << manager << stringDefAndFieldNames.first << stringDefAndFieldNames.second << asc << true << blf << cs << "feabcdg" << "fehijk"; // f and e have blank string
+ QTest::newRow("string ascending (null value), blanks last") << manager << stringDefAndFieldNames.first << stringDefAndFieldNames.second << asc << true << bll << cs << "abcdgef" << "efhijk"; // f and e have blank string
}
+
+ newMRow("display label insensitive", manager) << manager << dldef << dlfld << asc << false << 0 << cs << "abcdefghjik" << "efg";
+ newMRow("display label sensitive", manager) << manager << dldef << dlfld << asc << false << 0 << ci << "abcdefghjik" << "efg";
}
}
@@ -2193,68 +2197,71 @@
QString phonedef = QContactPhoneNumber::DefinitionName;
QString numberfield = QContactPhoneNumber::FieldNumber;
+ int asc = Qt::AscendingOrder;
+ int desc = Qt::DescendingOrder;
+
for (int i = 0; i < managers.size(); i++) {
QContactManager *manager = managers.at(i);
QPair<QString, QString> stringDefAndFieldNames = defAndFieldNamesForTypePerManager.value(manager).value("String");
QTest::newRow("1") << manager
- << true << namedef << firstname << (int)(Qt::AscendingOrder)
- << true << namedef << lastname << (int)(Qt::AscendingOrder)
+ << true << namedef << firstname << asc
+ << true << namedef << lastname << asc
<< "abcdefg" << false;
QTest::newRow("2") << manager
- << true << namedef << firstname << (int)(Qt::AscendingOrder)
- << true << namedef << lastname << (int)(Qt::DescendingOrder)
+ << true << namedef << firstname << asc
+ << true << namedef << lastname << desc
<< "abcdgfe" << false;
QTest::newRow("3") << manager
- << true << namedef << firstname << (int)(Qt::DescendingOrder)
- << true << namedef << lastname << (int)(Qt::AscendingOrder)
+ << true << namedef << firstname << desc
+ << true << namedef << lastname << asc
<< "efgdcba" << false;
QTest::newRow("4") << manager
- << true << namedef << firstname << (int)(Qt::DescendingOrder)
- << true << namedef << lastname << (int)(Qt::DescendingOrder)
+ << true << namedef << firstname << desc
+ << true << namedef << lastname << desc
<< "gfedcba" << false;
QTest::newRow("5") << manager
- << true << namedef << firstname << (int)(Qt::AscendingOrder)
- << false << namedef << lastname << (int)(Qt::AscendingOrder)
+ << true << namedef << firstname << asc
+ << false << namedef << lastname << asc
<< "abcdefg" << true;
QTest::newRow("5b") << manager
- << true << namedef << firstname << (int)(Qt::AscendingOrder)
- << true << es << es << (int)(Qt::AscendingOrder)
+ << true << namedef << firstname << asc
+ << true << es << es << asc
<< "abcdefg" << true;
QTest::newRow("6") << manager
- << false << namedef << firstname << (int)(Qt::AscendingOrder)
- << true << namedef << lastname << (int)(Qt::AscendingOrder)
+ << false << namedef << firstname << asc
+ << true << namedef << lastname << asc
<< "bacdefg" << false;
// This test is completely unstable; no sort criteria means dependent upon internal sort order of manager.
//QTest::newRow("7") << manager
- // << false << namedef << firstname << (int)(Qt::AscendingOrder)
- // << false << namedef << lastname << (int)(Qt::AscendingOrder)
+ // << false << namedef << firstname << asc
+ // << false << namedef << lastname << asc
// << "abcdefg" << false; // XXX Isn't this totally unstable?
if (!stringDefAndFieldNames.first.isEmpty() && !stringDefAndFieldNames.second.isEmpty()) {
QTest::newRow("8") << manager
- << true << stringDefAndFieldNames.first << stringDefAndFieldNames.second << (int)(Qt::AscendingOrder)
- << false << stringDefAndFieldNames.first << stringDefAndFieldNames.second << (int)(Qt::DescendingOrder)
+ << true << stringDefAndFieldNames.first << stringDefAndFieldNames.second << asc
+ << false << stringDefAndFieldNames.first << stringDefAndFieldNames.second << desc
<< "abcdgef" << false; // default policy = blanks last, and ef have no value (e is empty, f is null)
QTest::newRow("8b") << manager
- << true << stringDefAndFieldNames.first << stringDefAndFieldNames.second << (int)(Qt::AscendingOrder)
- << false << es << es << (int)(Qt::DescendingOrder)
+ << true << stringDefAndFieldNames.first << stringDefAndFieldNames.second << asc
+ << false << es << es << desc
<< "abcdgef" << false; // default policy = blanks last, and ef have no value (e is empty, f is null)
}
QTest::newRow("9") << manager
- << true << phonedef << numberfield << (int)(Qt::AscendingOrder)
- << true << namedef << lastname << (int)(Qt::DescendingOrder)
+ << true << phonedef << numberfield << asc
+ << true << namedef << lastname << desc
<< "abgfedc" << false;
QTest::newRow("10") << manager
- << true << namedef << firstname << (int)(Qt::AscendingOrder)
- << true << namedef << firstname << (int)(Qt::DescendingOrder)
+ << true << namedef << firstname << asc
+ << true << namedef << firstname << desc
<< "abcdefg" << true;
}
@@ -2295,6 +2302,12 @@
QList<QContactLocalId> ids = cm->contactIds(sortOrders);
QString output = convertIds(contacts, ids);
+ // Remove the display label tests
+ output.remove('h');
+ output.remove('i');
+ output.remove('j');
+ output.remove('k');
+
// Just like the single sort test, we might get some contacts back in indeterminate order
// (but their relative position with other contacts should not change)
if (efgunstable) {
@@ -2916,6 +2929,36 @@
originalContactCount += 7;
Q_ASSERT(cm->contactIds().count() == originalContactCount);
+ /* Now some for the locale aware sorting */
+ QContact h, i, j, k;
+ QContactName n2;
+ n2.setFirstName("xander");
+ n2.setCustomLabel("xander");
+ h.saveDetail(&n2);
+ n2.setFirstName("Xander");
+ n2.setCustomLabel("Xander");
+ i.saveDetail(&n2);
+ n2.setFirstName("xAnder");
+ n2.setCustomLabel("xAnder");
+ j.saveDetail(&n2);
+ n2.setFirstName("Yarrow");
+ n2.setCustomLabel("Yarrow");
+ k.saveDetail(&n2);
+
+ // XXX add äaut; or âum; etc to test those sort orders
+ h = cm->compatibleContact(h);
+ i = cm->compatibleContact(i);
+ j = cm->compatibleContact(j);
+ k = cm->compatibleContact(k);
+ successfulSave = cm->saveContact(&h);
+ Q_ASSERT(successfulSave);
+ successfulSave = cm->saveContact(&i);
+ Q_ASSERT(successfulSave);
+ successfulSave = cm->saveContact(&j);
+ Q_ASSERT(successfulSave);
+ successfulSave = cm->saveContact(&k);
+ Q_ASSERT(successfulSave);
+
/* Ensure the last modified times are different */
QTest::qSleep(napTime);
QContactName modifiedName = c.detail(QContactName::DefinitionName);
@@ -2935,6 +2978,10 @@
QTest::qSleep(napTime);
/* Add our newly saved contacts to our internal list of added contacts */
+ contactsAddedToManagers.insert(cm, k.id().localId());
+ contactsAddedToManagers.insert(cm, j.id().localId());
+ contactsAddedToManagers.insert(cm, i.id().localId());
+ contactsAddedToManagers.insert(cm, h.id().localId());
contactsAddedToManagers.insert(cm, g.id().localId());
contactsAddedToManagers.insert(cm, f.id().localId());
contactsAddedToManagers.insert(cm, e.id().localId());
@@ -2951,6 +2998,10 @@
e = cm->contact(e.id().localId());
f = cm->contact(f.id().localId());
g = cm->contact(g.id().localId());
+ h = cm->contact(h.id().localId());
+ i = cm->contact(i.id().localId());
+ j = cm->contact(j.id().localId());
+ k = cm->contact(k.id().localId());
QList<QContactLocalId> list;
if (!a.isEmpty())
@@ -2967,6 +3018,14 @@
list << f.id().localId();
if (!g.isEmpty())
list << g.id().localId();
+ if (!h.isEmpty())
+ list << h.id().localId();
+ if (!i.isEmpty())
+ list << i.id().localId();
+ if (!j.isEmpty())
+ list << j.id().localId();
+ if (!k.isEmpty())
+ list << k.id().localId();
return list;
}