qtmobility/plugins/contacts/symbian/tsrc/tst_qcontactmanagersymbian/tst_qcontactmanagersymbian.cpp
changeset 8 71781823f776
parent 5 453da2cfceef
child 11 06b8e2af4411
--- a/qtmobility/plugins/contacts/symbian/tsrc/tst_qcontactmanagersymbian/tst_qcontactmanagersymbian.cpp	Fri May 14 16:41:33 2010 +0300
+++ b/qtmobility/plugins/contacts/symbian/tsrc/tst_qcontactmanagersymbian/tst_qcontactmanagersymbian.cpp	Thu May 27 13:42:11 2010 +0300
@@ -68,11 +68,13 @@
     QTRY_COMPARE(spyContactsRemoved.count(), contactsRemoved); \
     QTRY_COMPARE(spyRelationshipsAdded.count(), relationshipsAdded); \
     QTRY_COMPARE(spyRelationshipsRemoved.count(), relationshipsRemoved); \
+    QTRY_COMPARE(spySelfContactIdChanged.count(), selfContactIdChanged); \
     QTRY_COMPARE(spyContactsAdded2.count(), contactsAdded); \
     QTRY_COMPARE(spyContactsChanged2.count(), contactsChanged); \
     QTRY_COMPARE(spyContactsRemoved2.count(), contactsRemoved); \
     QTRY_COMPARE(spyRelationshipsAdded2.count(), relationshipsAdded); \
-    QTRY_COMPARE(spyRelationshipsRemoved2.count(), relationshipsRemoved);
+    QTRY_COMPARE(spyRelationshipsRemoved2.count(), relationshipsRemoved); \
+    QTRY_COMPARE(spySelfContactIdChanged2.count(), selfContactIdChanged);
 
 //TESTED_CLASS=
 //TESTED_FILES=
@@ -107,6 +109,7 @@
     void ringTone();
     void displayLabel_data();
     void displayLabel();
+    void timestamp();
     void invalidContactItems();
 
 private:
@@ -165,6 +168,7 @@
     int contactsRemoved(0);
     int relationshipsAdded(0);
     int relationshipsRemoved(0);
+    int selfContactIdChanged(0);
     
     // Signal spys for verifying signal emissions
     qRegisterMetaType<QContactLocalId>("QContactLocalId");
@@ -174,11 +178,13 @@
     QSignalSpy spyContactsRemoved(m_cm, SIGNAL(contactsRemoved(QList<QContactLocalId>)));
     QSignalSpy spyRelationshipsAdded(m_cm, SIGNAL(relationshipsAdded(QList<QContactLocalId>)));
     QSignalSpy spyRelationshipsRemoved(m_cm, SIGNAL(relationshipsRemoved(QList<QContactLocalId>)));
+    QSignalSpy spySelfContactIdChanged(m_cm, SIGNAL(selfContactIdChanged(QContactLocalId, QContactLocalId)));
     QSignalSpy spyContactsAdded2(cm2.data(), SIGNAL(contactsAdded(QList<QContactLocalId>)));
     QSignalSpy spyContactsChanged2(cm2.data(), SIGNAL(contactsChanged(QList<QContactLocalId>)));
     QSignalSpy spyContactsRemoved2(cm2.data(), SIGNAL(contactsRemoved(QList<QContactLocalId>)));
     QSignalSpy spyRelationshipsAdded2(cm2.data(), SIGNAL(relationshipsAdded(QList<QContactLocalId>)));
     QSignalSpy spyRelationshipsRemoved2(cm2.data(), SIGNAL(relationshipsRemoved(QList<QContactLocalId>)));
+    QSignalSpy spySelfContactIdChanged2(cm2.data(), SIGNAL(selfContactIdChanged(QContactLocalId, QContactLocalId)));
 
     // create a group
     QContact group = createContact(QContactType::TypeGroup, "Hesketh", "");
@@ -262,6 +268,19 @@
     QVERIFY(m_cm->removeContact(group2.localId()));
     contactsRemoved++;
     QTRY_COMPARE_SIGNAL_COUNTS();
+
+    // Self contact
+    QContact memyself = createContact(QContactType::TypeContact, "Kimi", "Raikkonen");
+    QVERIFY(m_cm->saveContact(&memyself));
+    contactsAdded++;
+    QTRY_COMPARE_SIGNAL_COUNTS();
+    QVERIFY(m_cm->setSelfContactId(memyself.localId()));
+    selfContactIdChanged++;
+    QTRY_COMPARE_SIGNAL_COUNTS();
+    QVERIFY(m_cm->removeContact(memyself.localId()));
+    contactsRemoved++;
+    selfContactIdChanged++;
+    QTRY_COMPARE_SIGNAL_COUNTS();
 }
 
 /*
@@ -535,6 +554,34 @@
     QVERIFY(m_cm->removeContact(contact.localId()));
 }
 
+void tst_QContactManagerSymbian::timestamp()
+{
+    // Save a contact
+    QContact contact = createContact(QContactType::TypeContact, "Jame", "Hunt");
+    QVERIFY(m_cm->saveContact(&contact));
+
+    // Wait a second to make the contact's timestamp a little older
+    QTest::qWait(1001);
+
+    // Modify the contact
+    QContactName name = contact.detail(QContactName::DefinitionName);
+    name.setFirstName("James");
+    contact.saveDetail(&name);
+    QVERIFY(m_cm->saveContact(&contact));
+
+    // Verify
+    QContactTimestamp timestamp = contact.detail(QContactTimestamp::DefinitionName);
+    QDateTime current = QDateTime::currentDateTime();
+    // assume one contact save operation takes less than one second
+    QVERIFY(timestamp.created().secsTo(current) <= 2);
+    QVERIFY(timestamp.created().secsTo(current) >= 1);
+    QVERIFY(timestamp.lastModified().secsTo(current) <= 1);
+    QVERIFY(timestamp.lastModified().secsTo(current) >= 0);
+
+    // Delete the contact
+    QVERIFY(m_cm->removeContact(contact.localId()));
+}
+
 /*
  * Special contact handling test cases that cannot be covered in QtMobility
  * system level test cases.