--- a/qtmobility/tests/auto/qcontact/tst_qcontact.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/tests/auto/qcontact/tst_qcontact.cpp Mon May 03 13:18:40 2010 +0300
@@ -42,12 +42,21 @@
#include <QtTest/QtTest>
#include "qtcontacts.h"
+#include "qcontactid.h"
#include "qcontactmanagerdataholder.h" //QContactManagerDataHolder
+#include <QSet>
+
//TESTED_CLASS=
//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
@@ -66,6 +75,9 @@
void displayName();
void type();
void emptiness();
+ void idLessThan();
+ void idHash();
+ void hash();
void traits();
void idTraits();
void localIdTraits();
@@ -550,7 +562,7 @@
related = c.relatedContacts(QContactRelationship::HasMember);
QVERIFY(related.isEmpty());
- related = c.relatedContacts(QContactRelationship::HasMember, QContactRelationshipFilter::First);
+ related = c.relatedContacts(QContactRelationship::HasMember, QContactRelationship::First);
QVERIFY(related.isEmpty());
QList<QContactRelationship> relationshipList = c.relationships();
@@ -558,27 +570,6 @@
relationshipList = c.relationships(QContactRelationship::HasMember);
QVERIFY(relationshipList.isEmpty());
-
- // now test that we can change the order of relationships regardless of the number of relationships
- QList<QContactRelationship> orderedList = c.relationshipOrder();
- QVERIFY(orderedList == relationshipList); // should be the same by default
-
- QContactRelationship dummyRel;
- QContactId firstId;
- firstId.setManagerUri("test-nokia");
- firstId.setLocalId(QContactLocalId(5));
- QContactId secondId;
- secondId.setManagerUri("test-nokia-2");
- secondId.setLocalId(QContactLocalId(5));
- dummyRel.setFirst(firstId);
- dummyRel.setSecond(secondId);
- dummyRel.setRelationshipType(QContactRelationship::HasAssistant);
-
- QList<QContactRelationship> reorderedList;
- reorderedList.append(dummyRel);
- c.setRelationshipOrder(reorderedList);
-
- QVERIFY(c.relationshipOrder() == reorderedList);
}
void tst_QContact::displayName()
@@ -645,6 +636,86 @@
QVERIFY(c.isEmpty() == true); // type doesn't affect emptiness
}
+void tst_QContact::idLessThan()
+{
+ QContactId id1;
+ id1.setManagerUri("a");
+ id1.setLocalId(1);
+ QContactId id2;
+ id2.setManagerUri("a");
+ id2.setLocalId(1);
+ QVERIFY(!(id1 < id2));
+ QVERIFY(!(id2 < id1));
+ QContactId id3;
+ id3.setManagerUri("a");
+ id3.setLocalId(2);
+ QContactId id4;
+ id4.setManagerUri("b");
+ id4.setLocalId(1);
+ QContactId id5; // no URI
+ id5.setLocalId(2);
+ QVERIFY(id1 < id3);
+ QVERIFY(!(id3 < id1));
+ QVERIFY(id1 < id4);
+ QVERIFY(!(id4 < id1));
+ QVERIFY(id3 < id4);
+ QVERIFY(!(id4 < id3));
+ QVERIFY(id5 < id1);
+ QVERIFY(!(id1 < id5));
+}
+
+void tst_QContact::idHash()
+{
+ QContactId id1;
+ id1.setManagerUri("a");
+ id1.setLocalId(1);
+ QContactId id2;
+ id2.setManagerUri("a");
+ id2.setLocalId(1);
+ QContactId id3;
+ id3.setManagerUri("b");
+ id3.setLocalId(1);
+ QVERIFY(qHash(id1) == qHash(id2));
+ QVERIFY(qHash(id1) != qHash(id3));
+ QSet<QContactId> set;
+ set.insert(id1);
+ set.insert(id2);
+ set.insert(id3);
+ QCOMPARE(set.size(), 2);
+}
+
+void tst_QContact::hash()
+{
+ QContactId id;
+ id.setManagerUri("a");
+ id.setLocalId(1);
+ QContact contact1;
+ contact1.setId(id);
+ QContactDetail detail1("definition");
+ detail1.setValue("key", "value");
+ contact1.saveDetail(&detail1);
+ QContact contact2;
+ contact2.setId(id);
+ contact2.saveDetail(&detail1);
+ QContact contact3;
+ contact3.setId(id);
+ QContactDetail detail3("definition");
+ detail3.setValue("key", "another value");
+ contact3.saveDetail(&detail3);
+ QContact contact4; // no details
+ contact4.setId(id);
+ 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);
+ QVERIFY(qHash(contact1) == qHash(contact2));
+ QVERIFY(qHash(contact1) != qHash(contact3));
+ QVERIFY(qHash(contact1) != qHash(contact4));
+ QVERIFY(qHash(contact1) == qHash(contact5));
+}
+
void tst_QContact::traits()
{
QVERIFY(sizeof(QContact) == sizeof(void *));