diff -r 2b40d63a9c3d -r 90517678cc4f qtmobility/plugins/contacts/symbian/tsrc/ut_symbian/ut_cntrelationship.cpp --- 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"); //create manager - m_manager = new QContactManager("symbian"); + QContactManager::Error err; + m_manager = new CntSymbianEngine(QMap(), &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 contacts = m_manager->contactIds(); - m_manager->removeContacts(&contacts); + QContactManager::Error err; + QList contacts = m_manager->contactIds(QContactFilter(), QList(), &err); + + QMap errorMap; + m_manager->removeContacts(contacts, &errorMap, &err); } void TestCntRelationship::cleanup() @@ -123,39 +127,39 @@ //save & remove relationships QList relationships; relationships.append(relationship); - QList 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 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 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 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 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 expectedContacts; expectedContacts += contact.localId(); - QVERIFY(true == validateRelationshipFilter(QContactRelationshipFilter::First, groupContact.id(), expectedContacts)); + QVERIFY(true == validateRelationshipFilter(QContactRelationship::First, groupContact.id(), expectedContacts)); + + QList expectedContacts1; + expectedContacts1 += groupContact.localId(); + expectedContacts1 += contact.localId(); + QList 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 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 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 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 expectedContacts) +bool TestCntRelationship::validateRelationshipFilter(const QContactRelationship::Role role, const QContactId contactId, const QList expectedContacts) { QContactRelationshipFilter filter; filter.setRelationshipType(QContactRelationship::HasMember); filter.setRelatedContactRole(role); filter.setRelatedContactId(contactId); - QList result = m_manager->contactIds(filter); + QContactManager::Error err; + QList result = m_manager->contactIds(filter, QList(), &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); }