qtmobility/plugins/contacts/symbian/tsrc/tst_qcontactmanagersymbian/tst_qcontactmanagersymbian.cpp
--- 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.