--- a/qtmobility/tests/auto/qcontact/tst_qcontact.cpp Mon May 03 13:18:40 2010 +0300
+++ b/qtmobility/tests/auto/qcontact/tst_qcontact.cpp Fri May 14 16:41:33 2010 +0300
@@ -43,7 +43,6 @@
#include "qtcontacts.h"
#include "qcontactid.h"
-#include "qcontactmanagerdataholder.h" //QContactManagerDataHolder
#include <QSet>
@@ -51,12 +50,6 @@
//TESTED_FILES=
QTM_USE_NAMESPACE
-class HackEngine : public QContactManagerEngine
-{
- public:
- static void setRels(QContact* contact, const QList<QContactRelationship>& rels) {QContactManagerEngine::setContactRelationships(contact, rels);}
-};
-
class tst_QContact: public QObject
{
Q_OBJECT
@@ -64,13 +57,9 @@
public:
tst_QContact();
virtual ~tst_QContact();
-private:
- QContactManagerDataHolder managerDataHolder;
private slots:
void details();
- void actions();
- void preferences();
void relationships();
void displayName();
void type();
@@ -102,6 +91,10 @@
QVERIFY(c.details<QContactPhoneNumber>().count() == 0);
QVERIFY(c.detail(QContactPhoneNumber::DefinitionName).isEmpty());
QVERIFY(c.detail<QContactPhoneNumber>().isEmpty());
+ QVERIFY(c.details(QContactPhoneNumber::DefinitionName.latin1()).count() == 0);
+ QVERIFY(c.detail(QContactPhoneNumber::DefinitionName.latin1()).isEmpty());
+ QVERIFY(c.details(QLatin1String(QContactPhoneNumber::DefinitionName)).count() == 0);
+ QVERIFY(c.detail(QLatin1String(QContactPhoneNumber::DefinitionName)).isEmpty());
// Test retrieving the first detail (the display label)
QList<QContactDetail> details = c.details(QString());
@@ -125,9 +118,23 @@
QVERIFY(c.isEmpty() == false);
QVERIFY(c.details().count() == 3);
+
QVERIFY(c.details(QContactPhoneNumber::DefinitionName).count() == 1);
QVERIFY(c.details(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldNumber, QString("12345678")).count() == 1);
QVERIFY(c.details(QContactPhoneNumber::DefinitionName, QString(), QString("12345678")).count() == c.details(QContactPhoneNumber::DefinitionName).count());
+
+ QVERIFY(c.details(QLatin1String(QContactPhoneNumber::DefinitionName)).count() == 1);
+ QVERIFY(c.details(QLatin1String(QContactPhoneNumber::DefinitionName), QContactPhoneNumber::FieldNumber, QString("12345678")).count() == 1);
+ QVERIFY(c.details(QLatin1String(QContactPhoneNumber::DefinitionName), QString(), QString("12345678")).count() == c.details(QContactPhoneNumber::DefinitionName).count());
+
+ QVERIFY(c.details(QContactPhoneNumber::DefinitionName.latin1()).count() == 1);
+ QVERIFY(c.details(QContactPhoneNumber::DefinitionName.latin1(), QContactPhoneNumber::FieldNumber, QString("12345678")).count() == 1);
+ QVERIFY(c.details(QContactPhoneNumber::DefinitionName.latin1(), QString(), QString("12345678")).count() == c.details(QContactPhoneNumber::DefinitionName).count());
+
+ QVERIFY(c.details<QContactPhoneNumber>(QContactPhoneNumber::FieldNumber, QString("12345678")).count() == 1);
+ QVERIFY(c.details<QContactPhoneNumber>(QContactPhoneNumber::FieldNumber.latin1(), QString("12345678")).count() == 1);
+ QVERIFY(c.details<QContactPhoneNumber>(QLatin1String(QContactPhoneNumber::FieldNumber), QString("12345678")).count() == 1);
+
QVERIFY(c.details<QContactPhoneNumber>().count() == 1);
QVERIFY(!c.detail(QContactPhoneNumber::DefinitionName).isEmpty());
QVERIFY(!c.detail<QContactPhoneNumber>().isEmpty());
@@ -199,15 +206,6 @@
QCOMPARE(c.detail<QContactPhoneNumber>(), p);
QVERIFY(c.removeDetail(&p2));
- // now try removing a detail for which we've set a preference
- QContactEmailAddress pref;
- pref.setEmailAddress("test@test");
- c.saveDetail(&pref);
- c.setPreferredDetail("SendEmail", pref);
- QVERIFY(c.isPreferredDetail(QString(), pref));
- QVERIFY(c.removeDetail(&pref));
- QVERIFY(!c.isPreferredDetail(QString(), pref));
-
// Now try adding a detail to multiple contacts
QContact c2;
@@ -363,193 +361,6 @@
QCOMPARE(c.id(), oldId); // id shouldn't change.
}
-void tst_QContact::actions()
-{
- QContact c; // empty contact.
- QContact c2; // contact with email saved.
- QContactEmailAddress e;
- e.setEmailAddress("test@nokia.com");
- c2.saveDetail(&e);
-
-
- // XXX this is here to make the bulk
- // of this test pass. The first set
- // of tests expect to not find plugins.
- QString path = QApplication::applicationDirPath() + "/dummyplugin";
- QApplication::addLibraryPath(path);
- path = QApplication::applicationDirPath() + "/dummyplugin/plugins";
- QApplication::addLibraryPath(path);
- path = QApplication::applicationDirPath() + "/dummyplugin/plugins/contacts";
- QApplication::addLibraryPath(path);
-
- // Prior to plugin loading:
- // first, the empty contact
- QList<QContactActionDescriptor> availableActions = c.availableActions(QString());
- QVERIFY(availableActions.isEmpty());
- QContactDetail d = c.detailWithAction("SendEmail");
- QVERIFY(d.isEmpty());
- QList<QContactDetail> dets = c.detailsWithAction("SendEmail");
- QVERIFY(dets.isEmpty());
- // then, the email contact
- availableActions = c2.availableActions(QString());
- QEXPECT_FAIL("", "Plugins are only loaded once", Continue);
- QVERIFY(availableActions.isEmpty());
- d = c2.detailWithAction("SendEmail");
- QEXPECT_FAIL("", "Plugins are only loaded once", Continue);
- QVERIFY(d.isEmpty());
- dets = c2.detailsWithAction("SendEmail");
- QEXPECT_FAIL("", "Plugins are only loaded once", Continue);
- QVERIFY(dets.isEmpty());
-
- // set the correct path to look for plugins and load them
-// QString path = QApplication::applicationDirPath() + "/dummyplugin/plugins/";
-// QApplication::addLibraryPath(path);
-
- // available actions - should be one there now.
- // empty contact
- availableActions = c.availableActions(QString());
- QVERIFY(availableActions.isEmpty());
- // contact with email
- availableActions = c2.availableActions(QString());
- QVERIFY(!availableActions.isEmpty()); // should contain SendEmail
-
- // try various combinations of version and name
- availableActions = c2.availableActions();
- QVERIFY(!availableActions.isEmpty()); // should contain SendEmail
- availableActions = c2.availableActions("Test");
- QVERIFY(!availableActions.isEmpty()); // should contain SendEmail
- availableActions = c2.availableActions("Test", 1);
- QVERIFY(!availableActions.isEmpty()); // should contain SendEmail
- availableActions = c2.availableActions("Test", 5);
- QVERIFY(availableActions.isEmpty()); // should NOT contain SendEmail
- availableActions = c2.availableActions(QString(), 1);
- QVERIFY(!availableActions.isEmpty()); // should contain SendEmail
-
- // detail with action:
- // empty contact
- d = c.detailWithAction("SendEmail");
- QVERIFY(d.isEmpty());
- d = c.detailWithAction("NonexistentAction");
- QVERIFY(d.isEmpty());
- d = c.detailWithAction(QString());
- QVERIFY(d.isEmpty());
- // contact with email
- d = c2.detailWithAction("SendEmail");
- QVERIFY(d == e);
- d = c2.detailWithAction("NonexistentAction");
- QVERIFY(d.isEmpty());
- d = c2.detailWithAction(QString());
- QVERIFY(d.isEmpty());
-
- // details with action:
- // empty contact
- dets = c.detailsWithAction("SendEmail");
- QVERIFY(dets.isEmpty());
- dets = c.detailsWithAction("NonexistentAction");
- QVERIFY(dets.isEmpty());
- dets = c.detailsWithAction(QString());
- QVERIFY(dets.isEmpty());
- // contact with email
- dets = c2.detailsWithAction("SendEmail");
- QVERIFY(dets.contains(e));
- dets = c2.detailsWithAction("NonexistentAction");
- QVERIFY(dets.isEmpty());
- dets = c2.detailsWithAction(QString());
- QVERIFY(dets.isEmpty());
-
- // remove the library path.
- QApplication::removeLibraryPath(path);
-}
-
-void tst_QContact::preferences()
-{
- QContact c;
-
- // test first set
- QContactDetail det("TestId");
- det.setValue("test", QVariant("test1"));
- c.saveDetail(&det);
- QCOMPARE(c.isPreferredDetail("testAction", det), false);
-
- QCOMPARE(c.setPreferredDetail("testAction", det), true);
-
- QCOMPARE(c.isPreferredDetail("testAction", det), true);
-
- QCOMPARE(c.isPreferredDetail(QString(), det), true);
-
- QCOMPARE(c.preferredDetail("testAction"), det);
-
- // test replacement
- QContactDetail det2("TestId");
- det2.setValue("test", QVariant("test2"));
- c.saveDetail(&det2);
- QCOMPARE(c.isPreferredDetail("testAction", det2), false);
-
- QCOMPARE(c.setPreferredDetail("testAction", det2), true);
-
- QCOMPARE(c.isPreferredDetail("testAction", det2), true);
-
- QCOMPARE(c.isPreferredDetail("testAction", det), false);
-
- QCOMPARE(c.preferredDetail("testAction"), det2);
-
- // test for detail that is not part of the contact
- QContactDetail det3("TestId");
- det3.setValue("test", QVariant("test3"));
- QCOMPARE(c.setPreferredDetail("testAction", det3), false);
-
- QCOMPARE(c.preferredDetail("testAction"), det2); // shouldn't have changed.
-
- // test invalid set
- QCOMPARE(c.setPreferredDetail(QString(), det3), false);
-
- QCOMPARE(c.setPreferredDetail(QString(), QContactDetail()), false);
-
- QCOMPARE(c.setPreferredDetail("testAction", QContactDetail()), false);
-
- QCOMPARE(c.preferredDetail("testAction"), det2); // shouldn't have changed.
-
- // test invalid query
- QContactDetail det4;
- det4.setValue("test", QVariant("test4"));
- c.saveDetail(&det4);
- QCOMPARE(c.isPreferredDetail(QString(), QContactDetail()), false);
-
- QCOMPARE(c.isPreferredDetail(QString(), det4), false); // valid detail, but no pref set.
-
- QCOMPARE(c.isPreferredDetail("testAction", QContactDetail()), false);
-
- // test retrieving preferred details
- QContactDetail pd = c.preferredDetail(QString());
- QVERIFY(pd.isEmpty());
- pd = c.preferredDetail("testAction");
- QVERIFY(pd == det2); // shouldn't have changed.
-
- // test for preference for action that hasn't been added
- QVERIFY(c.preferredDetail("NonexistentAction").isEmpty());
-
- // Remove a non preferred detail
- QContactDetail det2copy("TestId");
- det2copy.setValue("test", QVariant("test2"));
- QVERIFY(c.saveDetail(&det2copy));
-
- QVERIFY(c.isPreferredDetail("testAction", det2) == true);
- QVERIFY(c.isPreferredDetail("testAction", det2copy) == false);
- QVERIFY(c.removeDetail(&det2copy));
- QVERIFY(c.isPreferredDetail("testAction", det2) == true);
- QVERIFY(c.isPreferredDetail("testAction", det2copy) == false);
-
- // Add it again
- QVERIFY(c.saveDetail(&det2copy));
- QVERIFY(c.isPreferredDetail("testAction", det2) == true);
- QVERIFY(c.isPreferredDetail("testAction", det2copy) == false);
-
- // Remove the preferred detail (the copy should not become preferred)
- QVERIFY(c.removeDetail(&det2));
- QVERIFY(c.isPreferredDetail("testAction", det2) == false);
- QVERIFY(c.isPreferredDetail("testAction", det2copy) == false);
-}
-
void tst_QContact::relationships()
{
QContact c;
@@ -589,11 +400,20 @@
QVERIFY(d.saveDetail(&name));
/*
- * The display label is not updated until you save the contact!
+ * The display label is not updated until you save the contact or call synthCDL
*/
- QString synth = cm.synthesizedDisplayLabel(d);
QVERIFY(d.displayLabel().isEmpty());
- //QVERIFY(synth == name.customLabel()); // XXX Perhaps not guaranteed, depends on backend synth rules.
+
+ cm.synthesizeContactDisplayLabel(&d);
+ QVERIFY(d.displayLabel() == "Wesley");
+
+ name.setCustomLabel("Bosley");
+ d.saveDetail(&name);
+
+ QVERIFY(d.displayLabel() == "Wesley");
+
+ cm.synthesizeContactDisplayLabel(&d);
+ QVERIFY(d.displayLabel() == "Bosley");
/* Remove the detail via removeDetail */
QContactDisplayLabel old;
@@ -601,9 +421,6 @@
QVERIFY(!d.removeDetail(&old)); // should fail.
QVERIFY(d.isEmpty() == false);
QVERIFY(d.details().count() == 3); // it should not be removed!
-
- /* Make sure we go back to the old synth version */
- QVERIFY(d.displayLabel().isEmpty());
}
void tst_QContact::type()
@@ -707,9 +524,8 @@
QContact contact5; // preferred details and relationships shouldn't affect the hash
contact5.setId(id);
contact5.saveDetail(&detail1);
- contact5.setPreferredDetail("action", detail1);
QContactRelationship rel;
- HackEngine::setRels(&contact5, QList<QContactRelationship>() << rel);
+ QContactManagerEngine::setContactRelationships(&contact5, QList<QContactRelationship>() << rel);
QVERIFY(qHash(contact1) == qHash(contact2));
QVERIFY(qHash(contact1) != qHash(contact3));
QVERIFY(qHash(contact1) != qHash(contact4));