qtmobility/tests/auto/qcontact/tst_qcontact.cpp
changeset 5 453da2cfceef
parent 4 90517678cc4f
child 11 06b8e2af4411
--- 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));