--- a/qtmobility/plugins/contacts/symbian/tsrc/ut_symbian/ut_cntrelationship.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/symbian/tsrc/ut_symbian/ut_cntrelationship.cpp Mon May 03 13:18:40 2010 +0300
@@ -73,14 +73,15 @@
qRegisterMetaType<QList<QContactLocalId> >("QList<QContactLocalId>");
//create manager
- m_manager = new QContactManager("symbian");
+ QContactManager::Error err;
+ m_manager = new CntSymbianEngine(QMap<QString, QString>(), &err);
//open symbian database
TRAPD(error, m_database = CContactDatabase::OpenL());
QVERIFY(error == KErrNone);
// create relationship
- m_relationship = new CntRelationship(m_database, m_manager->managerUri());
+ m_relationship = new CntRelationship(m_database, m_manager->m_managerUri);
}
@@ -100,8 +101,11 @@
void TestCntRelationship::init()
{
//delete all contacts from the database
- QList<QContactLocalId> contacts = m_manager->contactIds();
- m_manager->removeContacts(&contacts);
+ QContactManager::Error err;
+ QList<QContactLocalId> contacts = m_manager->contactIds(QContactFilter(), QList<QContactSortOrder>(), &err);
+
+ QMap<int, QContactManager::Error> errorMap;
+ m_manager->removeContacts(contacts, &errorMap, &err);
}
void TestCntRelationship::cleanup()
@@ -123,39 +127,39 @@
//save & remove relationships
QList<QContactRelationship> relationships;
relationships.append(relationship);
- QList <QContactManager::Error> errors;
//save relationship
- returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, error);
+ returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error == QContactManager::NotSupportedError);
//remove relationship
- returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, error);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error == QContactManager::NotSupportedError);
//save relationships
- errors = m_relationship->saveRelationships(&affectedContactIds, &relationships, error);
+ QMap<int, QContactManager::Error> errorMap;
+ QVERIFY(!m_relationship->saveRelationships(&affectedContactIds, &relationships, &errorMap, &error));
QVERIFY(affectedContactIds.count() == 0);
- for(int i = 0; i < errors.count(); i++){
- QVERIFY(errors.at(i) == QContactManager::NotSupportedError);
+ foreach (QContactManager::Error err, errorMap) {
+ QVERIFY(err == QContactManager::NotSupportedError);
}
//remove relationships
- errors = m_relationship->removeRelationships(&affectedContactIds, relationships, error);
+ QVERIFY(m_relationship->removeRelationships(&affectedContactIds, relationships, &errorMap, &error));
QVERIFY(affectedContactIds.count() == 0);
- for(int i = 0; i < errors.count(); i++){
- QVERIFY(errors.at(i) == QContactManager::NotSupportedError);
+ foreach (QContactManager::Error err, errorMap) {
+ QVERIFY(err == QContactManager::NotSupportedError);
}
//relationships
QList<QContactRelationship> relationshipList;
QContactId id;
- relationshipList = m_relationship->relationships(QLatin1String("invalid relationship"), id, QContactRelationshipFilter::Either, error);
+ relationshipList = m_relationship->relationships(QLatin1String("invalid relationship"), id, QContactRelationship::Either, &error);
QVERIFY(relationshipList.count() == 0);
QVERIFY(error == QContactManager::NotSupportedError);
}
@@ -168,12 +172,13 @@
//create a group
QContact groupContact;
groupContact.setType(QContactType::TypeGroup);
- m_manager->saveContact(&groupContact);
+ QContactManager::Error err;
+ m_manager->saveContact(&groupContact, &err);
//create a contact
QContact contact;
contact.setType(QContactType::TypeContact);
- m_manager->saveContact(&contact);
+ m_manager->saveContact(&contact, &err);
//create relationship
QContactRelationship relationship;
@@ -185,7 +190,7 @@
bool returnValue(false);
QContactManager::Error error;
QSet<QContactLocalId> affectedContactIds;
- returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, error);
+ returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, &error);
QVERIFY2(returnValue == true, "save");
QVERIFY2(affectedContactIds.count() == 2, "save");
QVERIFY2(affectedContactIds.toList().contains(groupContact.localId()), "save");
@@ -196,39 +201,58 @@
QList<QContactRelationship> relationshipList;
//Retrive group
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationshipFilter::First, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationship::First, &error);
+
QVERIFY2(relationshipList.count() == 1, "group - First");
QVERIFY2(error == QContactManager::NoError, "group - First");
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationshipFilter::Second, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationship::Second, &error);
QVERIFY2(relationshipList.count() == 0, "group - Second");
- QVERIFY2(error == QContactManager::NoError, "group - Second");
+ QVERIFY2(error == QContactManager::DoesNotExistError, "group - Second");
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationshipFilter::Either, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), groupContact.id(), QContactRelationship::Either, &error);
QVERIFY2(relationshipList.count() == 1, "group - Either");
QVERIFY2(error == QContactManager::NoError, "group - Either");
//Retrive contact
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationshipFilter::First, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationship::First, &error);
QVERIFY2(relationshipList.count() == 0, "contact - First");
- QVERIFY2(error == QContactManager::NoError, "contact - First");
+ QVERIFY2(error == QContactManager::DoesNotExistError, "contact - First");
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationshipFilter::Second, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationship::Second, &error);
QVERIFY2(relationshipList.count() == 1, "contact - Second");
QVERIFY2(error == QContactManager::NoError, "contact - Second");
- relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationshipFilter::Either, error);
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), contact.id(), QContactRelationship::Either, &error);
QVERIFY2(relationshipList.count() == 1, "contact - Either");
QVERIFY2(error == QContactManager::NoError, "contact - Either");
+ //Relationship for empty contact -> all relationships are returned
+ relationshipList = m_relationship->relationships(QLatin1String(QContactRelationship::HasMember), QContactId(),
+ QContactRelationship::First, &error);
+ QVERIFY2(relationshipList.count() == 1, "All relationships");
+ QVERIFY2(error == QContactManager::NoError, "All relatiosnships");
//Validate Filter
QList<QContactLocalId> expectedContacts;
expectedContacts += contact.localId();
- QVERIFY(true == validateRelationshipFilter(QContactRelationshipFilter::First, groupContact.id(), expectedContacts));
+ QVERIFY(true == validateRelationshipFilter(QContactRelationship::First, groupContact.id(), expectedContacts));
+
+ QList<QContactLocalId> expectedContacts1;
+ expectedContacts1 += groupContact.localId();
+ expectedContacts1 += contact.localId();
+ QList<QContactLocalId> expectedContacts2;
+ expectedContacts2 += contact.localId();
+ expectedContacts2 += groupContact.localId();
+ QVERIFY(true == (validateRelationshipFilter(QContactRelationship::Either, groupContact.id(), expectedContacts1) ||
+ validateRelationshipFilter(QContactRelationship::Either, groupContact.id(), expectedContacts2)));
+
+ expectedContacts.clear();
+ expectedContacts += groupContact.localId();
+ QVERIFY(true == validateRelationshipFilter(QContactRelationship::Second, contact.id(), expectedContacts));
//remove relationship
- returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, error);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
QVERIFY2(returnValue == true, "remove");
QVERIFY2(affectedContactIds.count() == 2, "remove");
QVERIFY2(affectedContactIds.toList().contains(groupContact.localId()), "remove");
@@ -258,7 +282,8 @@
//create a contact
QContact contact;
contact.setType(QContactType::TypeContact);
- m_manager->saveContact(&contact);
+ QContactManager::Error err;
+ m_manager->saveContact(&contact, &err);
//create relationship
QContactId invalidId;
@@ -271,13 +296,13 @@
bool returnValue(false);
QContactManager::Error error;
QSet<QContactLocalId> affectedContactIds;
- returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, error);
+ returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error != QContactManager::NoError);
//remove relationship
- returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, error);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error != QContactManager::NoError);
@@ -291,7 +316,8 @@
//create a group
QContact groupContact;
groupContact.setType(QContactType::TypeGroup);
- m_manager->saveContact(&groupContact);
+ QContactManager::Error err;
+ m_manager->saveContact(&groupContact, &err);
//create relationship
QContactId invalidId;
@@ -304,13 +330,22 @@
bool returnValue(false);
QContactManager::Error error;
QSet<QContactLocalId> affectedContactIds;
- returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, error);
+ returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, &error);
QVERIFY2(returnValue == false, "save");
QVERIFY2(affectedContactIds.count() == 0, "save");
QVERIFY2(error != QContactManager::NoError, "save");
//remove relationship
- returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, error);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
+ QVERIFY2(returnValue == false, "remove");
+ QVERIFY2(affectedContactIds.count() == 0, "remove");
+ QVERIFY2(error != QContactManager::NoError, "remove");
+
+ //remove relationship: cyclic relantionship
+ relationship.setRelationshipType(QContactRelationship::HasMember);
+ relationship.setFirst(groupContact.id());
+ relationship.setSecond(groupContact.id());
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
QVERIFY2(returnValue == false, "remove");
QVERIFY2(affectedContactIds.count() == 0, "remove");
QVERIFY2(error != QContactManager::NoError, "remove");
@@ -332,32 +367,65 @@
bool returnValue(false);
QContactManager::Error error;
QSet<QContactLocalId> affectedContactIds;
- returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, error);
+ returnValue = m_relationship->saveRelationship(&affectedContactIds, &relationship, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error != QContactManager::NoError);
//remove relationship
- returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, error);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationship, &error);
+ QVERIFY(returnValue == false);
+ QVERIFY(affectedContactIds.count() == 0);
+ QVERIFY(error != QContactManager::NoError);
+
+ //remove relationship: first contact's manager is not the same as cntrelationship's
+ QContactRelationship relationshipDifManagers;
+ QContactId id1;
+ id1.setLocalId(10);
+ id1.setManagerUri("manager1");
+ QContactId id2;
+ id2.setLocalId(15);
+ id2.setManagerUri("manager2");
+ relationshipDifManagers.setRelationshipType(QContactRelationship::HasMember);
+ relationshipDifManagers.setFirst(id1);
+ relationshipDifManagers.setSecond(id2);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationshipDifManagers, &error);
+ QVERIFY(returnValue == false);
+ QVERIFY(affectedContactIds.count() == 0);
+ QVERIFY(error != QContactManager::NoError);
+
+ //remove relationship: second contact's manager is not the same as cntrelationship's
+ QContact contact;
+ contact.setType(QContactType::TypeContact);
+ QContactManager::Error err;
+ m_manager->saveContact(&contact, &err);
+ QContactRelationship relationshipDifManagers2;
+ id2.setLocalId(15);
+ id2.setManagerUri("manager2");
+ relationshipDifManagers2.setRelationshipType(QContactRelationship::HasMember);
+ relationshipDifManagers2.setFirst(contact.id());
+ relationshipDifManagers2.setSecond(id2);
+ returnValue = m_relationship->removeRelationship(&affectedContactIds, relationshipDifManagers2, &error);
QVERIFY(returnValue == false);
QVERIFY(affectedContactIds.count() == 0);
QVERIFY(error != QContactManager::NoError);
}
-bool TestCntRelationship::validateRelationshipFilter(const QContactRelationshipFilter::Role role, const QContactId contactId, const QList<QContactLocalId> expectedContacts)
+bool TestCntRelationship::validateRelationshipFilter(const QContactRelationship::Role role, const QContactId contactId, const QList<QContactLocalId> expectedContacts)
{
QContactRelationshipFilter filter;
filter.setRelationshipType(QContactRelationship::HasMember);
filter.setRelatedContactRole(role);
filter.setRelatedContactId(contactId);
- QList<QContactLocalId> result = m_manager->contactIds(filter);
+ QContactManager::Error err;
+ QList<QContactLocalId> result = m_manager->contactIds(filter, QList<QContactSortOrder>(), &err);
for(int i = 0; i < result.count(); i++)
qDebug() << "result: " << result.at(i);
- for(int i = 0; i < expectedContacts.count(); i++)
- qDebug() << "expectedContacts: " << expectedContacts.at(i);
+ for(int j = 0; j < expectedContacts.count(); j++)
+ qDebug() << "expectedContacts: " << expectedContacts.at(j);
return (result == expectedContacts);
}